其他分享
首页 > 其他分享> > 【架构】分布式服务架构与微服务架构

【架构】分布式服务架构与微服务架构

作者:互联网

文章目录


0)服务相关架构的演变

传统单体架构 ==> 分布式架构 ==> 面向服务(SOA)架构 ==> 微服务架构

  • 传统单体架构:如分层架构模式。
  • 分布式架构:基于传统单体架构演变过来的,会根据不同的业务实现拆分n多个不同子系统。
  • 面向服务(SOA)架构:将整个项目中共同的业务逻辑抽取成一个公共的服务,提供给其他的服务实现调用,调用的过程会涉及到RPC远程调用技术。
    • SOA架构模式实现方案为Web Service或者是ESB企业服务总线。
    • 底层通讯协议SOAP协议(Http+XML)实现传输。
    • 传统政府、银行项目还是保留地在使用Web Service。
  • 微服务架构:比SOA架构对服务拆分的粒度更加精细,让业务界限更加清晰,每个服务独立部署、互不影响。
    • 服务与服务之间的通讯协议采用restful形式。
    • 数据交换格式采用http+json格式实现传输。

*关于面向对象、面向组件、面向服务

  • 面向对象编程(Object-Oreinted Programming) :是一种编程范式,指在设计程序时大量运用类实例对象的方式。

    • OOP主要思想是把构成问题的各个事务分解成各个对象,建立对象的目的不是为了完成一个步骤,而是为了描叙一个事物在整个解决问题的步骤中的行为。
    • 是具有相同特性(数据元素)和行为(功能)的对象的抽象。
  • 面向服务架构(Service-Oreinted Architecture) :是将软件设计成一组可互操作的服务的一套原则或方法论。

    • 通常在考虑系统架构时才会触及SOA。
  • 基于组件开发(Component-Based Development) :是一种软件工程实践,设计时通常要求组件之间高内聚,松耦合。

    • 其接口可能是OO的,调用方式可能是以Service的方式。
    • 基于组件开发关注系统层次、子系统边界和子系统间通讯的的设计。

三者身处于软件开发的不同层面,不论是哪个领域的软件开发,都可能要同时面对OOP、SOA和CBD。



1)面向服务架构(SOA)

1.1 什么是面向服务架构(SOA)?

面向服务架构(Service-Oriented Architecture,SOA)又称为面向服务的体系架构。

  • 传统的Web(HTML/HTTP)技术有效的解决了人与信息系统的交互和沟通问题,极大的促进了B2C模式的发展。
  • WEB服务(XML/SOAP/WSDL)技术则是要有效的解决信息系统之间的交互和沟通问题,促进B2B/EAI/CB2C的发展。
  • SOA(面向服务的体系)则是采用面向服务的商业建模技术和WEB服务技术,实现系统之间的松耦合,实现系统之间的整合与协同。
    • WEB服务和SOA的本质思路在于使得信息系统个体在能够沟通的基础上形成协同工作

1.2 为什么需要SOA?

SOA凭借其松耦合的特性,使得企业可以按照模块化的方式来添加新服务或更新现有服务,以解决新的业务需要。


1.3 SOA 的特征

  • SOA要解决的主要问题是:快速构建与应用集成。

  • 实施SOA的关键目标是:实现企业IT资产的最大化作用。


1.4 SOA 的实现方法

SOA 只是一种概念和思想,需要借助于具体的技术和方法来实现它。

1、Web Service

在 Web Service(Web 服务)的解决方案中,一共有三种工作角色,其中服务提供者和服务请求者是必需的,服务注册中心是一个可选的角色。

它们之间的交互和操作构成了 SOA 的一种实现架构:
在这里插入图片描述

Web Service 模型中的操作包括发布、查找和绑定,这些操作可以单次或反复出现。

  • 发布:为了使用户能够访问服务,服务提供者需要发布服务描述,以便服务请求者可以查找它。
  • 查找:在查找操作中,服务请求者直接检索服务描述或在服务注册中心查询所要求的服务类型。
    • 对服务请求者而言,可能会在生命周期的两个不同阶段中涉及查找操作:
      • 首先是在设计阶段,为了程序开发而查找服务的接口描述;
      • 其次是在运行阶段,为了调用而查找服务的位置描述。
  • 绑定:在绑定操作中,服务请求者使用服务描述中的绑定细节来定位、联系并调用服务,从而在运行时与服务进行交互。
    • 绑定可以分为动态绑定和静态绑定。
      • 在动态绑定中,服务请求者通过服务注册中心查找服务描述,并动态地与服务交互;
      • 在静态绑定中,服务请求者已经与服务提供者达成默契,通过本地文件或其他方式直接与服务进行绑定。

