优雅启动 实现 [1] #
调用方发起的RPC 调用流程是怎样的,调用方应用通过服务发现能够获取到服务提供方的 IP 地址,然后每次发送请求前,都需要通过负载均衡算法从连接池中选择一个可用连接。那这样的话,我们是不是就可以让负载均衡在选择连接的时候,区分一下是否是刚启动不久的应用?对于刚启动的应用,我们可以让它被选择到的概率特别低,但这个概率会随着时间的推移慢慢变大,从而实现一个动态增加流量的过程。
首先对于调用方来说,我们要知道服务提供方启动的时间,这个怎么获取呢?我这里给出两 种方法,一种是服务提供方在启动的时候,把自己启动的时间告诉注册中心;另外一种就是 注册中心收到的服务提供方的请求注册时间。
调用方通过服务发现获取服务提供方的IP地址,并通过负载均衡算法选择一个可用连接进行RPC调用。为了实现动态增加流量的过程,可以让负载均衡在选择连接时区分是否是刚启动不久的应用。可以通过以下两种方法获取服务提供方的启动时间:一种是服务提供方在启动时告知注册中心自己的启动时间,另一种是注册中心记录服务提供方的注册时间。[gpt 总结]
延迟加载 [1] #
上述问题的解决方法是将应用启动过程中注册服务的步骤延迟到应用启动完成后,以避免在应用启动未完成时接受请求。此外,可以在应用启动完成后,预先加载和初始化相关资源,如缓存数据,以降低请求处理错误的概率。 [gpt总结]
参考 #
- 《14 | 优雅启动:如何避免流量打到没有启动完成的节点?》