全部产品

预热转发

更新时间:2020-04-29 17:04:38

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

也就是说,预热转发功能是指机器在启动完成后的“一段时间”内将其接收的请求转发至集群内的其它机器,等过了这段时间后再正常接收请求。这段时间内接收的请求既可以全部转发至其它机器,也可以按照一定比例转发,比如 80% 的请求转发出去,20% 自身系统处理。

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

注意事项

要使用预热转发功能,您需要特别注意以下特别要求。

  • 服务端在同一台宿主机上启动时,预热转发不生效。
  • 先启动的服务还在预热中时,预热转发不生效。
  • 先启动的服务没有配置预热转发时,后启动的服务不会转发到没配置预热转发的机器。
  • 所有预热转发的机器,BOLT 端口必须一致。

RPC 转发配置

配置的方式有两种:

  • 直接转发到 IP

    rpc.transmit.url = x.x.x.x

    不论何时都直接转发到 x.x.x.x,和 rpc.transmit.url=address:x.x.x.x 有同样效果。

  • 配置预热与权重

    rpc.transmit.url=weightStarting:0.3,during:60,weightStarted:0.2,address:x.x.x.x,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。