yas*_*eco 6 java stream-processing bigdata system-design event-stream-processing
我正在设计一个系统,其中有一个主要的对象流,并且有多个工人从该对象产生一些结果.最后,有一些特殊/独特的工作者(根据图论)的某种"接收器",它获取所有结果,并将它们处理成写入某个DB的最终对象.
工人可能依赖于其他一些工人的结果(因此,等待他们的结果)
现在,我面临几个问题:
值得一提的是,它不是实时应用程序,而是离线处理系统(即您可以访问数据库并更改记录),但与此同时,它必须以"高速度"处理相对大量的对象".
关于技术,
我正在使用Java开发系统,但我并没有受到特定技术的限制.
如果你能帮助我完成系统的总体设计,我会很高兴的.
非常感谢!
正如彼得所说,这实际上取决于用例。但有一些一般性评论:
如果一个工作线程比另一个工作线程慢,可能会创建更多该类型的实例;例如,Kubernetes 允许动态节点创建,而 Kafka 允许对主题进行分区,以便多个实例可以读取并处理它。
如果 B 依赖于 A,而 A 宕机了,B 就无法工作,仅此而已。也许重启A?也许你可以定期对其进行健康检查。
如果最终的worker需要A、B、C的结果,那么在C不可用的情况下,它会如何处理?如果可以的话,它可以存储 A 和 B 的结果,安装一个计时器,如果在 C 尚未到达的情况下计时器就响了,则继续。