理解微服务--软件结构演进

一、单体架构

理解微服务--软件结构演进_第1张图片

特点:

    1.所有功能集成在一个工程中

    2.部署方式:所有功能打成一个war包部署到服务器

    3.应用和数据库分开部署

    4.通过部署应用集群和数据库集群来提高系统性能

优点:

    1.架构简单,前期开发简单、成本低, 项目周期短,适合小型项目

缺点:

    1.全部功能集中在一个工程,对于大型项目不利于开发、扩展、维护

    2.想要提升性能只能通过增加服务器,成本太高

    3.技术栈受限(一般一个项目只能使用一种语言)


二、垂直架构

理解微服务--软件结构演进_第2张图片

特点:

    1.将一个大项目拆分成多个小的单体项目

    2.项目之间存在一些功能的重复,比如上图中都有用户管理

    3.项目之间的接口一般为数据同步(数据库之间同步,或应用通过网络接口同步)

优点:

    1.项目架构简单,

    2.通过垂直拆分,原来的单体项目不会无限扩大

    3.不同项目可以采用不同的技术

缺点:同单体架构

三、SOA架构

理解微服务--软件结构演进_第3张图片

特点:

    1.将重复的功能抽取成组件,以服务的方式给各个系统提供服务

    2.各个系统与服务之间通过webservice、rpc等方式通信

    3.ESB企业服务总线作为系统和服务之间的桥梁

优点:

    1.将重复的功能抽取为服务,提高开发效率,提高系统的客重用性、可维护性

    2.针对不同服务的特性指定不同的优化方案,即压力较大的服务可以多部署服务器

缺点:

    1.系统和服务的界限模糊,不利于开发和维护

    2.服务的接口协议不固定,种类繁多,不利于系统维护

    3.抽取的服务的粒度太大,系统和服务之间耦合度高


四、微服务架构


理解微服务--软件结构演进_第4张图片

特点:

    1.将系统服务曾完全独立,并将服务曾抽取成微服务

    2.微服务遵循单一原则

    3.微服务之间采用RESTful等轻量协议传输

优点:

    1.服务拆分粒度更细,有利于资源重复利用,提高开发效率

    2.微服务架构去中心化,服务见采用RESTful等轻量协议通信

    3.迭代周期更短

缺点:

    1.微服务过多,服务治理成本高,不利于维护

    2.分布式开发技术成本高(分布式事务等)

你可能感兴趣的:(理解微服务--软件结构演进)