全部产品

SOFARPC 服务路由

更新时间:2020-11-06 17:30:48

RPC 最重要的功能是获取对端地址,根据使用环境的不同,获取对端地址的服务路由策略主要有下述两种:

软负载

软负载即软件负载。当需要调用服务时,消费方根据软负载策略,从服务注册中心(SOFARegistry)推送到本地缓存的列表里,选择一个地址,再调用该地址所提供的服务。

SOFARPC 采用服务发布(ServicePublish)和引用(ServiceReference)模型,通过服务注册中心(SOFARegistry)动态感知服务发布,并将服务地址列表推送给已经引用该服务的消费方,更新消费方本地缓存中的可用服务列表,最后通过软负载策略,为消费方选择可用地址进行远程通信。

在使用 SOFARPC 的时候,使用服务注册中心就不用将服务地址硬编码在代码中。

软负载示意图

软负载示意图

直连

在开发及测试环境下,开发者经常需要绕过注册中心,只测试指定服务提供方,这时候可能需要点对点直连来进行测试。该功能可以通过 SOFARPC 的 test-urltarget-url 配置来实现。

具体使用环境分为下述 2 种:

  • 本地环境:通过 run_mode=TEST & test-url 来实现直连。
  • 线上环境:推荐配置 target-url 来实现直连。

说明

  • 配置了 test-urltarget-url后,软负载阶段将会失效。
  • 如果同时配置了 run_mode=TEST & test-urltarget-url,将会直接使用 test-url 的配置。

本地环境

配置方式为:

  • application.properties 中配置 run_mode=TEST
  • 在 xml 文件中配置服务引用时,在标签 sofa:binding.bolt 里面加上一个 global-attrs 标签,里面放入一个 test-url 的属性,属性值设置为需要调用的地址。
  1. <sofa:reference id="sampleService" interface="com.alipay.test.SampleService">
  2. <sofa:binding.bolt>
  3. <sofa:global-attrs test-url="127.0.0.1:12200"/>
  4. </sofa:binding.bolt>
  5. </sofa:reference>

线上环境

线上环境不推荐使用 test-url,推荐配置 target-url,示例如下:

  1. <sofa:reference id="sampelService" interface="com.alipay.test.SampleService">
  2. <sofa:binding.bolt>
  3. <sofa:route target-url="target-url:12200"/>
  4. </sofa:binding.bolt>
  5. </sofa:reference>