架构的演进
单体架构
image-20230129164232143.png
所有的功能都集中在一个应用中,统一开发,统一部署,all in one。
优点
成本低
周期短
维护方便
缺点
性能低,并发量低
单点容错率低
随着需求的迭代,项目越来越臃肿
无法对不同模块功能进行针对性的优化
无法对不同的模块进行针对性的水平拓展,有的模块并发量高,有的模块并发量低,单体应用只能整体进行扩展
垂直应用架构
image-20230129164302624.png
把单体应用拆分成互不相干几个应用,比如一个电商系统可以拆分成:电商系统、后台管理系统等
优点
可针对不同的系统功能进行针对性的优化
方便水平拓展,并发量高的模块多副本集群化部署
容错,单一系统出错不影响其他的系统
缺点
重复开发
服务之间交互复杂
分布式架构
image-20230129171755806.png
当垂直应用越来越多,重复的业务代码将越来越多。分布式架构就是把一个服务拆分成控制层服务和服务层服务,控制层只需要处理和业务的交互,业务逻辑都是调用服务层来实现。
优点
系统模块重用度高
开发和发布速度快
系统扩展性高
缺点
分布式事务复杂
系统吞吐量变大,但是响应时间变长
服务调度困难复杂
SOA架构
image-20230130141406942.png
当拆分的服务越来越多,分布式架构中各服务间的依赖关系越来越复杂,某一个服务的变更可能导致多个依赖服务的不可用。SOA架构就是引入了一个ESB(企业服务总线),让ESB统一做消息的转换和路由工作,让不同的服务互联互通。
优点
标准网络协议
减少服务间的依赖
缺点
微服务架构
image-20230130153550365.png
微服务是SOA一个离经叛道的继任者。
微服务就是将以上架构中的服务分隔成更小细粒度的服务,服务组件化。
优点
技术选型灵活,不同的服务可根据具体的需求技术选型
可扩展性高
缺点
部署成本高
服务间通信成本高,对网络稳定性要求高
SOA架构 VS 微服务架构
SOA | 微服务 | |
---|---|---|
服务粒度 | 粗粒度 | 细粒度 |
业务划分方式 | 水平多层 | 纵向业务划分 |
部署方式 | 整体部署 | 独立部署 |
通信方式 | 使用重量级通信方式,ESB充当服务之间通信的角色 | 使用轻量级通信方式,如HTTP RESTful |
服务交付 | 交付慢 | 交付快 |
应用场景 | 庞大、复杂、异构的企业级系统 | 快速、轻量级、基于 Web 的互联网系统 |
概念
集群:很多一样的服务,干同样的事。
分布式:不一样的服务,合起来干一件事。