软件架构的历程及区别

1.1. 软件架构的发展

软件架构经历的发展阶段:单体架构-->垂直架构 --> 分布式架构(SOA服务架构)  --> 微服务架构


1.2. 单体架构 

 软件架构的历程及区别_第1张图片

特点:

1.所有的功能集中在一个系统中完成.

2.所有的功能都要打成war,部署到tomcat中运行.

3.应用与数据库是分开部署.

4.可以通过部署应用集群和数据库集群来提高系统性能.(应用集群通过tomcatsession共享来实现)

优点:

项目部署简单,架构也简单,开发成本低,开发周短,小项目的首选.

缺点:

全部功能在一个项目中完成,代码重用性差,一个小问题会导致整个项目发问题,开发与维护困难.

1.3. 垂直架构

 软件架构的历程及区别_第2张图片

特点:

1.以单体架构的项目作为自已开发的单位,拆分是属性单体项目.

2.项目与项目之间存数据的冗余,耦合度高,可能会存在相同的业务,代码冗余.

3.项目之间的接口是为了同步数据,比如:数据库的数据同步

优点:

1.项目架构简单,前期开发成本低,周期短,小项目首选.

2.通过垂直架构调整,不至于单体项目的功能无限大.

3.不同的项目可以使用不同的技术.

缺点:

1.单体架构存在的一部分缺点,它也存在.

2.一样是没有解决实际性问题(集群节点问题),成本高,有瓶颈.

1.4. 分布式服务架构(SOA)

 软件架构的历程及区别_第3张图片

特点:

1.基于SOA架构的功能与实现,抽取为服务组件.以服务的形式来展现功能.

2.项目与项目之间是通过webservice或者 rpc 或者 rest来进行调用.

3.ESB企业服务总线作为桥梁.

优点:

1.将重用的功能进行抽取,提高了开发效率,提高了代码重用性和可维护性.

2.可以针对不同的服务来扩容.

3.它采ESB企业服务总线作为桥梁,大大的减少系统的耦合度.

缺点:

1.系统与服务的界限比较模糊,不利于维护.

2.虽然使用ESB企业服务总线,但是协议不固定,不利于维护.

3.抽取粒度比较大,系统之间的耦合度还存在.

1.5. 微服务架构

 软件架构的历程及区别_第4张图片

特点:

1.通过服务网关来制定通信协议(restful协议)

2.微服务单一原则

3.系统的服务层完全独立出来,抽取为粒度小的单元

优点:

1.将系统的服务完全独立出来,有利于资源的重复利用,提高开发效率.

2.可以更加精准为服务定制解决方案,提高系统的可维护性

3.微服务去中心化思想,服务与服务之间通过restful协议进行调用,ESB更容易维护与轻量.

4.产品化粒度细,产品迭代周期短.

缺点:

1.微服务的数量众多,服务治理成本变高,不利于系统维护.

2.分布式的微服务(比如:调用,容错,分布式事务等),对团队的挑战高.

你可能感兴趣的:(学习)