本文介紹 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
異常。