2、服务注册表

服务注册表(service registry)虽然也具有运行时的功能,但主要在 SOA设计时使用。

3、企业服务总线(ESB)

ESB 是由中间件技术实现并支持 SOA的一组基础架构,是传统中间件技术与 XML、 Web Service 等技术结合的产物,是在整个企业集成架构下的面向服务的企业应用集成机制。


1.5 SOA 的关键技术

与 SOA 紧密相关的技术主要有 UDDI、WSDL、SOAP 和 REST 等,而这些技术都是以 XML 为基础而发展起来的。



2)微服务架构

2.1 什么是微服务架构?

微服务架构是一种架构模式,它提倡将单一应用程序划分成一组小的服务,服务之间互相协调、互相配合,为用户提供最终价值。

2.2 为什么需要微服务架构?

微服务架构是从soa架构模式演变过来的,比SOA架构对服务拆分的粒度更加精细,让业务界限更加清晰。

*基于服务总线的设计

  • 总线则作为中枢系统,提供统一的服务入口,并实现了服务统一管理、服务路由、协议转换、数据格式转换等功能。
  • 是SOA的一种很常见的设计实践,能够将不同系统有效地连接起来,并大大降低了连接数(每个子系统只需要和总线建立连接)和系统间连接拓扑的复杂度。
    在这里插入图片描述
  • 基于服务总线的设计,往往需要ESB(Enterprise Service Bus,企业服务总线)产品来充当基础设施。
  • 在其内部设计和实现中,通常会应用到一些经典的架构模式,例如:Broker模式、消息总线模式、管道过滤器模式、发布订阅模式等。具体介绍可参考:https://blog.csdn.net/dinglang_2009/article/details/44516657

2.3 微服务优点


2.4 微服务架构存在的问题


2.5 常见的微服务框架


*微服务框架与RPC

  • 什么是RPC?

    RPC (Remote Procedure Call)远程过程调用是一个计算机通信协议。我们一般的程序调用是本地程序内部的调用,RPC允许你像调用本地函数一样去调用另一个程序的函数,这中间会涉及网络通信和进程间通信,但你无需知道实现细节,RPC框架为你屏蔽了底层实现。

    • RPC是一种服务器-客户端(Client/Server)模式,经典实现是一个通过发送请求-接受回应进行信息交互的系统。
  • 两者关系:

    微服务框架一般都包含了RPC的实现和一系列「服务治理」能力,是一套软件开发框架

    • 我们可以基于这个框架之上实现自己的微服务,方便的利用微服务框架提供的「服务治理」能力和RPC能力,所以微服务框架也被有些人称作RPC框架。

2.6 微服务与SOA的关系

微服务可以说是 SOA 的一种,但两者之间存在一些差异:



3)分布式服务架构与微服务架构的关系

  • 微服务架构是团队面对互联网产品爆发式增长的最优选择,要解决的是快速迭代、高可靠和高可用等问题
    • 把复杂度很高的产品拆分成一些较小的模块,并遵循康威定律,每一个模块用5-9个小团队来维护,这样可以减少沟通成本,提高协作效率,更好地实现快速迭代和弹性扩展。
    • 复杂业务拆分可能无法一步到位,因为复杂,每个业务并不一定只能拆成一个组件,庞大的业务拆分出相对独立和庞大的业务。但如果业务较小而又比较多,且类型相似,也可以不用着急拆分,都是根据实际情况决定的。
      • 中间的状态,可能不是严格意义上的微服务架构,但属于分布式服务架构(不过这不是那么重要,重要的是符合业务发展阶段的需求)。
  • 需要注意的是:既没有规模又不需要太多变化的业务,如果采用微服务架构改造,引入各种复杂性,比如部署工作量的增加、复杂链路的监控难题,这就是为微服务而微服务,只会得不偿失。


【部分内容参考自】

标签:SOA,调用,服务,分布式服务,RPC,请求者,架构
来源: https://blog.csdn.net/m0_37621024/article/details/118279459