1.单体架构
1.1优点
小项目开发快 成本低
架构简单
易于测试
易于部署
1.2缺点
大项目模块耦合严重,不易开发,维护,沟通成本高
新增业务困难
核心业务与边缘业务混合在一块,出现问题互相影响
2.垂直架构
根据业务把项目垂直切割成多个项目,因此这种架构称之为垂直架构。
2.1垂直架构的优点
系统拆分实现了流量分担,解决了并发问题
可以针对不同的模块进行优化
方便水平扩展,负载均衡,容错率提高
系统间相互独立,互不影响,新的业务迭代时更加高效
2.2垂直架构的缺点
服务之间相互调用,如果某个服务的端口或者IP地址发生改变。调用的系统得手动变化
搭建集群之后,实现负载均衡比较复杂。比如:内网负载,在迁移得时候会影响调用方的路由,导致线上故障
服务之间调用方式不统一,基于httpclient,webservice,接口协议不统一
服务监控不到位
3.分布式架构(SOA)
3.1分层
分层:按照业务性质分层,每一层要求简单和容易维护
应用层(展示层):距离用户最近的一层也称为接入层,可以使用Tomcat作为web容器。接受用户请求,使用下游的dubbo提供的接口来返回数据,并且该层禁止访问数据库
业务服务层:根据具体的业务场景演变而来的模块,比如简历投递,职位搜书,职位推荐等
基础业务层:业务的核心
基础服务层:这一层 是与业务无关的模块 是一些通用的服务,这类服务的特点:请求量大 逻辑简单 特性明显 功能独立
存储层:不同的存储类型 Mysql Mongodb ES fastDFS
分级:按照业务性质分层,同一层的业务也要做好分级,依据业务的重要性进行分级,按照二八定律,网站80%的流量都在核心功能上面,要优先保证核心业务的稳定。
隔离:不同性质、不同重要性的的做好隔离,包括业务,缓存,DB,中间件都要做好隔离,比如核心业务的数据库要和活动相关的数据库隔离
调用:总体上调用是单向,可以是跨层调用,但不能逆向调用
3.2SOA优点:
服务以接口为粒度,为开发者屏蔽远程调用底层细节,使用Dubbo面向接口远程方法调用,屏蔽了底层调用细节
业务分层以后架构更多清晰,并且每个业务模块职责单一,扩展性更强
数据隔离,权限回收,数据访问都通过接口,让系统更加稳定,安全
服务应用本身无状态化,这里的无状态化指的是应用本身不做内存级缓存,而是把数据存入db
服务责任易确定,每个服务可以确定责任人,这样更容易保证服务质量和稳定
3.3SOA缺点:
粒度控制复杂,如果没有控制号服务的粒度,服务的模块就会越来越多,就会引发超时,分布式事务瓦内特
服务接口数量不宜控制,容易引发接口爆炸,所以服务接口建议以业务场景进行单位划分,并对相近的业务做抽象,防止接口爆炸
版本升级兼容困难,尽量不要删除方法、字段,枚举类型的新增字段也可能不兼容
调用链路长,服务质量不可监控,调用链路变长,下游抖动可能会影响到上游业务,最终形成连锁反应,服务质量不稳定,同时链路的变成使得服务质量的监控变得困难
4.微服务架构的优缺点和应用场景
微服务架构是SOA架构的一种拓展,这种架构模式下它拆分粒度更小,服务更独立,把应用拆分一个个微小的服务。、
微服务的关键在于微小、独立、轻量级通信
4.1微服务优点:微服务架构和微服务
微服务很⼩,便于特定业务功能的聚焦 A B C D
微服务很⼩,每个微服务都可以被⼀个⼩团队单独实施(开发、测试、部署上线、运维),团队合
作⼀定程度解耦,便于实施敏捷开发
微服务很⼩,便于重⽤和模块之间的组装
微服务很独⽴,那么不同的微服务可以使⽤不同的语⾔开发,松耦合
微服务架构下,我们更容易引⼊新技术
微服务架构下,我们可以更好的实现DevOps 开发运维⼀体化;
4.2微服务缺点:
分布式复杂难以管理,当服务量增加,管理越加复杂
微服务架构下,分布式链路跟踪难
————————————————
版权声明:本文为CSDN博主「酆都小菜鬼」的原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接及本声明。
原文链接:https://blog.csdn.net/FDXCG_X/article/details/115708922
0条评论
点击登录参与评论