@@ -28,7 +28,7 @@ Event事件管理机制主要有三部分组成:
28
28
29
29
## 源码分析
30
30
31
- ### Event资源数据结构
31
+ ### 1. Event资源数据结构
32
32
33
33
``` go
34
34
// pkg/apis/core/types.go
@@ -118,9 +118,9 @@ type Event struct {
118
118
119
119
```
120
120
121
- ###   ; EventBroadcaster源码分析
121
+ ###   ; 2. EventBroadcaster源码分析
122
122
123
- #### 4 .1 EventRecorder记录事件(事件生产者)
123
+ #### 2 .1 EventRecorder记录事件(事件生产者)
124
124
125
125
* EventRecorder
126
126
@@ -273,7 +273,7 @@ func (recorder *recorderImpl) makeEvent(ref *v1.ObjectReference, annotations map
273
273
274
274
generateEvent方法调用ActionOrDrop方法,将事件写入到incoming中:
275
275
276
- #### 4 .2 EventBroadcaster事件广播(事件消费者)
276
+ #### 2 .2 EventBroadcaster事件广播(事件消费者)
277
277
278
278
* EventBroadcaster
279
279
@@ -479,7 +479,7 @@ func (m *Broadcaster) closeAll() {
479
479
480
480
关闭了incoming,从loop方法可以看出来,将会结束对incoming的遍历动作,关闭所有watcher的result通道,清空watcher。
481
481
482
- #### 4 .3 broadcasterWatcher事件的处理
482
+ #### 2 .3 broadcasterWatcher事件的处理
483
483
484
484
\
485
485
eventBroadcasterImpl实现的三种Event的处理方法:
@@ -636,7 +636,7 @@ func (mw *broadcasterWatcher) ResultChan() <-chan Event {
636
636
}
637
637
```
638
638
639
- #### 4 .4 事件处理逻辑
639
+ #### 2 .4 事件处理逻辑
640
640
641
641
对于StartLogging、StartStructuredLogging方式,都是把事件信息当做日志打印了一下。这里主要看一下StartRecordingToSink方法,StartRecordingToSink封装的StartEventWatcher方法里面会处理事件消费者分发的事件,并回调recordToSink方法,对收到 events 后会进行缓存、过滤、聚合而后发送到 apiserver,apiserver 会将 events 保存到 etcd 中。下面着重分析下recordToSink方法。
642
642
@@ -809,7 +809,7 @@ func (e *eventLogger) eventObserve(newEvent *v1.Event, key string) (*v1.Event, [
809
809
810
810
eventObserve方法里面会去查找缓存中的记录,然后对count进行自增后更新到缓存中。
811
811
812
- ### 5、 使用示例
812
+ ### 2. 使用示例
813
813
814
814
``` go
815
815
const (
@@ -833,7 +833,7 @@ c.recorder.Event(user, corev1.EventTypeNormal, successSynced, messageResourceSyn
833
833
834
834
StartRecordingToSink会调用StartEventWatcher,StartEventWatcher方法里面会异步的调用 watcher.ResultChan()方法获取到broadcasterWatcher的result管道,result管道里面的数据就是Broadcaster的distribute方法进行分发的。
835
835
836
- ### 6、 总结
836
+ ### 4. 总结
837
837
838
838
  ; 了解完 events 的整个处理流程后,再梳理一下整个流程:
839
839
0 commit comments