Database design 如何解耦并行pings处理系统
我有一个每秒接收1000次GPS ping的系统,这些ping存储在RDBMS表中,我们称之为pingsTable。然后从数据库中读取这些ping,并在多个处理器中单独处理,以便为最终用户提取有价值的信息。 到目前为止,我们的系统在pingsTable本身中维护一个列,即processed_state,它基本上指定ping是否通过特定处理器处理。例如,已处理状态3表示ping由前3个处理器处理。每个处理器配置为读取处理状态小于其自身状态的ping,并在处理ping后将处理的_状态更新为其自身状态。 问题是,即使这些处理器彼此不依赖,我仍然被迫按照定义的顺序处理ping 我的意图是将这些处理器彼此解耦,以便可以并行运行这些处理器。此外,我需要维护每个ping的processed_状态,因为在分析这些ping时,我可能需要查询已经处理的pingDatabase design 如何解耦并行pings处理系统,database-design,architecture,Database Design,Architecture,我有一个每秒接收1000次GPS ping的系统,这些ping存储在RDBMS表中,我们称之为pingsTable。然后从数据库中读取这些ping,并在多个处理器中单独处理,以便为最终用户提取有价值的信息。 到目前为止,我们的系统在pingsTable本身中维护一个列,即processed_state,它基本上指定ping是否通过特定处理器处理。例如,已处理状态3表示ping由前3个处理器处理。每个处理器配置为读取处理状态小于其自身状态的ping,并在处理ping后将处理的_状态更新为其自身状态
我可以考虑为每个处理器维护一个单独的表,并进行连接以检查ping是否已被处理。我正在寻找一个更有效和可扩展的设计相同 据我所知,您需要并行处理ping。处理必须通过所有独立的处理器(服务)。在数据库中维护已完成处理的处理器时 最简单的方法是 为处理器分配ID。ID应基于位运算符(即1、2、4、8、16等)
- 处理器5处理ping更新DB值16
- 处理器2进程ping更新数据库值16+2=18
- 处理器3进程ping更新数据库值18+4=22