千家信息网

如何分析Controller Manager 中的SharedInformer结构

发表于:2026-11-02 作者:千家信息网编辑
千家信息网最后更新 2026年11月02日,如何分析Controller Manager 中的SharedInformer结构,针对这个问题,这篇文章详细介绍了相对应的分析和解答,希望可以帮助更多想解决这个问题的小伙伴找到更简单易行的方法。绝大
千家信息网最后更新 2026年11月02日如何分析Controller Manager 中的SharedInformer结构

如何分析Controller Manager 中的SharedInformer结构,针对这个问题,这篇文章详细介绍了相对应的分析和解答,希望可以帮助更多想解决这个问题的小伙伴找到更简单易行的方法。

绝大多数Controller的实现都依赖一种特殊结构-SharedInformer,它主要负责订阅etcd上资源的变更并调用注册的Handlers。

SharedInformer相关的类结构如下图:

SharedInformer是一个复杂的嵌套结构,自底向上总共包含四层

Queue

DeltaFIFO结构实现了Queue(以及Store)接口,在内部使用一个叫做items的map来存储Delta数据。items的key是通过一个预先传入的keyFunc对每个入队的object计算出来的。

基于map的存储结构能够使得DeltaFIFO快速检索到任意一个内部元素(这也是为了实现Store接口),同时queue存储了元素的进入顺序。

Reflector

Reflector结构能够通过listWatcher监控etcd上的变更,实时同步到本地的store结构中。

Controller

Controller初始化了一个DeltaFIFO结构,并将它作为store创建了一个Reflector结构,用来监控特定的etcd资源的变更。listWatcher观察到的变更会被存储到DeltaFIFO中,同时Controller会不断消费DeltaFIFO中的元素,将它作为入参call构造时传入的Process Func。

sharedIndexInformer

sharedIndexInformer实现了SharedInformer接口,它用自己的HandleDeltas()方法作为Process Func来构造Controller。Controller检测到的所有资源变更都会回调sharedIndexInformer.HandleDeltas()。

indexer是一种cache结构,它存储了监控资源的最新数据。当Controller接收到变更的时候,可以通过indexer来获取变更数据在变更前的值。

sharedProcessor用来存储所有注册的Listener。当HandleDeltas被回调时,会触发sharedProcessor上的distribute()方法,来最终调用所有注册的Listeners。

通过以上四种数据结构的配合使用,最终实现了从资源监控到Listener回调的整个数据链路。

关于如何分析Controller Manager 中的SharedInformer结构问题的解答就分享到这里了,希望以上内容可以对大家有一定的帮助,如果你还有很多疑惑没有解开,可以关注行业资讯频道了解更多相关知识。

结构 存储 数据 资源 监控 分析 元素 接口 方法 问题 同时 更多 帮助 解答 复杂 易行 特殊 简单易行 不断 内容 数据库的安全要保护哪些东西 数据库安全各自的含义是什么 生产安全数据库录入 数据库的安全性及管理 数据库安全策略包含哪些 海淀数据库安全审计系统 建立农村房屋安全信息数据库 易用的数据库客户端支持安全管理 连接数据库失败ssl安全错误 数据库的锁怎样保障安全 互联网与科技 哈尔滨大商圈互联网科技有限公司 互联网品科技 米客互联网科技 上海亿帐通互联网科技 科技大学互联网专业好不好 银川新华互联网科技学校地址 温州喔噻互联网科技有限公司 互联网科技实习生岗位职责 呼和浩特新华互联网科技学院 链环科技传统企业怎么转型互联网 燊美集互联网科技有限公司 科技赋能视角下互联网保险发展 济南有互联网科技公司吗 烟台灵鸽互联网科技有限公司 合肥互联网科技公司公章图片 江苏互联网智能科技产品出厂价 版纳互联网科技选哪家 承德科技产业互联网平台 互联网大会出现的黑科技 互联网络科技有限公司 互联网科技作文 大白互联网科技 天扬科技互联网广告 深圳卡尔迅互联网科技有限公司怎么样 济南华为互联网科技产业总部基地 语蝶互联网科技有限公司 辽宁互联网新科技 互联网第三次科技革命特征 互联网科技融合创新
0