系统架构演变
单体应用架构
一个完整的项目中包含所有的模块。
- 优点: 开发简单,适用于小型应用
- 缺点: 不以拓展,维护,代码耦合度高。
垂直应用架构
一个项目可以拆分成若干个子项目
- 优点: 解决高并发问题
针对不同模块进行优化
方便水平扩展,容错 - 缺点:系统之间相互独立,所以有很多重复开发工作。
分布式架构
把垂直应用进行业务上的抽取,成为两部分内容,基础服务和业务功能,由业务功能去调用基础服务
引入概念 SOA
全称为Service-Oriented Architecture, 即面向服务的架构,它可以更具需求通过网络对松散耦合的粗粒度应用组件服务进行分布式部署,组合和使用,一个服务通常以独立的形式存在于操作系统进程中。
站在功能的角度,把业务逻辑抽象成为可复用,可组装的服务,通过服务的编排实现业务的快速再生,目的:把原先固有的业务功能转变为通用的业务服务,实现业务逻辑的快速复用。
下图为示例:
- 缺点: 抽取服务的粒度较大
服务提供方与到用方接口耦合度较高 - 优点: 抽取公共的功能为服务,提高开发效率
对不同的服务进行集群化部署解决系统压力
基于ESB/DUBBO减少系统耦合
微服务架构
解决SOA中存在的问题,尽可能的拆分服务,和SOA架构类似,重点是业务需要彻底的组件化和服务化,原有的单个业务系统会拆分为多个可以独立开发,设计运行的小应用。小应用之间通过服务完成交互和集成。
- 优点: 通过服务的原子化拆分,以及微服务的独立打包,部署和升级,小团队的交付周期缩短,运维成本也大幅下降。
微服务遵循单一原则,微服务之间采用Resful等轻量协议传输
- 缺点: 微服务过多,服务治理成本高,不利于系统维护。
分布式系统开发等技术成本高 (容错,分布式事务等)
SOA与微服务的关系