尽管 Golang 插件系统中每条流水线拥有独立线程,但 C++ 文件采集为了节省资源、保持高性能,仍然延续总线模式:
- 整个客户端只有固定数量的线程负责文件采集,不随采集配置数量线性增长。
- 通过引入全局类
FileServer作为代理,统一管理所有文件输入插件的配置注册与启停。 - 文件输入插件
InputFile的Start()仅向 FileServer 注册当前配置,并在线程未启动时唤醒线程。 InputFile的Stop()则把配置从 FileServer 移除,并视情况暂停整个采集线程。- 容器场景下,可通过
SaveContainerInfo/GetAndRemoveContainerInfo在流水线热更新期间保留容器信息。
这种代理模式既符合插件接口语义,又避免了 "一对多" 模式带来的资源膨胀,提升整体扩展性与可维护性。




