-
Notifications
You must be signed in to change notification settings - Fork 922
Open
Description
看了几乎所有consul服务注册的代码,包括心跳检测等,发现服务的新增和修改是没有问题的。
但是同一个服务参数的变动,watch心跳检测代码是根据ServiceDescriptor.Id 来作为唯一标识来注册的,而ServiceDescriptor.Id是根据路径和具体的参数拼接生成的,这样让同一个path路径,但是参数变动的情况下,相当于ServiceDescriptor.Id变动了,但是之前注册的watch是另外参数的ServiceDescriptor.Id,导致这个变动永远watch检测不到,这种更新就只能重启consul,再重启服务,最后重启网关这样的,对于线上的服务其实是非常不友好的。
我开始想着能不能把watch的机制改成针对于ServiceDescriptor.RoutePath的这样的,但是如果是针对有函数重载的情况下,这样也是不合理的。
不知道上面的情况,作者有什么样好的思路,或者其实已经处理了上面的场景了,麻烦作者解答一下。
Metadata
Metadata
Assignees
Labels
No labels