k8s源码分析-----Mux And Broadcaster

说明:此文章为腾讯云机器自动从本人csdn博客搬迁过来。是本人授权操作。

申明:无本人授权,不可转载本文。如有转载,本人保留追究其法律责任的权利。

龚浩华,QQ 29185807,月牙寂 道长

第一时间获取文章,可以关注本人公众号 月牙寂道长 yueyajidaozhang

在k8s源码中,有大量的用到了Mux和Broadcaster。这两个东西本身是很简单的,但越来越觉得,不把这两个东西讲解下,担心会有很多的东西会讲不清楚。故还是讲解下比较好。

源码在k8s.io\kubernetes\pkg\util\config

Mux

先看下结构体以及构建的方法

我们再看下Merger

很简单Mux就两个东西,一个chan map还有一个Merger的interface。从用法上来看,其实Mux就是一个多生产者的合并。

怎么说呢,下面我们看看他的用法

上面的代码就是生产者的注册,并返回生产者传送物品的管道。

Mux通过chan map来保存传送管道,并对新的生产者都运行一个listen

listen很简单,就是一个中间的过程,将生产者传送过来的物品,通过Merge(合并操作)

Mux很简单,但在k8s有大量的应用。

Broadcaster

广播事件,这个在k8s中应用也非常的多。其实看下源码就知道其非常的简单

我们看下结构体以及构建方法

很简单就是一个listener的集合

listener其实就是一个带有OnUpdate的interface

下面我们看下用法

首先当然是注册listener

然后就是事件通知了。

总结

虽然这两个东西很简单,但应用非常多。如果对这不清楚的话,可能会对理解k8s源码造成一定的困难。

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

编辑于

我来说两句

0 条评论
登录 后参与评论

相关文章

来自专栏北京马哥教育

MySQL/MariaDB基于MMM实现读写分离及高可用

前言 MMM(Master-Master replication managerfor Mysql,Mysql主主复制管理器)是一套灵活的脚本程序,基于perl...

37010
来自专栏闰土大叔

入职第一天:前端leader手把手教我入门Vue服务器端渲染(SSR)

继前段时间西安电面之后顺利拿到了OFFER,今天(5月2号)是我入职第一天,在简短的内部培训了一上午后,前端leader让我先了解下什么是vue的服务器端渲染(...

1182
来自专栏大内老A

我所理解的RESTful Web API [Web标准篇]

REST不是一个标准,而是一种软件应用架构风格。基于SOAP的Web服务采用RPC架构,如果说RPC是一种面向操作的架构风格,而REST则是一种面向资源的架构风...

20210
来自专栏北京马哥教育

原创投稿 | 一键启动 filebeat 5.1.1 集成 logstash

豌豆贴心提醒,本文阅读时间5分钟 “Eason,企业一线运维实战者,马哥教育原创作者联盟成员,热爱分享Linux应用技术的感想和原创知识。” Backgrou...

2726
来自专栏Crossin的编程教室

【编程课堂】 windows计划任务

在学习了一些爬虫或者 web 开发等知识之后,常常我们会有这样的需求: 写了个爬取豆瓣电影的脚本,需要每天定时自动运行; 使用 django 开发了一个小小的博...

3248
来自专栏张戈的专栏

分享超炫的表白页面和爱的纪念日源码

昨晚弄到三点就是为了 DIY 这 2 个页面,想给老婆一个浪漫的惊喜。 预览地址: 爱情纪念:http://zhangge.net/love 爱的故事:http...

3765
来自专栏向治洪

React Native自动化测试

大凡做软件开发,肯定会涉及到很多的测试,本地测试,Junit测试,用例测试等,今天就来说说RN的测试。 React Native的官方代码仓库里有一些测试代码,...

3185
来自专栏前端正义联盟

梳理前端开发使用 eslint 和 prettier 来检查和格式化代码问题

2493
来自专栏前端吧啦吧啦

mqtt实现自动监听服务器消息

3307
来自专栏云计算教程系列

如何在Ubuntu 14.04上使用memcached将NoSQL查询添加到MySQL

在许多优秀的文章中已经描述了使用memcached及其独立服务器实现与MySQL的一般概念,但是,作为独立服务器的memcached在MySQL客户端访问层之前...

562

扫描关注云+社区