预热转发

集群中某台机器刚启动的一段时间(称之为“预热期”)内,如果收到的请求过多,可能会影响机器性能和正常业务。RPC 框架可通过预热转发功能将处于预热期机器的请求转发给集群内其它机器,当机器过了预热期后再恢复正常。

您可以手动指定预热期内请求转发的比例,比如 80% 的请求转发出去,20% 自身系统处理。

与 RPC 压测转发不同的是,RPC 预热转发仅适用于应用启动后的一段时间,而压测转发则是长期生效。

注意事项

要使用预热转发功能时,您需要注意以下要求:

  • 服务端在同一台主机上启动时,预热转发不生效。

  • 先启动的服务还在预热中时,预热转发不生效。

  • 先启动的服务没有配置预热转发时,后启动的服务不会转发到没配置预热转发的机器。

  • 所有预热转发的机器,BOLT 端口必须一致。

RPC 转发配置

配置的方式有两种:

  • 直接转发到 IP

    application.properties 增加如下参数:

    rpc.transmit.url = 10.**.**.2

    数据无论何时都直接转发到指定 IP,和 rpc.transmit.url=address:10.**.**.2 效果同样。

  • 配置预热与权重

    application.properties 增加如下参数:

    rpc.transmit.url=weightStarting:0.3,during:60,weightStarted:0.2,address:10.**.**.2,uniqueId:core_unique
    • weightStarting:预热期内的转发权重或概率。RPC 框架内部会在集群中随机找一台机器以此权重转出或接收。

    • during:预热期的时间长度。单位为秒。

    • weightStarted:预热期过后的转发权重。将会一直生效。

    • address:预热期过后的转发地址。将会一直生效。

    • uniqueId:同 appName 多集群部署的情况下,要区别不同集群时可配置此项。指定一个自定义的系统变量,保证集群唯一即可。core_unique 是一个 application.properties 的配置,可以动态替换。

说明

application.properties 中可以配置转发请求超时时间,例如 rpc_transmit_url_timeout_tr=8000。 单位为 ms,默认为 10000 ms。