20210225造成“管道泄漏”问题的罪魁祸首 - ziyouzy/2021blog GitHub Wiki
罪魁祸首是 管道的关闭(析构)方式不合理 以及管道与管道之间的连接器(结构)设计的不合理
除此之外还需要时刻牢记,适配器的意义在于反馈event(signals与error)以及生成新News管道,这对于数据源类型的适配器来说同样如此,两者都是存在的意义,而且必要时可以没有News(如心跳包),也不能没有Signals,或者说,各个适配器的Uid的首要任务是在向上层发送events时,确保各个适配器在整体系统中唯一的识别性
管道连接器可以独立存在 而适配器(river-node)内部必然会存在某种形式的“管道注入器(结构)”或"管道连接器(结构)" 同时,数据注入器未必是管道连接器,而管道连机器必然会是一个数据注入器:
管道注入器(结构):
go func(){
for i:=0;i<=len(p.sourceTable);i++{
if i == len(p.sourceTable){i = 0}
p.config.News <- p.sourceTable[i]
time.Sleep(p.config.StepSec)
}
}()
管道连接器(结构):
go func(){
for b := range oldch{
newch <- b
}
}()