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

一、单体应用

1、概念

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

2、优缺点

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

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

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

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

二、微服务

1、概念

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

2、特点

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

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

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

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

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


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


3、缺点

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

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

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


4、微服务设计原则

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

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

(3)轻量级通信机制;

(4)微服务粒

猜你喜欢

转载自blog.51cto.com/13593129/2393196