前言
上文介绍了SOFA-RPC 的几种调用方式,包括单向调用、同步调用、Future调用、回调,引入了泛化调用和过滤器。本文将对 SOFA-RPC 的高级功能,包括参数配置、自定义线程池、预热权重和自动故障剔除等。
正文
1. 参数配置
SOFABoot RPC Starter
提供了方便的参数设置方式。这些参数目前可以分为两个部分。一部分是如端口,注册中心地址等配置,这类配置在 application.properties
中。另一部分是如超时时间等配置,这类配置在 XML
中。
XML 配置
- 调用超时时间
如下是设置超时时间的方式,单位为 ms ,如果调用超过了这个时间则会抛出异常。服务端和客户端都可以设置,以客户端的超时时间设置优先。默认客户端为 3000 ,目前对 bolt,rest,dubbo 生效。
<sofa:binding.bolt>
<sofa:global-attrs timeout="5000"/>
</sofa:binding.bolt>
- 获取地址等待时间
如下是设置获取地址等待时间,单位为ms。在启动时如果服务引用方等待超过了这个时间则不会再等待地址,会继续启动。客户端设置,默认为-1,表示会一直等待到地址为止。目前对 bolt,rest 生效。
<sofa:binding.bolt>
<sofa:global-attrs address-wait-time="30000"/>
</sofa:binding.bolt>
- 建立连接超时时间
如下是设置建立连接超时时间,单位为 ms 。在建立连接时如果耗时超过了这个时间则会抛出异常。客户端设,默认为 5000。目前对 bolt,rest 生效。
<sofa:binding.bolt>
<sofa:global-attrs connect.timeout="30000"
</sofa:binding.bolt>
- 权重
如下是设置权重。客户端在发起调用时,如果采用的算法是随机调用,则会根据该权重来进行随机。服务端设置,默认为 100。目前对 bolt 生效。
<sofa:binding.bolt>
<sofa:global-attrs weight="200"/>
</sofa:binding.bolt>
- lazy 连接
默认情况下客户端在注册中心推送地址到客户端时,就立即建立好连接,这个过程通常是在第一次调用之前进行的。如果设置服务引用的属性 lazy 为 true,客户端在第一次调用时才和所要调用的远程地址建立连接。默认为 false。
如下设置 lazy 连接方式,将 lazy 属性设为 true。目前支持 bolt 和 dubbo 协议。
<sofa:reference id="lazyServiceReferenceBolt" interface="com.ostenant.sofa.rpc.example.lazy.LazyService">
<sofa:binding.bolt>
<sofa:global-attrs lazy="true"/>
</sofa:binding.bolt>
</sofa:reference>
- check 属性
默认情况下客户端在启动时,服务引用不要求存在可用的地址和连接。如果设置服务引用的属性 check 为 true,客户端在启动时,服务引用会检查是否存在对应的地址和连接,如果不存在会抛出异常。默认为 false。
如下设置 check 连接方式,将 check 属性设为 true。目前支持 bolt 和 dubbo 协议。
&l