2023-02-06 11:21

单体架构、垂直架构、分布式SOA架构、微服务架构的区别

王姐姐

JavaEE

(579)

(0)

收藏

1.单体架构

1.1优点

小项目开发快 成本低

架构简单

易于测试

易于部署

1.2缺点 

大项目模块耦合严重,不易开发,维护,沟通成本高

新增业务困难

核心业务与边缘业务混合在一块,出现问题互相影响

20210424154025489.png

2.垂直架构

根据业务把项目垂直切割成多个项目,因此这种架构称之为垂直架构。

2.1垂直架构的优点

系统拆分实现了流量分担,解决了并发问题

可以针对不同的模块进行优化

方便水平扩展,负载均衡,容错率提高

系统间相互独立,互不影响,新的业务迭代时更加高效

2.2垂直架构的缺点

服务之间相互调用,如果某个服务的端口或者IP地址发生改变。调用的系统得手动变化

搭建集群之后,实现负载均衡比较复杂。比如:内网负载,在迁移得时候会影响调用方的路由,导致线上故障

服务之间调用方式不统一,基于httpclient,webservice,接口协议不统一

服务监控不到位

20210424154228991.png

3.分布式架构(SOA)

3.1分层

分层:按照业务性质分层,每一层要求简单和容易维护

应用层(展示层):距离用户最近的一层也称为接入层,可以使用Tomcat作为web容器。接受用户请求,使用下游的dubbo提供的接口来返回数据,并且该层禁止访问数据库

业务服务层:根据具体的业务场景演变而来的模块,比如简历投递,职位搜书,职位推荐等

基础业务层:业务的核心

基础服务层:这一层 是与业务无关的模块 是一些通用的服务,这类服务的特点:请求量大 逻辑简单 特性明显 功能独立

存储层:不同的存储类型 Mysql Mongodb ES fastDFS

分级:按照业务性质分层,同一层的业务也要做好分级,依据业务的重要性进行分级,按照二八定律,网站80%的流量都在核心功能上面,要优先保证核心业务的稳定。

隔离:不同性质、不同重要性的的做好隔离,包括业务,缓存,DB,中间件都要做好隔离,比如核心业务的数据库要和活动相关的数据库隔离

调用:总体上调用是单向,可以是跨层调用,但不能逆向调用

3.2SOA优点:

服务以接口为粒度,为开发者屏蔽远程调用底层细节,使用Dubbo面向接口远程方法调用,屏蔽了底层调用细节

业务分层以后架构更多清晰,并且每个业务模块职责单一,扩展性更强

数据隔离,权限回收,数据访问都通过接口,让系统更加稳定,安全

服务应用本身无状态化,这里的无状态化指的是应用本身不做内存级缓存,而是把数据存入db

服务责任易确定,每个服务可以确定责任人,这样更容易保证服务质量和稳定

3.3SOA缺点:

粒度控制复杂,如果没有控制号服务的粒度,服务的模块就会越来越多,就会引发超时,分布式事务瓦内特

服务接口数量不宜控制,容易引发接口爆炸,所以服务接口建议以业务场景进行单位划分,并对相近的业务做抽象,防止接口爆炸

版本升级兼容困难,尽量不要删除方法、字段,枚举类型的新增字段也可能不兼容

调用链路长,服务质量不可监控,调用链路变长,下游抖动可能会影响到上游业务,最终形成连锁反应,服务质量不稳定,同时链路的变成使得服务质量的监控变得困难


20210424154249684.png

4.微服务架构的优缺点和应用场景

微服务架构是SOA架构的一种拓展,这种架构模式下它拆分粒度更小,服务更独立,把应用拆分一个个微小的服务。、

微服务的关键在于微小、独立、轻量级通信

4.1微服务优点:微服务架构和微服务

微服务很⼩,便于特定业务功能的聚焦 A B C D

微服务很⼩,每个微服务都可以被⼀个⼩团队单独实施(开发、测试、部署上线、运维),团队合

作⼀定程度解耦,便于实施敏捷开发

微服务很⼩,便于重⽤和模块之间的组装

微服务很独⽴,那么不同的微服务可以使⽤不同的语⾔开发,松耦合

微服务架构下,我们更容易引⼊新技术

微服务架构下,我们可以更好的实现DevOps 开发运维⼀体化;

4.2微服务缺点:

分布式复杂难以管理,当服务量增加,管理越加复杂

微服务架构下,分布式链路跟踪难

2021042415471819.png


 

————————————————

版权声明:本文为CSDN博主「酆都小菜鬼」的原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接及本声明。

原文链接:https://blog.csdn.net/FDXCG_X/article/details/115708922


0条评论

点击登录参与评论