【⽼猿说架构】常见的架构风格
⼤家好,我是⽼猿,今天继续专题【⽼猿说架构】,⽂章仅代表作者观点,如有不同观点论述欢迎拍砖交流。好,废话不说,直接进⼊主题。
架构风格是⼀种架构设计理念或思想,跟建筑风格类似,如欧式、美式、中国式和现代等风格建筑,代表⼀种建筑设计理念或思想,从架构定义看很容易理解架构风格即是构件粒度+交互模式,⽽架构模式是架构风格的具体解决⽅案,每种架构风格都可以有不同的架构模式组合实现,那么⽼猿跟⼤伙聊聊如下5种常见的架构风格。
1:单体系统架构
构件粒度:⾯向应⽤级,即系统级别
构件交互模式:整体应⽤集部署内部交互
特点:
1)所有业务功能集中在1个系统中,业务模块实现强耦合低内聚。
2)应⽤服务与数据库存储层分开部署。
3)集部署应⽤和数据库服务提⾼系统⽀撑的性能。
优点:
1)架构简单,前期开发周期短,成本低,适⽤于简单⽽⼩的项⽬开发。
缺点:
1)全部业务功能集中在1个系统中,难于开发、扩展及维护,不适⽤⼤型项⽬。
2)系统性能扩展只能通过扩展集结点,成本⾼、很快就到系统容量瓶颈。
2:垂直架构
构件粒度:⾯向⼦系统级别
构件交互模式:⼦系统分开集部署,⼦系统之间数据同步并分布式交互
特点:
1)以单体架构系统进⾏垂直拆分成⼀个⼀个⼦系统构件构成。
2)⼦系统之间存在数据冗余,耦合性较⼤
3)⼦系统之间接各种⽅式数据同步满⾜业务需要。
优点:
1)系统架构简单,前期开发成本低,周期短,适⽤于中⼩型项⽬。
2)通过垂直拆分,原来的单体不⾄于成为⼀个巨⽯系统。
缺点:
1)跟单体架构类似,全部业务功能集中在⼏个⼦系统中,同样难于开发、扩展及维护,不适⽤⼤型项⽬。
2)跟单体架构类似,系统性能扩展只能通过扩展集结点,成本⾼、很快系统容量瓶颈。
3:SOA架构
构件粒度:⾯向功能组件服务,即组件级别
构件交互模式:组件服务分布式交互为主
特点:
1)基于SOA的架构思想将重复公⽤的功能抽取为组件,以组件服务的⽅式给各⼦系统提供服务。
2)各组件服务之间采⽤webservice或rpc等⽅式进⾏通信交互。
3)ESB企业服务总线作为⼦系统与⼦系统之间通信的桥梁。
优点:
1)将重复共性功能抽取为组件服务,提⾼开发效率和复⽤性、可维护性。
2)可针对不同组件服务特点制定集及优化⽅案。
3)采⽤ESB减少系统中的接⼝耦合。
缺点:常用微服务架构
1)系统与组件服务的界限模糊,不利于开发及维护。
2)使⽤了ESB其服务接⼝协议不固定且种类繁多难于维护。
3)抽取服务的粒度过⼤,系统与服务之间耦合度很⾼。
4:微服务架构
构件粒度:⾯向更细粒度的服务,即⼩业务功能服务级别
构件交互模式:业务功能服务抽象实现成⼀个个⼩服务进⾏分布式交互
特点:
1)将系统服务层完全独⽴出来,并将业务服务抽象实现为⼀个⼀个的微服务。
2)微服务遵循单⼀原则。
3)微服务之间交互采⽤RESTful等轻量协议通信传输。
如Spring Cloud这种全家桶就是微服务架构的⼀个具体实现的技术框架。
优点:
1)业务服务拆分粒度更细,有利于资源重复利⽤,提⾼开发效率。
2)可更加灵活为每个服务制定不容优化⽅案,提⾼系统可维护性。
3)微服务架构采⽤去中⼼化思想,服务之间采⽤RESTful等轻量协议通信交互⽐ESB更轻量。
4)适⽤于复杂的互联⽹中⼤型项⽬,项⽬版本迭代周期更短。
5)各服务可采⽤不同技术栈实现。
缺点:
1)微服务拆分过多使服务治理成本⾼,系统维护成本⾼。
2)系统开发的技术成本⾼如服务熔断降级、流控、分布式事务等,对团队开发挑战⼤。
5:Servic e Mesh架构
5:Ser vic
构件粒度:⾯向业务功能服务和⾮功能服务(即系统控制服务)的彻底解耦拆分
构件交互模式:业务功能服务和⾮业务功能两个不同解耦拆分并实现交互
他的思想强调业务逻辑与服务治理逻辑的分层及解耦,在业务逻辑和基础实施服务治理间划分出清晰的边界。Service Mesh架构下,服务间通信通过⽹格进⾏代理,所有架构模式下解耦和复⽤最彻底的,不仅强调业务逻辑的解耦和复⽤,更强调基础设施的解耦和复⽤。他的本质微服务架构下服务治理平台,
包含服务治理的所有⽅⾯,⽐如Spring Cloud这种全家桶也能实现服务治理,但是它的实现与业务逻辑耦合在⼀起,部署、运维同时耦合了微服务本⾝的操作,这样带来开发⼈员开发、测试、回归、发布的都是巨⼤重复⼯作。Service Mesh通过将与业务逻辑⽆关的服务治理逻辑下沉到基础设施,让业务开发⼈员与基础技术开发⼈员关注点分离,各司其职,⼤⼤提升了研发效能。业务开发⼈员可以更关注对业务的理解、建模,他们可以集中精⼒在业务开发实现上。⽬前⽐较流⾏的Service Mesh架构实现基于云原⽣的Istio。
⽂/阿青,写代码写诗写职场的程序猿⼤叔,倾⼒原创简单实⽤的硬⼲货,转载此⽂请联系阿青。

版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。