全部产品
云市场

SOFARPC 使用 SOFARegistry

更新时间:2020-02-18 09:24:43

概念

服务路由

RPC 最重要的是获取对端地址,SOFARPC 采用服务发布和引用模型,通过服务注册中心动态感知服务发布并将服务地址列表推送给已经引用该服务的消费方,更新消费方本地缓存中的可用服务列表,最后通过负载均衡算法为消费方选择可用地址进行远程通信。

服务注册中心

服务注册中心是 SOFA 中间件的底层组件,用于存储所有服务提供方的地址信息以及所有服务消费方的订阅信息;它和服务消费方、服务提供方都建立长连接,动态感知服务发布地址变更并通知消费方。

软负载

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

指定调用地址

测试环境

服务注册中心让您在使用 SOFARPC 的时候,不用将地址硬编码在代码中,并且通过服务注册中心的服务发现的方案,实现负载均衡。但是,在开发及测试环境下,开发者经常需要绕过注册中心,只测试指定服务提供方,这时候可能需要点对点直连,您可以使用 SOFARPC 的 test-url 功能。

使用 test-url,只需要在 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 仅是提供给线下测试环境使用的一种 RPC 路由机制。一旦配置了 test-url,软负载的逻辑将会失效,请求将会直接发送到 test-url 配置的服务地址。
  • 使用该参数需要在 application.properties 中配置 run_mode=TEST

线上环境

线上环境不推荐使用 run_mode=TEST 配置来使 test-url 生效,如果在线上环境中部分 reference 也有指定调用地址的需求,请使用以下配置:

  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>

说明:

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