了解分布式架构,让你的软件架构之路越走越顺

分布式架构:原理,设计与实战,目前公司每个月都要出账,出账就是每个月有要把之前的一个月的账目盘算清楚,做到错误的0容忍,一笔都不能错,错一笔客户都会找你,偏准确性 。4个9,5个9并不是说后面设计的,而是在开发之初就要考虑的 。
 
了解分布式架构,让你的软件架构之路越走越顺

文章插图
 
 
分布式服务的发展历程
  • J2EE架构
俗称JEE 。对于大概有5年以上工作经验的老铁,应该都听过这个名词 。基本分为3层 。
  1. web容器
  2. EJB容器
  3. 数据库和数据存取的ORM
那时候的容器之间都没有进行物理的隔离,都是部署在同一个jvm上的 。所以久而久之,它们之间互相的耦合互相的依赖,业务之前有千丝万缕的,添加和修改增加新的业务的时候,他们变的很复杂,经常导致服务不可用 。这个时代就是有了层次,但是层次之前没有进行物理的隔离 。带来了一些问题 。
 
了解分布式架构,让你的软件架构之路越走越顺

文章插图
 
 
  • SSH架构
开源框架SSH = struts + spring + hibernate,实际上它跟JEE的架构是基本相似的,也把组件分成了三层 。
  1. struts MVC UI组件
  2. spring 业务组件,实现业务的逻辑
  3. ORM 对象管理映射层,连接数据库的
那时候的SSH非常流行,因为那个时期都是给传统的行业和制造行业来做的系统,在互联网行业里面ssh架构就不灵了 。
 
了解分布式架构,让你的软件架构之路越走越顺

文章插图
 
 
  • Web Service 架构
互联网行业偏向于服务化,最流行的微服务起源于服务化,服务化最早体现在web service,web service 以IBM为首的各大公司制定的标准,webservice特点服务开发完毕后,不在部署在同一台机器,同一个JVM上面,拆分成不同的服务,例如图中的web service1 ,web service2,web service3 它们3个各自有各自的角色,各自有各自的功能,服务和服务之前都是通过远程调用的方式来实现互相实现和交流的,远程调用是遵循已定的标准,当时标准是SOAP协议,这个协议是在http协议之上的,来传输xml来完成的 。有了这些的服务 。需要服务的发现机制,通过webservice的目录来实现的 。所有的服务对外提供服务的功能,需要在webservice注册 。发现服务UDDI,找到服务WSDL找到服务 。这个时代服务主要的特点是:职责拆分,服务部署隔离,服务调用遵守协议 。webservice定义的协议是非常重的,首先xml序列化,xml有冗余的标签,服务性能上不来的 。webservice注册通信化的服务,通信化的注册服务一定要保证高可用 。在互联网里面如果不是高可用的,服务也不是最优化的 。
 
了解分布式架构,让你的软件架构之路越走越顺

文章插图
 
 
  • ESB架构
企业服务总线,侧重于企业服务总线 。上边是提供的服务,下面是数据库数据源,消息队列,大数据,ERP 。所有的服务和资源只要都进入ESB中,就会进行编排,完成特定的功能 。这个时期,ESB功能进行了拆分,也有各自的职责,都进行了拆分,在不同的物理机,在不同JVM中 。主要体现在可插拔,快速的添加删除服务,快速的加入资源 。
 
了解分布式架构,让你的软件架构之路越走越顺

文章插图
 
 
  • 微服务架构
最流行的架构,跟传统架构是一脉相承的,并不是矛盾的 。采用的是分层的概念,上层的服务依赖下层的服务,基本两层,第一层:业务服务一;第二层:业务服务2,3,4 。上一层跟下一层是依赖的,但是不是循环依赖的 。每个服务之间自己是用数据库的,实际上数据库缓存和消息队列都是自治的,这就使微服务有自我管理的权限,微服务内可以快速的消化需求,敏捷上线,提高开发和运维的效率,微服务之前是通过远程的服务调用来先实现的 。远程服务调用,并没有特定的要求是通过使用restful还是rpc,要求服务之间一定要有契约,契约可以服务生产者提出,也可以服务消费者提出的服务生产者契约,也可以是多个服务消费者一起找服务的生产者提要求,服务生产者提供一个公共的契约,保证通信没有问题的 。例如:来了个需求,先进行服务的拆分,拆分到不同的微服务里面,微服务有了良好的通信契约,不在管对外的功能,就在服务内把需求消化掉了 。上线和响应市场也是非常敏捷的 。微服务每个节点他们的拆分都是比较单一的,都是比较细的,职责单一后,专业的人干专业的事情,这样很难犯错误,这样系统的可用性就提高起来了 。


推荐阅读