AI 重塑云原生应用开发实战
邢云阳
联通云 AI 与容器技术专家
475 人已学习
新⼈⾸单¥59
AI 重塑云原生应用开发实战
15
15
1.0x
00:00/00:00
登录|注册

07|client-go进阶玩法之Informer机制

你好,我是邢云阳。
在上一节课中,我们讲解了 client-go 的四种客户端的功能与使用场景,并且介绍了 RestMapper 的用法。RestMapper 就像一个全国联网的警务平台一样,可以在仅提供资源名称 resource 的情况下,拿到资源的 GVK、GVR、scope 等等全部信息。一旦得到 GVR,我们便可以利用动态客户端与 Kubernetes 资源进行交互。
我们还知道,无论使用哪种客户端方式,本质还是通过 Rest API 的方式去请求目标 Kubernetes 集群的 API Server。这样就不可避免的会对 API Server 造成访问压力。幸好,官方提供了 Informer 机制,为我们解决了这个问题。
这套机制是对 List && Watch 做了封装,并加入了缓存等功能。在初始时可以将资源全部缓存到本地,并且之后可以通过监听增删改事件来更新缓存中的资源状态。这样,我们在做查询操作时,就可以从本地缓存中获取到最新资源状态,无需访问 API Server。
接下来,我们就从 Lsit && Watch 开始讲起,看看如何从实操角度,在我们的业务中利用起 Informer。

List && Watch

List && Watch 是 Kubernetes 为我们提供的查询资源的两种方式。
确认放弃笔记?
放弃后所记笔记将不保留。
新功能上线,你的历史笔记已初始化为私密笔记,是否一键批量公开?
批量公开的笔记不会为你同步至部落
公开
同步至部落
取消
完成
0/2000
荧光笔
直线
曲线
笔记
复制
AI
  • 深入了解
  • 翻译
    • 英语
    • 中文简体
    • 法语
    • 德语
    • 日语
    • 韩语
    • 俄语
    • 西班牙语
  • 解释
  • 总结

1. Informer 机制是 client-go 中的一套对 List && Watch 做了封装的工具,可以通过监听增删改事件来更新缓存中的资源状态,从而在查询操作时可以从本地缓存中获取最新资源状态,无需访问 API Server。 2. List && Watch 是 Kubernetes 为我们提供的查询资源的两种方式,List 是一次性的列出资源,而 Watch 是持续观察资源变化的方式。 3. SharedInformer 是 client-go 中提供的一种更灵活的 Informer 模型,可以绑定多个 Handler,从而避免与 API Server 建立多条链路,减小资源开销。 4. SharedInformerFactory 是 SharedInformer 的工厂,可以创建监听不同资源的 SharedInformer,并共享同一个大门(链路)。 5. Informer 机制可以帮助减少对 API Server 的访问压力,提高查询效率,适用于需要频繁查询资源状态的业务场景。 6. 在类似 Kubernetes 资源管理系统的前后端分离架构中,使用 REST API 进行通信时,Informer 机制可以结合 WebSocket 技术,实现前端资源列表的动态刷新,提升数据同步的实时性和用户体验的流畅度。 7. SharedInformerFactory 可以使用 GVR 来创建 Informer,实现监听多个资源的功能。 8. SharedInformerFactory 可以结合上一小节的 RestMapper,实现当用户传入 resource = pods 时,创建出监听 pod 的 Informer。 9. 在使用 Informer 时,需要注意在主程序中使用 select{} 将主程序阻塞,避免 Informer 还未启动好,主程序就结束退出。

仅可试看部分内容,如需阅读全部内容,请付费购买文章所属专栏
《AI 重塑云原生应用开发实战》
新⼈⾸单¥59
立即购买
登录 后留言

全部留言(1)

  • 最新
  • 精选
  • stevensafin
    跟 AI 有什么关系?

    作者回复: 为AI Agent提供工具

    2024-12-27归属地:海南
收起评论
显示
设置
留言
1
收藏
沉浸
阅读
分享
手机端
快捷键
回顶部
文章页面操作
MAC
windows
作用
esc
esc
退出沉浸式阅读
shift + f
f11
进入/退出沉浸式
command + ⬆️
home
滚动到页面顶部
command + ⬇️
end
滚动到页面底部
⬅️ (仅针对订阅)
⬅️ (仅针对订阅)
上一篇
➡️ (仅针对订阅)
➡️ (仅针对订阅)
下一篇
command + j
page up
向下滚动一屏
command + k
page down
向上滚动一屏
p
p
音频播放/暂停
j
j
向下滚动一点
k
k
向上滚动一点
空格
空格
向下滚动一屏
播放器操作
MAC
windows
作用
esc
esc
退出全屏
⬅️
⬅️
快退
➡️
➡️
快进
空格
空格
视频播放/暂停(视频全屏时生效)