RPC 最重要的功能是获取对端地址,根据使用环境的不同,获取对端地址的服务路由策略主要有下述两种。
软负载
软负载即软件负载。当需要调用服务时,消费方根据软负载策略,从服务注册中心(SOFARegistry)推送到本地缓存的列表里,选择一个地址,再调用该地址所提供的服务。
SOFARPC 采用服务发布(ServicePublish)和引用(ServiceReference)模型,通过服务注册中心(SOFARegistry)动态感知服务发布,并将服务地址列表推送给已经引用该服务的消费方,更新消费方本地缓存中的可用服务列表,最后通过软负载策略,为消费方选择可用地址进行远程通信。
在使用 SOFARPC 的时候,使用服务注册中心就不用将服务地址硬编码在代码中。
软负载示意图

直连
在开发及测试环境下,开发者经常需要绕过注册中心,只测试指定服务提供方,这时候可能需要点对点直连来进行测试。该功能可以通过 SOFARPC 的 test-url
或 target-url
配置来实现。
具体使用环境分为下述 2 种:
本地环境:通过
run_mode=TEST & test-url
来实现直连。线上环境:推荐配置
target-url
来实现直连。说明配置了 test-url 或 target-url后,软负载阶段将会失效。 如果同时配置了 run_mode=TEST & test-url 和 target-url,将会直接使用 test-url 的配置。
本地环境
配置方式为:
在
application.properties
中配置run_mode=TEST
。在 xml 文件中配置服务引用时,在标签
sofa:binding.bolt
里面加上一个global-attrs
标签,里面放入一个test-url
的属性,属性值设置为需要调用的地址。
<sofa:reference id="sampleService" interface="com.alipay.test.SampleService">
<sofa:binding.bolt>
<sofa:global-attrs test-url="127.0.0.1:12200"/>
</sofa:binding.bolt>
</sofa:reference>
线上环境
线上环境不推荐使用 test-url
,推荐配置 target-url
,示例如下:
<sofa:reference id="sampelService" interface="com.alipay.test.SampleService">
<sofa:binding.bolt>
<sofa:route target-url="target-url:12200"/>
</sofa:binding.bolt>
</sofa:reference>
在文档使用中是否遇到以下问题
更多建议
匿名提交