controller-informer

news2024/11/28 18:44:35

推翻了自己的三次理论,最终确定informer流程。自己梳理,有错请提示,以便及时改正
一、流程图

在这里插入图片描述
在这里插入图片描述

图1为整体流程,图2位细节流程
二、主要组件

  1. Reflector-负责与API-Server进行绑定
  2. Delta FIFO-增量先进先出队列
  3. Indexer-本地缓存
  4. ResourceEventHandler-可以注册EventHandler的client(用于回调)
  5. Work Queue-工作队列,负责用户处理
  6. Handler-用户的Handler,负责处理真正的业务逻辑

三、步骤解析

  1. informer分两步,一步为k8s内部处理,一步为Custom用户自行处理
  2. Reflector负责ListAndWatch与api-server连通。List短连接一次性获取所有最新版本的API对象,WATCH长链接“监听”API对象的变化
  3. 获取到的数据推入Delta FIFO队列中,并同时更新Indexer本地缓存数据(key=>val格式)
  4. 从Delta FIFO中pop一个数据,触发EventHandler回调,将key推送到Work Queue队列
  5. 从Work Queue中pop一个key,然后根据key去Indexer取到val。根据当前的EventHandler(增、删、更新)进行创建pod操作。
    四、细节分析
  6. 第3步和第4步,用了两个队列的原因,为了监听获取到的数据和用户处理数据时间不一致。导致用户时间处理过长,进而阻塞住Delta FIFO。导致崩死。分成两个队列处理解耦,”消费者“/”生产者“进行区分
  7. resync机制,该机制是通过定时从API-Server读取最新数据更新到本地缓存indexer中,确保本地缓存的一致性。该机制会触发EventHandler的update操作。会重新讲key推入到Delta FIFO中,逐步到达Work Queue后,通过判断新的(LIST过来的)和老的(曾经indexer中的)数据的版本号进行比对,如果相同则跳过,否则更新。该机制是为了确保Custom Controller在最后一步创建pod时失败。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/26713.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

Linux--系统基础磁盘管理相关知识详解笔记

