Map-over-xds如何对接第三方注册中心?接包含哪些方法?推送map的时机有哪几类
1条回答
关注编写 MCP-over-XDS server。然后将该server的地址配置到pilot 的configSource 参数中。pilot 启动的时候,就会向目的 MCP-over-XDS server 发起订阅请求,并建立 grpc 链接。MCP-over-XDS server 读取 注册中心的数据,并转换为ServiceEntry,然后 push 给 pilot。pilot接受到数据后,会对比内存中的数据,保证数据一致。

其中 MCP-over-XDS server 主要包含两部分:
一部分是Service watcher,用于监听服务注册中心,一旦有服务变更,就需要触发一次MCP推送,将最新的服务信息同步给istio。
另一部分是XDS grpc server,用于向istiod推送MCP协议的数据
要对接一个服务注册中心,只需实现Registry接口即可

接口包含3个方法:
AppendServiceChangeHandler:添加“服务更新时需要触发的回调函数”,也就是说,在发现该注册中心的服务变更时,需要触发serviceChanged回调函数
Run:运行service watcher,开始监听注册中心
ServiceEntries:返回目前注册中心中的所有服务,以istio ServiceEntry的形式输出
触发XDS grpc server推送MCP的时机有2类:
istiod启动时,会向mcp server发送一个初始(initial)请求,获取当前注册中心的所有服务服务信息
注册中心的服务变更时
在发生上述事件后,grpc server会调用Service watcher的ServiceEntries方法,获取到最新的服务信息,并用MCP协议包装,最终作为XDS协议的payload发送给istiod。
推送的过程存在一个防抖机制(参考istio推送XDS的过程),目的是为了避免频繁的服务更新导致多次MCP推送。防抖会将短时间内的多次更新事件合并为一次,减轻推送压力。
本回答被题主选为最佳回答 , 对您是否有帮助呢?解决 无用评论 打赏 举报