当前位置: 首页 > news >正文

公司网站做的很烂白杨seo

公司网站做的很烂,白杨seo,响应式网站开发需要的条件,免费外链发布Client-go 主要用在 k8s 控制器中 什么是 k8s Informer Informer 负责与 kubernetes APIServer 进行 Watch 操作,Watch 的资源,可以是 kubernetes 内置资源对象,也可以 CRD。 Informer 是一个带有本地缓存以及索引机制的核心工具包&#x…

Client-go 主要用在 k8s 控制器中

什么是 k8s Informer

Informer 负责与 kubernetes APIServer 进行 Watch 操作,Watch 的资源,可以是 kubernetes 内置资源对象,也可以 CRD。

Informer 是一个带有本地缓存以及索引机制的核心工具包,当请求为查询操作的时候,会优先从本地缓存内存去查询数据,而 创建、更新、删除这类操作,则会根据事件通知写入队列 DeltaFIFO 中,同时对应的事件处理过后,更新本地缓存,使得本地缓存与 ETCD 的数据保持一致性。

Informer 内部主要组件

  • Reflector:使用 List-Watch 来保证本地缓存数据的准确性和顺序一致性。List 从 k8s APIServer 中获取该资源的所有实例,得到最新的 ResourceVersion,然后使用 Watch 方法监听该方法resourceVersion之后的所有变化,如果发现对象的实例有如:Added、Updated、Deleted 动作,Reflector 收到”事件通知“,并利用反射机制将监听的结果实例化成具体的对象,然后将资源对象的变化事件存到本地队列 DeltaFIFO 中。
  • DeltaFIFO:是一个增量的队列,记录了资源变化过程,Reflector 就相当于队列的生产者。这个组件可以拆分为两个部分来理解。FIFO 就是一个队列,拥有队列基本操作方法如ADD、UPDATE、DELETE、LIST、POP及CLOSE等,而Delta是一个资源对象存储,保存存储对象的消息类型如 Added、Updated及Deleted 等。
  • LocalStore(Indexer):Informer 不断从 DeltaFIFO 中读取增量。如果遇到事件类型是 Added操作,那么 Informer 会把这个增量对象保持到本地缓存里头,并且还为它创建索引;如果遇到类型为 Deleted 操作,那么 Informer 会在本地缓存删除该对象。此外,LocalStore 不仅用来存储资源对象,而且还自带索引功能的本地存储,LocalStore(Indexer) 与 Etcd 中的数据是完全一致的,当要查询 (Get 或 List)k8s 对象时,可直接请求 LocalStore,这样就减少 Kubernetes APIServer 的资源交互压力。
  • Workqueue:DeltaFIFO 在同步完 LocalStore 后,会 Pop 这个事件到 Controller 中, Controller 会调用事先注册的 ResourceEventHandler 回调函数(如 OnAdd、OnUpdate、 OnDelete)进行处理, 回调函数处理得到的 obj-key放入 Workqueue 中,供 Worker 中的业务逻辑处理。

List-Watch

List-Watch 机制是 k8s 中的异步消息通知机制,通过它能有效的确保了消息的实时性、顺序性及可靠性。

List-Watch 分为两个部门:

  • List 负责调用资源对应的 k8s APIServer 的 RESTful API 获取全局数据列表,并且同步到(本地缓存中)DeltaFIFO。

  • Watch 负责监听资源的变化,并调用相应事件处理函数进行处理,同时维护更新本地缓存,使得本地队列与 Etcd 总数据保持一致。

List 是基于 HTTP 中的短链接实现,Watch 则是基于 HTTP 长链接实现的,Watch 使用长链接方式是为了减轻 k8s APIServer 的访问压力。

Reflector

Reflector 是client-go 中用来监听指定资源的组件,当资源发生变化的时候如ADDED、UPDATE及DELETE操作时,会以事件的形式存入本地队列,然后有对应的方法处理。

在 Reflector 中,核心的部分分别是 List-Watch,其他功能基本都是围绕它来搞的。

