浅析SOA和MSA微服务架构

621 阅读4分钟

什么是SOA(Service-Oriented Architecture)

SOA是一种以“服务”为导向的架构设计,它是一种架构设计的方式或者思路,不是某一个具体的中间件或者协议的技术实现。 SOA诞生于1990年代后期,在SOA诞生之前,共享系统之间的数据或者功能,需要进行复杂的点对点开发集成,开发人员必须为每个新项目进行点对点的对接。OpenGroup于2007发布了SOA的白皮书,后续发展为SOA Source Book,包含SOA标准、SOA白皮书等,Source Book的最新版本为第7版(截止到2020-06)。其中关于“服务”的定义为:

  • 指定结果的可复用的业务活动,比如:天气数据查询,购物车创建等;
  • 独立(松耦合),一个服务自成体系;
  • 组合,一个服务可以由其他多个服务组合而成;
  • 黑盒,消费者不需要关注服务的内部细节;

SOA通过网络(TCP/IP)实现服务的开放,是云计算的重要基础,大量的事实结果也证明SOA的好处:

  • 语言无关性,服务化没有开发语言的限制,服务之间通过通用协议进行访问;
  • 功能复用,将程序的组件服务化之后,也可以供其他场景的需求使用;
  • 业务敏捷,SOA系统提供了一系列业务语义的服务,可以快速的组合和集成这些服务,响应变化的需求,;
  • 复用现有的系统,可以直接使用现有的程序的组件或者模块进行服务化;
  • 便于业务与技术之间的沟通,SOA按业务语义来定义服务,这使的业务人员与开发人员沟通起来跟方便、直接。

SOA与SOAP的关系

SOAP(Simple Object Access Protoclol)是一种系统之间通信的协议,基于HTTP+XML来实现,常见的实现框架有: Xfire、Axis2、CXF等。所以,SOAP、REST等都可以作为SOA架构的协议上的实现。

SOA服务分层

使用SOA设计的软件系统,由一系列服务组合而成,SOA的服务分层图如下:

服务治理

服务化之后就会出现一个服务被多个调用方调用,一个调用方也会调用很多的服务,从而形成一个复杂的网状调用链路。基于以上是诉求,就诞生了服务治理框架,比如:Dubbo、Spring Clound等;

服务治理主要解决以下几个问题:

  • 连通性:服务的注册和发现;
  • 健壮性:解决部分服务提供者或者注册中心宕机后,服务继续可用;
  • 伸缩性:服务提供者可用动态增加部署实例;

什么是微服务架构

MSA(Microservices Architecture)微服务架构也是一种架构的方式,它通过原子且独立的服务来构建系统,它通常不是在企业范围内使用,而是用于构建单个应用程序或者系统,以提高敏捷性、可伸缩和弹性。微服务的主要特性是独立性,可独立开发编译(无其他服务的接口依赖),可用独立部署(无部署顺序依赖),可独立运行(无启动顺序依赖)、可独立扩展(增加或减少部署实例)。

微服务的三维扩展(Scale Cube)

Scale Cube是定义微服务扩展性的模型,它有3个轴组成:

  • X轴:服务实例的水平扩展,保证可靠性与性能
  • Y轴:功能的细化拆分实现扩展,服务单一职责,功能独立;
  • Z轴:数据分区,数据独立,可靠性保证;

微服务的大小

关于微服务大小的一个著名的理论就是亚马逊的2个披萨的团队(整个团队可以通过2个披萨吃饱),这意味着团队大概12个人左右。

参考