我有一个 IOT 应用程序,它的架构如下:-
有些工厂有自己的成套设备。
现在整个管道部署在 Kubernetes 中,由以下单元组成:-
- 每 x 秒唤醒一次的作业,从所有工厂读取数据,将数据推送到 mqtt 代理。
- 一个 MQTT 代理。
- 一种订阅服务,它接收来自所有工厂的数据并将其推送到时间序列数据库。
- 作业以 5 分钟、15 分钟、1 小时、4 小时、1 天的间隔运行,并对所有项目的数据进行下采样,并将其推送到单独的下采样表中。
- 每天运行的作业以检查数据中是否存在漏洞/间隙,并在可能的情况下尝试填充它。
现在这适用于少数植物,但是当植物数量增加时,使用单个服务/作业执行数据检索、推送、下采样变得困难,因为它变得过多的内存密集型并且在多个地方阻塞。作为一种临时修复扩展,它在一定程度上垂直解决了这个问题,但在这种情况下,我需要将所有 pod 放在一台机器中,我正在垂直扩展并且垂直扩展多个节点非常昂贵。因此,我计划以某种方式分解系统,以便我可以水平扩展,并且我正在寻找实现这一目标的可能方法的建议。