从单体架构到微服务的演变之路

单体架构

1.描述:

  • 一个包含了应用全部功能的应用程序,咱们一般称之为 单体架构 。这是一种传统的架构风格,好比经典三层架构(UI,BLL,DAL)就是一个单体架构

2.示例图:

3.单体架构的特色:

  • 全部功能都集中在一个项目中。
  • 全部的功能打成一个war包部署到服务器。
  • 应用与数据库分开部署
  • 经过集群来提升服务器性能
  • 技术栈受到限制

war包是一个能够直接运行的web模块,一般用于网站,打成包部署到容器中web

4.单体架构的优势

  • 单体架构简单,前期开发成本低,周期短,小型项目首选

5.单体架构的缺点

  • 所有功能集中在一个项目中,随着项目的变大,变的不易开发,扩展,维护
  • 提升服务器性能只能扩展集群节点,成本过高

垂直架构

1.描述

  • 访问量逐渐增大,单体架构单加集群节点带来服务器性能愈来愈小时,咱们一般将应用拆成互不相干的几个应用,这就称之为 垂直架构

2.示例图

3.垂直架构的特色

  • 以单体架构规模的项目为单位进行垂直划分项目,即将一个大项目拆分红一个一个单体结构项目。
  • 项目与项目之间的存在数据冗余,耦合性较大,好比上图中三个项目都存在客户信息。
  • 项目之间的接口多为数据同步功能,如:数据库之间的数据库,经过网络接口进行数据库同步。

4.垂直架构的优势

  • 项目架构简单,前期开发成本低,周期短,小型项目的首选。
  • 经过垂直拆分,原来的单体项目不至于无限扩大。
  • 不一样的项目可采用不一样的技术。

5.垂直架构的缺点

  • 复杂应用的开发维护成本变高,部署效率逐渐下降。由于随着业务功能的不断膨胀,代码全量编译和部署一次所需的时间很是长。
  • 团队协做效率差,部分公共功能重复开发,代码重复率居高不下。
  • 系统可靠性变差。垂直架构将全部的应用模块都部署到一个进程中,若是某个应用接口发生故障,例如内存泄漏,会致使整个节点宕机。

SOA架构

1.描述

  • SOA是 Service-Oriented Architecture 英文的缩写,也就是 面向服务的架构 。

2.示例图

3.SOA架构的特色

  • 基于SOA的架构思想将重复公用的功能抽取为组件,以服务的方式给各各系统提供服务。
  • 各个项目(系统)与服务之间采用webservice、rpc等方式进行通讯。
  • ESB(企业服务总线)做为项目与服务之间通讯的桥梁。

4.SOA架构的优势

  • 将重复的功能抽取为服务,提升开发效率,提升系统的可重用性、可维护性。
  • 能够针对不一样服务的特色制定集群及优化方案。
  • 采用ESB减小系统中的接口耦合。

5.SOA架构的缺点

  • 系统与服务的界限模糊,不利于开发及维护。
  • 虽然使用了ESB,可是服务的接口协议不固定,种类繁多,不利于系统维护。
  • 抽取的服务的粒度过大,系统与服务之间耦合性高。

微服务架构

1.描述

  • 微服务架构 风格的开发方法,是以开发一组小型服务的方式来开发一个独立的应用系统的。其中每一个小型服务都运行在本身的进程中,并常常采用HTTP资源API轻量的机制来相互通讯。

2.示例图

 

3.微服务架构的特色

  • 将系统服务层彻底独立出来,并将服务层抽取为一个一个的微服务。
  • 微服务遵循单一原则(一个服务作一件事)。
  • 微服务之间采用RESTful等轻量协议传输。

4.微服务架构的优势

  • 服务拆分粒度更细,有利于资源重复利用,提升开发效率。
  • 能够更加精准的制定每一个服务的优化方案,提升系统可维护性。
  • 微服务架构采用去中心化思想,服务之间采用RESTful等轻量协议通讯,相比ESB更轻量。
  • 适用于互联网时代,产品迭代周期更短。
  • 单个微服务启动较快
  • 技术栈不受限

5.微服务架构的缺点

  • 微服务过多,服务治理成本高,不利于系统维护。
  • 分布式系统开发的技术成本高(容错、分布式事务等),对团队挑战大。

总结:

  • 随着互联网行业的发展,架构的进化是必然的,固然,微服务并非终点,之后将会有更多的架构涌现出来,而目地都是为了更好的解决所面临的问题。
相关文章
相关标签/搜索