searchusermenu
  • 发布文章
  • 消息中心
点赞
收藏
评论
分享
原创

Istio的DiscoveryServer解析

2023-08-21 03:43:33
37
0

一、背景

Istio的Discovery Server负责收集和分发服务之间的网络配置信息,以支持服务之间的通信和流量管理。它充当了一个中心化的组件,协调了服务的发现、负载均衡、流量路由等任务,从而帮助管理和控制微服务架构中的通信流量。它与Envoy代理协同工作,帮助服务网格中的各个组件进行动态发现和配置更新。

二、Discovery Server结构

discoveryServer的结构体详细属性如下:

2.1 Environment

Environment为Pilot提供了聚合环境API接口,主要结构有:

Environment集成了Istio的服务注册和发现功能的服务和Istio规则配置的存储结构。以及对MeshConfig的变化,做了Watch机制来动态更新MeshConfig。最重要的结构是PushContext,它是DiscoveryServer推送过程中,跟踪推送的状态、Metrics和错误。推送后会重置Metrics,一开始所有值都为零,当推送完成时,状态会重置。

2.2 ConfigGenerator

 

ConfigGenerator的作用是生成XDS响应,对应的是LDS、RDS、CDS、EDS的构建,也是DiscoveryServer主要的功能。

2.3 pushChannel

pushChannel是用于去抖动的缓冲区,在去抖动后,pushRequest将被发送到pushQueue。

2.4 pushQueue

pushQueue去抖动之后和真正的xds推送之前使用的缓冲区。

2.5 PushContext

pushContext作为推送的上下文在DiscoveryServer配置推送过程中传递,包括了推送状态、监控指标、错误等信息,还包括了规则导出的配置决定是否推送该规则;vs、dr的规则索引记录;envoyFilter和wasm插件的命名空间配置;认证和授权策略;网格配置等信息。

三、DiscoveryServer运行原理

0条评论
0 / 1000