informerFactory创建informer
informer一般由informerFactory创建(支持直接创建informer,一般不这么做),informerFactory支持创建多种资源类型的informer,同一个informerFactory中同一种资源类型只创建一个informer。
DeltaFIFO
queue里面保存了KeyOf函数计算得到的存储资源对象的key。
items通过map存储,同一个资源对象的操作放在同一个切片中。
resync机制
Indexer本地存储中的资源对象同步到DeltaFIFO中,操作类型是Sync,触发 onUpdate回调。
在处理SharedInformer事件时,可能存在处理失败的情况,定时(参数是ResyncDuration)的resync让处理失败的事件有了重新处理的机会。如果DeltaFIFO 队列中该资源对象有了event,那么不入队。
add事件回调失败 -> indexer有记录 -> resync -> onUpdate
update事件回调失败 -> indexer有记录 -> resync -> onUpdate
delete事件回调失败 -> indexer没有记录 -> 不会resync
但是,业务上处理失败,通常会放入队列重试,不需要走resync流程。
例如,kube-ovn把ResyncDuration值设为0,表示不使用resync。