2.1 单体架构
单体架构所有模块和功能都集中在一个项目中 ,部署时也是将项目所有功能部整体署到服务器中。如下
图:
- 优点
小项目开发快 成本低
架构简单
易于测试
易于部署
- 缺点
大项目模块耦合严重 不易开发 维护 沟通成本高
新增业务困难
核心业务与边缘业务混合在一块,出现问题互相影响
2.2 垂直架构
根据业务把项目垂直切割成多个项目,因此这种架构称之为垂直架构。为了避免上面提到的那些问题,我们开始做模块的垂直划分,做垂直划分的原则是基于拉勾的业务特性,核心目标,第一个是为了业务之间互不影响,第二个是在研发团队的壮大后为了提高效率,减少之间的依赖
- 优点
系统拆分实现了流量分担,解决了并发问题
可以针对不同系统进行优化
方便水平扩展,负载均衡,容错率提高
系统间相互独立,互不影响,新的业务迭代时更加高效
- 缺点
服务系统之间接口调用硬编码
搭建集群之后,实现负载均衡比较复杂
服务系统接口调用监控不到位 调用方式不统一
服务监控不到位
数据库资源浪费,充斥慢查询,主从同步延迟大
2.3 分布式架构(SOA )
在做了垂直划分以后,模块随之增多,维护的成本在也变⾼,⼀些通⽤的业务和模块重复的越来越多,为了解决上⾯提到的接⼝协议不统⼀、服务⽆法监控、服务的负载均衡,引⼊了阿⾥巴巴开源的Dubbo ,⼀款⾼性能、轻量级的开源Java RPC框架,它提供了三⼤核⼼能⼒:⾯向接⼝的远程⽅法调⽤,智能容错和负载均衡,以及服务⾃动注册和发现。SOA (Service-Oriented Architecture),即⾯向服务的架构。根据实际业务,把系统拆分成合适的、独⽴部署的模块,模块之间相互独⽴(通过Webservice/Dubbo等技术进⾏通信)。
优点:分布式、松耦合、扩展灵活、可重⽤。
缺点:服务抽取粒度较⼤、服务调⽤⽅和提供⽅耦合度较⾼(接⼝耦合度)
2.4 微服务应用架构
微服务架构可以说是SOA架构的⼀种拓展,这种架构模式下它拆分粒度更⼩、服务更独⽴。把应⽤拆分
成为⼀个个微⼩的服务,不同的服务可以使⽤不同的开发语⾔和存储,服务之间往往通过Restful等轻量级通信。微服务架构关键在于微⼩、独⽴、轻量级通信。微服务是在 SOA 上做的升华粒度更加细致,微服务架构强调的⼀个重点是“业务需要彻底的组件化 和服务化”
微服务架构的优点: 微服务架构和微服务
- 微服务很⼩,便于特定业务功能的聚焦 A B C D
- 微服务很⼩,每个微服务都可以被⼀个⼩团队单独实施(开发、测试、部署上线、运维),团队合作⼀定程度解耦,便于实施敏捷开发
- 微服务很⼩,便于重⽤和模块之间的组装
- 微服务很独⽴,那么不同的微服务可以使⽤不同的语⾔开发,松耦合微服务架构下,我们更容易引⼊新技术
- 微服务架构下,我们可以更好的实现DevOps开发运维⼀体化;
微服务架构的缺点
- 微服务架构下,分布式复杂难以管理,当服务数量增加,管理将越加复杂;
- 微服务架构下,分布式链路跟踪难等;