在实例化 Reflector 的过程中,其中有ListerWatcher的接口对象,这个结构体对象有两个方法,分别是List和Watch这两个方法实现List-Watch功能。

Reflector 核心逻辑:

  • List:调用List方法获取资源全部列表数据,转换为资源对象列表,然后保存到本地缓存中,

  • 定时同步:定时器定时触发同步机制,定时更新缓存数据,在Reflector结构体对象中,是可以配置定时同步的周期时间的。

  • Watch:监听资源的变化,并且调用对应的事件处理函数来处理

Reflector 组件对于数据更新同步,都是基于 ResourceVersion 来进行,每个资源对象都会有 ResourceVersion 这个属性,当数据发生变化时候 ResourceVersion 也会将以递增的形式更新,这样就确保事件的更新顺序了。

DeltaFIFO

DeltaFIFO 是一个增量的本地队列,记录资源对象的变化过程。它生产者是 Reflector 组件,将监听到的对象,同步到 DeltaFIFO中。

  • FIFO 是一个先进先出的本地队列,负责接收 Reflector 传递过来的事件,并将其按照顺序存储,然后等待事件的处理,若同时出现多个相同的事件,则会被处理一次。FIFO 是队列那么它也会拥有队列相关操作的方法,可以通过 Queue 这个接口对象来实现队列需求的方法的,同时还根据需要扩展一些其他的方法如Pop,AddIfNotPresent等。

  • Delta 是一个资源对象的存储,有两个属性分别是 Type 和 Object

    • Type 表示这个事件类型,如Added表示增量,Update 表示更新等

    • Object 是一个接口类型,它表示k8s 资源对象如Pod和Service等。

总结:

Reflector 的主要作用是通过 Kubernetes Watch API 监听某种 resource 下的所有事件;DeltaFIFO 和 LocalStore 是 Informer 的两级缓存;Lister 主要是被调用 List/Get 方法;Processor 中记录了所有的回调函数实例(即 ResourceEventHandler 实例),并负责触发这些函数。

  • https://github.com/cloudnativeto/sig-kubernetes/issues/11
http://www.yayakq.cn/news/349298/

相关文章:

  • 深圳网页网站设计没有公司可以做网站吗
  • 网站建设制作fash深圳品牌女装排行榜前50名
  • 网站站点管理在哪里wordpress编辑器共存
  • 做玉的网站成都的网站建设公司哪家好
  • 岳阳网站建设哪里有专业集团网站建设
  • 门户网站建设调查问卷制作视频app
  • 安徽省建设项目 备案网站云南软件开发公司排名
  • 网站主机与服务器吗wordpress 计数器
  • 微网站在线制作广东省广州市白云区白云湖街道
  • 爱站关键词挖掘查询工具安徽建设工程信息网人员
  • 在网站做登记表备案 如果修改wordpress添加keywords
  • wordpress做分类网站wordpress 外部页面
  • 上海建筑设计公司网站昆山做网站好的
  • 烟台建设工程信息网站网站自动跳转怎么办
  • php网站开发心得网络营销的特点包括哪些?
  • 网络公司投诉归什么部门管推广关键词如何优化
  • 无锡大型设计网站报价那个外贸网站做的好
  • 资阳市建设局网站天猫商城入口
  • 好的域名 org 网站网站费用清单
  • 高端营销型网站制作中国建设监理协会网站会员专区
  • 北京网站设计开发公司企业年报网上申报流程
  • 镇江做网站seo建筑网片铁丝规格
  • 怎么做网站地图的样式网页不能运行wordpress
  • 记事本做网站深圳企业宣传片
  • 网站建设不足之处wordpress自带阅读数
  • WordPress页面扩展网站seo主管招聘
  • 长安网站建设工作总结怎么做学校子网站
  • seo网站推广是什么意思网站图文列表
  • 专门做视频的网站有哪些ui网页设计公司
  • 广州网站建设建航php网页模板