全部产品

概述

更新时间:2020-09-23 16:32:34

SOFARPC 提供应用之间的点对点服务调用功能。

产品特性

  • 高可用
    • 为保证高可用性,通常同一个应用或同一个服务提供方都会部署多份,以达到对等服务的目标。
    • SOFARPC 提供软件负载的能力,它是对等服务调用的调度器,会帮助服务消费方在这些对等的服务提供方中合理地选择一个来执行相关的业务逻辑。
  • 高容错
    • 为保证应用的高容错性,需要服务消费方能够感知服务提供方的异常,并做出相应的处理,以减少应用出错后导致的服务调用抖动。
    • 一切服务调用的容错机制均由软负载和配置中心控制,这样可以在应用系统无感知的情况下,帮助服务消费方正确选择健康的服务提供方,保障全站的稳定性。

基本功能

主要为用户提供下述功能:

  • 多种服务路由方式:包括软负载、硬负载、直连等。
  • 负载均衡:支持随机策略、考虑长链接、权重等负载均衡策略。
  • 多种调用方式:支持同步、单向、回调、泛化等多种调用方式。
  • 多种编程界面:支持 XML、动态客户端、Standalone 模式等多种编程界面。
  • 流量转发
  • 链路追踪
  • 链路数据透传
  • 故障剔除

协议支持

SOFARPC 支持不同的通讯协议,目前主要包括:

  • BOLT:是蚂蚁金融服务集团开放的,基于 Netty 开发的网络通信框架。
  • RESTful
  • Dubbo
  • H2C

实现原理

SOFARPC 中的远程调用是通过服务模型来定义服务调用双方的。服务分为:

  • 服务消费方:对应 RPC 的调用端,可以理解为调用客户端,即 “引用 (Reference)”。
  • 服务提供方:对应 RPC 的被调用端,可以理解为调用服务端。即 “服务 (Service)”。

SOFARPC 实现原理示意图

原理图

上述原理说明如下:

  1. register service:当一个 SOFARPC 的应用启动的时候,如果发现当前应用需要发布 RPC 服务的话,那么 SOFARPC 会将这些服务注册到服务注册中心上,如上图中 Service 指向 Registry。
  2. subscribe service:当引用这个服务的 SOFARPC 应用启动时,会从服务注册中心订阅到相应服务的元数据信息。
  3. notify address:服务注册中心收到订阅请求后,会将发布方的元数据列表实时推送给服务引用方,如上图中 Registry 指向 Reference。
  4. invoke:当服务引用方拿到地址以后,就可以从中选取地址发起调用了,如上图中 Reference 指向 Service。