servicecomb-java-chassis icon indicating copy to clipboard operation
servicecomb-java-chassis copied to clipboard

服务启动时,有什么机制能控制先不注入流量,等服务配置加载初始化都完成后,再注入流量吗?

Open sunshinexp1 opened this issue 2 years ago • 4 comments

现在主要是在一种动态扩容场景,比如A调用B,现在需要增加一个B服务的实例B1,由于B1启动时,需要拉取很多配置信息,需要耗费一定的时长,若这个时候A来调用B1,则会出现请求调用失败,想看看ServiceComb有没有机制来避免这种问题,比如B1启动完成时,再通知服务中心A可以调用B1了。

sunshinexp1 avatar Jul 02 '22 08:07 sunshinexp1

可以考虑下扩展负载均衡策略。 或者使用灰度发布,升级前先做好引流。

liubao68 avatar Jul 02 '22 08:07 liubao68

请问指导文档里负载均衡章节的“根据实例属性进行路由转发”,是否可以完成上述功能? 服务提供者B默认的tag都是notReady,只有在B初始化完成后,B中的代码把自己的tag设置为Ready; 消费者配置只访问tag为Ready的B的实例。 如果可以实现,还有个疑问,下面文档中这句话如何理解“实例属性可以在microservice.yaml中指定,也可以通过服务中心的API进行修改”,在代码中需要如何设置tag的属性,还需要单独调用服务中的API接口吗? image

sunshinexp1 avatar Jul 07 '22 01:07 sunshinexp1

可以监听微服务的启动事件,保证相关配置在B1实例注册事件之前拉取完成

fanjiwang1992 avatar Jul 24 '22 12:07 fanjiwang1992

请问指导文档里负载均衡章节的“根据实例属性进行路由转发”,是否可以完成上述功能? 服务提供者B默认的tag都是notReady,只有在B初始化完成后,B中的代码把自己的tag设置为Ready; 消费者配置只访问tag为Ready的B的实例。 如果可以实现,还有个疑问,下面文档中这句话如何理解“实例属性可以在microservice.yaml中指定,也可以通过服务中心的API进行修改”,在代码中需要如何设置tag的属性,还需要单独调用服务中的API接口吗? image

可以调实例属性更新接口,在配置拉取完成后动态更新自身的实例属性

fanjiwang1992 avatar Jul 24 '22 12:07 fanjiwang1992