软件架构经历的发展阶段:单体架构-->垂直架构 --> 分布式架构(SOA服务架构) --> 微服务架构
特点:
1.所有的功能集中在一个系统中完成.
2.所有的功能都要打成war,部署到tomcat中运行.
3.应用与数据库是分开部署.
4.可以通过部署应用集群和数据库集群来提高系统性能.(应用集群通过tomcat的session共享来实现)
优点:
项目部署简单,架构也简单,开发成本低,开发周短,小项目的首选.
缺点:
全部功能在一个项目中完成,代码重用性差,一个小问题会导致整个项目发问题,开发与维护困难.
特点:
1.以单体架构的项目作为自已开发的单位,拆分是属性单体项目.
2.项目与项目之间存数据的冗余,耦合度高,可能会存在相同的业务,代码冗余.
3.项目之间的接口是为了同步数据,比如:数据库的数据同步
优点:
1.项目架构简单,前期开发成本低,周期短,小项目首选.
2.通过垂直架构调整,不至于单体项目的功能无限大.
3.不同的项目可以使用不同的技术.
缺点:
1.单体架构存在的一部分缺点,它也存在.
2.一样是没有解决实际性问题(集群节点问题),成本高,有瓶颈.
特点:
1.基于SOA架构的功能与实现,抽取为服务组件.以服务的形式来展现功能.
2.项目与项目之间是通过webservice或者 rpc 或者 rest来进行调用.
3.以ESB企业服务总线作为桥梁.
优点:
1.将重用的功能进行抽取,提高了开发效率,提高了代码重用性和可维护性.
2.可以针对不同的服务来扩容.
3.它采ESB企业服务总线作为桥梁,大大的减少系统的耦合度.
缺点:
1.系统与服务的界限比较模糊,不利于维护.
2.虽然使用ESB企业服务总线,但是协议不固定,不利于维护.
3.抽取粒度比较大,系统之间的耦合度还存在.
特点:
1.通过服务网关来制定通信协议(restful协议)
2.微服务单一原则
3.系统的服务层完全独立出来,抽取为粒度小的单元
优点:
1.将系统的服务完全独立出来,有利于资源的重复利用,提高开发效率.
2.可以更加精准为服务定制解决方案,提高系统的可维护性
3.微服务去中心化思想,服务与服务之间通过restful协议进行调用,比ESB更容易维护与轻量.
4.产品化粒度细,产品迭代周期短.
缺点:
1.微服务的数量众多,服务治理成本变高,不利于系统维护.
2.分布式的微服务(比如:调用,容错,分布式事务等),对团队的挑战高.