springCloud入门学习(一):认识微服务架构


一个归档包包含了所有的功能的应用程序,这样的应用系统被称为“单体应用”。

单体应用在开发出去具有易部署,易测试的优点,但随着需求的不断增多,代码量的不断上升,单体应用的缺点也随着暴露出来:

(1)复杂性高:整个项目包含的模块非常多,各个模块之间的边界模糊,依赖关系不清楚。新增功能或修改功能时很有可能带来隐患。

(2)部署频率低:修改一个模块需要部署真个项目;

(3)可靠性差:其中一个模块的错误例如死循环等导致整个项目的崩溃。

微服务是一种架构风格,是一种将一个单一应用系统开发为一小组小型服务的方法,每一个服务都运行在自己的进程中,服务间采用轻量级通信机制(例如HTTP)。每个服务可以使用不同的开发语言,可以根据功能特点配置不同的硬件。

(1)每个服务单独运行在自己的进程中,

(2)一系列独立的服务共同构建整个系统;

(3)每个服务业务独立;

(4)服务之间通过轻量级通信机制进行通信;

(5)可以使用不同的开发语言和数据存储结构。


以电影票业务为例,在单体应用中,一个大的系统中包含很多模块,其中包括用户模块和电影模块。在微服务架构中,将用户模块和电影模块分别独立成两个服务:用户服务和电影服务,当两个服务之间需要通信时,可以通过HTTP协议进行数据交流。


微服务虽然讲业务进行了拆分,使业务逻辑更加明确,但依然存在很多令人头疼的缺点:

(1)分布式固有的复杂性:网络延迟,系统容错,分布式事务等问题;

(2)重复劳动:可能存在这种情况,多个功能都需要使用同一个功能,但该功能还没有达到要分解成一个微服务的程度。


(1)单一职责:每个服务只负责单独的功能,

(2)服务自治:与其他服务高度解耦;

(3)轻量级通信机制;

(4)微服务粒

springCloud入门学习(一):认识微服务架构