本文介绍 SOFARPC 可用的配置项和常见配置。
基础配置项说明
您可以根据自身环境的需求,在 application.properties
文件中添加以下配置项:
配置项 | 类型 | 说明 | 默认值 |
| BOOLEAN | 本地优先调用开关。 | false |
| STRING | RPC 运行模式,根据实际环境设置。 | 空 |
| INTEGER | TR 端口号。 | 12200 |
| STRING | 服务器绑定固定网卡。 | 空 |
| STRING | 服务器绑定本地 IP 范围。 | 空 |
| INTEGER | TR 服务器线程池最小线程数。 | 20 |
| INTEGER | TR 服务器线程池最大线程数。 | 200 |
| INTEGER | TR 服务器线程池队列大小。 | 0 |
| INTEGER | Bolt 端口号。 | 12200 |
| INTEGER | Bolt 服务器线程池最小线程数。 | 20 |
| INTEGER | Bolt 服务器线程池最大线程数。 | 200 |
| INTEGER | Bolt 服务器线程池队列大小。 | 0 |
| INTEGER | SOFAREST 端口号。 | 8341 |
| STRING | 预热与权重配置。 | 空 |
| INTEGER | 预热调用超时时间,单位 ms。 | 0 |
| INTEGER | RPC 服务处理性能日志打印阈值,单位 ms。 | 300 |
本地优先调用模式
当本地启动多个 SOFA 应用时,要使这几个应用能优先相互调用,而不需要经过软负载过程,只需要在 application.properties
中加入 sofa_runtime_local_mode=true
即可。
但是 sofa_runtime_local_mode
这个配置依然需要依赖于配置中心推送下来的地址。拿到服务提供方地址列表后,服务消费方会优先选择本地的 IP 地址进行服务调用。如果开发者所处的工作空间没有配置中心,则需要指定服务提供方地址进行调用,具体参见 路由与配置中心。
application.properties:
run_mode=TEST
<!--服务应用方配置-->
<sofa:reference ...>
<sofa:binding.bolt>
<global-attrs test-url="localhost:12200"/>
</sofa:binding.bolt>
</sofa:reference>
IP 或网卡绑定
SOFARPC 发布服务地址的时候,只会选取本地的第一张网卡的 IP 发布到配置中心,如果有多张网卡(如在 SOFAStack 平台上,有内网 IP 和外网 IP),则需要设置 IP 选择策略。
SOFARPC 提供了两种方式选择 IP:
rpc_bind_network_interface
指定具体的网卡名进行选择,如:
rpc_bind_network_interface=eth0
。rpc_enabled_ip_range
指定 IP 范围进行绑定,格式:
IP_RANGE1:IP_RANGE2,IP_RANGE
。例如,rpc_enabled_ip_range=192.168.1:192.168.2,10
表示 IP 范围在192.168.1.0~192.168.2.255
和10.0.0.0
~
10.255.255.255
内的才会选择。说明SOFAStack 平台的内网地址均绑定在 eth0 网卡上,推荐直接使用
rpc_bind_network_interface=eth0
配置。如果应用运行在其它非 SOFAStack 平台上,请查看运行机器的内网地址自行修改。查看机器地址的命令如下:Windows 系统:
ipconfig
Mac 和 Linux 系统:
ifconfig
TR 线程池配置
在 application.properties
文件中使用以下选项配置 TR 线程池信息:
com.alipay.sofa.rpc.bolt.thread.pool.core.size
:最小线程数,默认 20。com.alipay.sofa.rpc.bolt.thread.pool.max.size
:最大线程数,默认 200。com.alipay.sofa.rpc.bolt.thread.pool.queue.size
:队列大小,默认 0。
TR 采用了 JDK 中的线程池 ThreadPoolExecutor
。当核心线程池扩张时,先涨到最小线程数大小。当并发请求达到最小线程数后,请求被放入线程池队列中。队列满了之后,线程池会扩张到最大线程数指定的大小。如果超过最大线程数则会抛出 RejectionException
异常。