单体应用架构
这个做Java的应该都很熟悉,就是一个项目的所有代码都在一个web服务器上部署。
- 优点:开发简单,适用于小型项目;
- 缺点:代码高度耦合,不利于大型项目的开发(代码的扩展性和并发量等)。
垂直架构
针对单体应用的缺点,开始出现垂直架构。
- 优点:解决高并发;代码解耦等;
- 缺点:系统间相互独立,重复代码开发工作比较多。
分布式架构
针对垂直架构的缺点,开始出现分布式架构;
只说单纯分布式的话包含两层:1、展示层;2、服务层。
缺点:服务的评估、治理和调度都没有;
SOA分布式架构
针对单纯分布式架构开始出现SOA分布式架构;
SOA:servcie oriented architecture 面向服务架构;
SOA分布式架构采用RPC调用,包括:
1、展示层
2、ESB总线/DUBBO框架
3、服务层
优点:
1、抽取公共的功能为服务,提高开发效率;
2、对于不同的服务进行集群化部署,解决系统压力;
3、基于ESB/DUBBO减少系统间耦合。
缺点:
1、抽取的服务粒度大
2、服务提供方和调用方接口耦合度高
微服务架构
针对SOA分布式架构的缺点开始出现微服务架构;包括:
1、客户端(PC+移动端)
2、服务网关
3、服务层
4、数据库
优点:
1、服务的原子化拆分(就是服务拆分的不能再拆分了),微服务独立打包,一个小团队就可以快速开发交付;
2、微服务遵循单一原则,微服务之间采用restful轻量传输协议传输。
缺点:
1、微服务过多,服务治理成本高,不利于系统维护;
2、微服务系统开发成本高(容错,分布式事务等)。
总结:
系统架构是一步一步演变而来,现在演变到微服务这个架构,还是有缺点的,针对微服务的缺点或许是现在招人对分布式事务、分布式锁等要求的原因。
SOA分布式架构和微服务架构的区别:
SOA分布式架构:面向服务架构,他是一种设计方法,其中包含多个服务,服务之间通过相互依赖提供一系列的功能,服务之间通过rpc调用。
微服务架构:和SOA分布式架构类似,是在SOA分布式架构上进行的升华,强调业务需要彻底组件化和服务化,原有的单个业务系统会拆分多个可以独立开发、设计和运行的程序。