首页 > 其他分享 >informer 架构

informer 架构

时间:2023-01-01 11:34:08浏览次数:44  
标签:DeltaFIFO 架构 Reflector client 事件 go informer Pod

Informer 架构

上图是整个 client-go 的完整架构图,或者说是我们要去实现一个自定义的控制器的一个整体流程,其中黄色图标是开发者需要自行开发的部分,而其它的部分是 client-go 已经提供的,直接使用即可。 由于 client-go 实现非常复杂,我们这里先对上图中最核心的部分 Informer 进行说明。在 Informer 的架构中包含如下几个核心的组件:

Informers 是 client-go 中非常重要得概念,接下来我们来仔细分析下 Informers 的实现原理,下图是 client-go 的官方实现架构图:

Reflector(反射器)

Reflector 用于监控(Watch)指定的 Kubernetes 资源,当监控的资源发生变化时,触发相应的变更事件,例如 Add 事件、Update 事件、Delete 事件,并将其资源对象存放到本地缓存 DeltaFIFO 中。

DeltaFIFO

DeltaFIFO 是一个生产者-消费者的队列,生产者是 Reflector,消费者是 Pop 函数,FIFO 是一个先进先出的队列,而 Delta 是一个资源对象存储,它可以保存资源对象的操作类型,例如 Add 操作类型、Update 操作类型、Delete 操作类型、Sync 操作类型等。

Indexer

Indexer 是 client-go 用来存储资源对象并自带索引功能的本地存储,Reflector 从 DeltaFIFO 中将消费出来的资源对象存储至 Indexer。Indexer 与 Etcd 集群中的数据保持完全一致。这样我们就可以很方便地从本地存储中读取相应的资源对象数据,而无须每次从远程 APIServer 中读取,以减轻服务器的压力。

这里理论知识太多,直接去查看源码显得有一定困难,我们可以用一个实际的示例来进行说明,比如现在我们删除一个 Pod,一个 Informers 的执行流程是怎样的:

  1. 首先初始化 Informer,Reflector 通过 List 接口获取所有的 Pod 对象

  2. Reflector 拿到所有 Pod 后,将全部 Pod 放到 Store(本地缓存)中

  3. 如果有人调用 Lister 的 List/Get 方法获取 Pod,那么 Lister 直接从 Store 中去拿数据

  4. Informer 初始化完成后,Reflector 开始 Watch Pod 相关的事件

  5. 此时如果我们删除 Pod1,那么 Reflector 会监听到这个事件,然后将这个事件发送到 DeltaFIFO 中

  6. DeltaFIFO 首先先将这个事件存储在一个队列中,然后去操作 Store 中的数据,删除其中的 Pod1

  7. DeltaFIFO 然后 Pop 这个事件到事件处理器(资源事件处理器)中进行处理

  8. LocalStore 会周期性地把所有的 Pod 信息重新放回 DeltaFIFO 中去

标签:DeltaFIFO,架构,Reflector,client,事件,go,informer,Pod
From: https://www.cnblogs.com/geraldkohn/p/17017876.html

相关文章

  • Shared Informer 源码分析
    SharedInformer源码分析我们分析了Indexer组件的实现,实际上最开始的时候我们在Informer示例中通过Informer的Lister获取的资源对象数据就来自于Indexer,当然除......
  • nacos注册中心单节点ap架构源码解析
    一、注册流程单nacos节点流程图如下:流程图可以知,Nacos注册流程包括客户端的服务注册、服务实例列表拉取、定时心跳任务;以及服务端的定时检查服务实例任务、服务实例更新......
  • autosar分层架构
    AUTOSAR分层一、应用层:通过端口(PORT)交互,每个SWC可以包含一个或者多个实体(RunnableEntity),可由RTE事件触发。原子SWC包括应用软件SWC,传感器SWC,ECU抽象软件SWC等......
  • .NET 云原生架构师训练营(基于 OP Storming 和 Actor 的大型分布式架构二)--学习笔记
    目录为什么我们用OrleansDaprVSOrleansActor模型Orleans的核心概念结合OPStorming的实践结合OPStorming的实践业务模型设计模型代码实现业务模型我们可以把关键......
  • sso单点登录系统架构
    sso单点登录系统架构一、单点登录系统单点登录(sso系统)主要用于解决公司内多个系统间的用户登录问题。在一个多系统共存的环境下,实现用户在一个系统登录后,访问其他系统......
  • 大数据系统架构
           ......
  • Linux运维架构师、SRE技术图谱
    Web服务器:apache、tomcat、nginx、lighttpd、varnish监控:nagios、ganglia、cacti、zabbix、Prometheus自动部署:ansible、salt、puppet、cobbler配置管理:puppet......
  • Azure DevOps 的架构窥探
    工作的缘故,接触TFS(TeamFoundationServer)挺多的,现在改名为AzureDevOps,分为可私有化部署版本AzureDevOpsServer,简称ADS,以及SAAS版本AzureDevOpsServices。......
  • 架构中实时引擎与离线渲染的主要优势
    对于任何从事建筑和AEC行业的人来说,评估使用像Unity这样的实时引擎与传统离线渲染引擎相比的所有优势都是必不可少的。考虑使用Unity的建筑或室内设计行业的可视化,以及通......
  • 超融合架构
    超融合基础架构(Hyper-ConvergedInfrastructure)是一种集成了虚拟计算资源和存储设备的信息基础架构。在这样的架构环境中,同一套单元设备中不但具备了计算、网络......