Worker服务从数据库中获取待处理的作业,并逐一处理它们。加快处理速度的自然方法是生成多个(任意数量的)Worker服务实例(通过Docker swarm或类似的方式),并让它们同时处理待处理作业。
您如何确保两个worker实例不会处理同一个作业?
我曾想过使用一个中央的、非并行化的管理器服务来跟踪工人并向他们发送作业,而不是由工人来获取他们自己的作业,但我想总有一天管理器服务本身需要并行化。这个解决方案似乎只是把问题踢得更远一些。
Q : "你会如何 确保 该工人的两个实例不处理同一工作?"
简单的 。a ) 垄断访问方法,不得自由访问,减少任何工人的访问,加上... b ) 只让Job-Dispatcher执行这个Job-2-Worker的映射,再加上... c ) 将Job-Dispatcher的缩放设置为工作负载自适应(在较高负载下增加更多的功率),再加上...。d ) 让Job-Dispatcher在一些混合的同地分布式故障中幸存下来(是的,最好是作为一个分布式多代理、自我弹性的实体)。
现在,您已经拥有了一个安全的、大小合适的、可自适应扩展的、强大的&;防DDoS的智能系统。