对于任何一个线上应用来说,发布、扩容、缩容、重启等操作不可避免。在应用启动各阶段,无损上下线能提供相应的保护能力,具体功能包含服务预热和延迟注册。本文介绍如何配置无损上线。
前提条件
注意事项
对于Spring Cloud应用,当前仅支持利用Nacos、ZooKeeper类型注册中心构建的应用进行服务预热。
Spring Cloud服务预热功能是基于Spring Cloud框架默认的ZoneAwareLoadBalancer负载均衡类实现的,如果应用本身修改了该配置,会导致服务预热功能失效。
对于Dubbo应用来说,小流量预热能力会使用mse-loadbalance作为Dubbo负载均衡器,如果我们已经设置了Dubbo负载均衡器,那么需要取消设置,否则mse小流量预热能力不会生效。
网关应用一般不通过注册中心调用,而是通过直接对外暴露API的方式调用,因此MSE当前所支持的小流量预热功能对此类应用不生效。
服务小流量预热
在较大流量下,刚启动的冷系统直接处理大量请求可能由于应用内部资源初始化不彻底从而出现请求阻塞、报错等问题。此时通过服务预热功能,在应用刚启动阶段通过小流量帮助应用在处理大量请求前完成初始化,可有效解决该类上线异常问题。
登录MSE治理中心控制台,并在顶部菜单栏选择地域。
在左侧导航栏,选择 ,然后单击目标应用的资源量卡片。
在目标应用详情页面的左侧导航栏,单击流量治理,然后选择无损上下线页签。
在无损上下线页面的无损上线区域,单击预热时长(秒)右侧的。在配置无损上线对话框,配置预热时长(秒),然后单击确定。
预热时长:应用实例下一次启动的预热时间,默认预热时长为120秒。服务预热时长设置范围为0~86400秒(即24小时)。
说明建议您在首次使用服务预热功能时,选择默认值。如果在使用默认值预热服务的过程中发现预热效果不明显,出现流量损失,可以通过调节该参数进行优化。
打开无损上线右侧的开关,并在提示信息对话框,单击确定。
需要服务提供者和服务消费者同时开启无损上线右侧的总开关,流量预热功能才会生效。
服务延迟注册
对于初始化过程繁琐的应用,由于注册通常与应用初始化过程同步进行,从而出现应用还未完全初始化就已经被注册到注册中心供外部消费者调用,此时直接调用可能会导致请求报错。通过设置延迟注册,可让应用在充分初始化后再注册到注册中心对外提供服务。
登录MSE治理中心控制台,并在顶部菜单栏选择地域。
在左侧导航栏,选择 ,然后单击目标应用的资源量卡片。
在目标应用详情页面的左侧导航栏,单击流量治理,然后选择无损上下线页签。
在无损上下线页面的无损上线区域,配置延迟注册时间(秒),设置范围为0~3600秒(即1小时),完成配置后单击。
打开无损上线右侧的开关,并在提示信息对话框,单击确定。
应用重启后,延迟注册即可生效。