MicroServices(4)--SOA、MSA以及ESB概念

单体应用

    优点:开发快,尤其是在开发一款新产品(而不是在老代码基础上开发)若以最短时间推向市场,可以考虑。

    缺点:1、代码严重耦合 3、可能会影响开发效率,如代码超过一百万行,本地开发代码很难编译通过更别说测试自己的代码了。4、简单单体模式打包后的部署结构可能过于庞大,导致业务系统启动很慢,进而也会影响系统的可用性。 5、扩展性受限制。如任何一个功能存在性能问题,那么都需要多部署几个完整的实例,再加上负载均衡设备,才能保证整个系统的性能能够支撑用户的使用。

 

SOA

    根据《高可用可伸缩微服务架构》p295描述,soa就是分布式服务架构,且指的是以ESB为代表的集中式管理的分布式架构。

DSA:因为一ESB位代表的集中式管理的方案存在种种问题,以Apache Dubbo(2011年开源后)与spring cloud为代表的分布式服务化技术的出现,给了soa实现的另外一个选择:去中心化的分布式服务架构(DSA)。分布式服务架构技术不再依赖于具体的服务中心容器技术(比如ESB),而是将服务寻址和调用完全分开,这样就不需要通过容器作为服务代理。之后又在此基础上随着REST,Docker容器化、领域建模,自动化测试运维等领域发展,逐渐形成了微服务架构(MSA).

分布式服务化设计技术有:服务注册与寻址、服务调用与消息处理监控、服务降级等。高可用p22

ESB:可参考百度百科

分布式架构缺点(我只写了一些我认为重要的,相对于微服务来比较。高可用p26)

  • 部署困难:每次上线采用专人进行部署,太麻烦了。
  • 适配新技术困难:每个服务都有自己的技术,导致想升级个新的技术很困难或者说不支持技术升级。每个服务有自己的技术,导致技术人员的学习曲线非常陡峭。
  • 快速开发困难:如果是微服务,每个服务都很微小,每个服务又是独立运行行,快速开发很简单。

MSA:微服务架构。

微服务几个关键点:(高可用P27)

  • 由一些独立的服务共同组成应用系统;
  • 每个服务单独部署、独立运行在自己的进程中;
  • 每个服务都是独立的业务;
  • 分布式管理;(说明服务熔断降级注册什么的都是在分布式服务就产生的,微服务用这些技术)

 

缺点:(来自高可用p31)

    技术层面讲:当一个系统包含成百上千个服务时需考虑设计原则的遵守,通信机制的选择、健康状态的监控与跟踪、测试运维等

此时的系统结构是非常复杂的。可以通过基础架构的设计者及微服务的框架来保障。

   业务维度:由于微服务粒度比单体架构更细,且牵涉跨进程通信边界,一旦职责分配有误,调整的成本远远大于单体架构。所以微服务的设计与分解,而这个问题恰好是领域驱动设计所擅长的。

    

补充

传统的企业集成领域的EAI架构模式,各个系统还是独立部署的,但是各个系统之间的部分业务使用特定技术打通了,因此我们可以看作单体和分布式之间的过渡状态。------            高可用P19

高可用p18详细讲解了不同架构之间的优缺点。

你可能感兴趣的:(MicroServices,SOA,MSA以及ESB概念)