1.磁盘知识体系结构 第一个层次:磁盘相关物理知识 内部结构 外部结构 读写数据原理 第二个层次:磁盘阵列知识 磁盘弹性扩展知识 ​ 阵列:将多块磁盘整合为一块 ​ (1)可以存储更大容量数据 ​ (2&#…

[附源码]java毕业设计心理问题咨询预约系统

项目运行 环境配置: Jdk1.8 Tomcat7.0 Mysql HBuilderX(Webstorm也行) Eclispe(IntelliJ IDEA,Eclispe,MyEclispe,Sts都支持)。 项目技术: SSM mybatis Maven Vue 等等组成,B/S模式 M…

docker启动mysql实例之后,docker ps命令查询不到

1.首先拉取mysql,创建并启动实例 #docker pull mysql:5.7 # docker run -p 3306:3306 --name mysql \ -v /mydata/mysql/log:/var/log/mysql \ -v /mydata/mysql/data:/var/lib/mysql \ -v /mydata/mysql/conf:/etc/mysql \ -e MYSQL_ROOT_PASSWORDroot \ -d mysql:5.7…

Softing DTS.monaco 9.03新版发布,带有远程接口、并行诊断和动态VCI处理功能

2022年10月24日,Softing推出了“诊断工具集(DTS)”的新版本——Softing DTS.monaco 9.03。9.03版的诊断测试仪Softing DTS.monaco包含了很多新功能,将使您的工作变得更加简单。由于集成了一个新的连接插件(动态VCI处理…

XCZU19EG_FFVC1760芯片的封装和管脚

首先写这篇文章是因为我有接触到这款芯片,但是在做接口约束时,有许多地方并不是很清楚,因此在这里对官方文档(ug1075)进行了通读,只翻译了我觉得我需要用到和需要了解的地方,具体是什么还需要大家去自己阅读官方文档。…

LeetCode 319 周赛

纪念本狗第三次AK!!! 2469. 温度转换 给你一个四舍五入到两位小数的非负浮点数 celsius 来表示温度,以 摄氏度(Celsius)为单位。 你需要将摄氏度转换为 开氏度(Kelvin)和 华氏度&a…

RK3568平台开发系列讲解(图像篇)JPEG图像处理

🚀返回专栏总目录 文章目录 一、JPEG文件格式和libjpeg编译二、libjpeg接口函数三、JPEG文件解析沉淀、分享、成长,让自己和他人都能有所收获!😄 📢我们今天来讲解JPEG图像处理。 一、JPEG文件格式和libjpeg编译 JPEG的后缀名为.jpg的图像文件。对于图像内容和信息相同…

Windows安装docker踩坑

安装过程中出现一下问题,步骤如下 菜鸟教程安装windows docker https://www.runoob.com/docker/windows-docker-install.html 启动后报错wsl2错误,因为本机运行的是wsl1,进行解决 wsl -l -v查看运行的虚-了拟机的版本以及状态 因为默认运…

一文带你学习,动态规划算法

一文带你学习,动态规划算法1.什么是动态规划(DP)2.青蛙跳台阶问题暴力递归解法自顶向下的递归解法自底向上的动态规划解法3.动态规划的解题套路穷举分析确定边界确定最优子结构写出状态转移方程4.经典线性DP:数字三角形5.01背包&a…

金鸡奖提名电影《巴林塔娜》,主题曲和腾格尔合作是未卜先知吗

在刚刚结束的第三十五届金鸡奖上,由十月天传媒推送的电影《巴林塔娜》,获得了最佳提名奖的荣誉。根据资料显示,十月天传媒是来自北京的一家公司,也是国内最具专业的综合性文化产业运营机构。 话说十月天传媒的董事长袁熙伯先生&am…

Qt OpenGL(二十四)——Qt OpenGL 核心模式-实现彩色三角形

Qt OpenGL(二十四)——Qt OpenGL 核心模式-实现彩色三角形 我们之前在Qt OpenGL 核心模式版本中,看到了Qt关于OpenGL的例程,是一个旋转的彩色三角形,本篇文章我们就使用OpenGL核心模式,实现这个彩色三角形。 图1 旋转的三角形 一、彩色三角形 上一篇文章(Qt OpenGL 核心…

儿童护眼灯AA好还是AAA好?双十二精选国AA儿童护眼灯

儿童护眼灯选择国AA级好! 这是为什么呢?我给大家分析一下,简单来说,我国对台灯的质量要求是根据《读写作业台灯性能要求》中,当中将分为国A和国AA级两种标准,主要是对照度和会走的均匀度进行划分的&#x…

失物招领|基于Web的校园失物招领系统的设计与实现

作者主页:编程千纸鹤 作者简介:Java、前端、Pythone开发多年,做过高程,项目经理,架构师 主要内容:Java项目开发、毕业设计开发、面试技术整理、最新技术分享 收藏点赞不迷路 关注作者有好处 引言&#xff…

Haproxy负载均衡集群

目录 一、HAPorxy简介 二、HAPorxy优点 三、理解四层和七层负载均衡 四、HAProxy与LVS的区别 五、使用Haproxy搭建web群集 1、部署2台web服务器 2、编译安装Haproxy 3、客户端访问测试 六、总结 1、HTTP请求的两种方式 2、haproxy配置文件重要参数说明 一、HAPorxy简介…

c语言:初识指针

初识指针一.指针是什么问题一:指针,指针变量,内存,地址,编号的关系问题二:为什么指针大小是4或8字节二.如何使用指针三.指针类型问题三:既然指针是4个字节,那它是如何放下long类型的…

数据库:Centos7安装解压版mysql5.7图文教程,亲测成功

目录 1、卸载Centos7默认自带的mariadb数据库,避免冲突 2、下载解压版mysql并安装 3、配置mysql 4、mysql客户端访问 Centos7安装mysql5.7解压版完整教程避免踩坑,可以把数据目录和系统目录分开设置。 1、卸载Centos7默认自带的mariadb数据库&#xff0c…

Qt5开发从入门到精通——第十二篇一节(Qt5 事件处理及实例——多线程及简单实例)

提示:欢迎小伙伴的点评✨✨,相互学习c/c应用开发。🍳🍳🍳 博主🧑🧑 本着开源的精神交流Qt开发的经验、将持续更新续章,为社区贡献博主自身的开源精神👩‍🚀 文…

菜鸟Linux(3):环境变量

"Oh heiya New World!" 一、什么是环境变量? 谈起环境变量,也许我们在敲代码的层面上并不关心。在链接的时候,我们从来没有告诉编译器,去哪里找动态库去链接;我们也从来没有告诉进程 执行该进程的用户是谁?以及在命令行解释器时,启动一个进程…

深度学习基础--神经网络(4)参数更新策略,梯度法

导数 导数:表示某个瞬间的变化量,公式定义: df(x)dxlimh→0f(xh)−f(x)h(4.4)\frac{df(x)}{dx} lim_{h \to 0}\frac{f(x h)-f(x)}{h} \tag{4.4} dxdf(x)​limh→0​hf(xh)−f(x)​(4.4) 求导的代码实现: import numpy as np i…

SSM框架-Spring(三)

目录 1 Spring对事务的支持 1.1 引入事务场景 1.2 spring对事务的支持 Spring实现事务的两种方式 Spring事务管理API 1.3 事务属性 1.3.1 事务传播行为 1.3.2 事务隔离级别 1.3.3 事务超时 1.3.4 只读事务 1.3.5 异常回滚事务 1.4 事务的全注解式开发 1.5 声明式事…