我有一个需要用Perl编写的项目,所以我选择了ZeroMQ。
有一个客户端程序,为可变数量的工作人员生成工作。工人是真正的人类操作员,他们将完成任务然后请求新任务。客户端程序的工作是让所有可用的工作人员整日忙碌。这是一个呼叫中心。
因此,每个工作人员只能处理一个任务,并且在请求新任务之前可能还有一段时间。工人数量可能在白天有所不同。
客户端需要准备好一系列任务,以便在工作人员请求时为他们提供帮助。每当客户端队列变低时,客户端就可以生成更多任务来充值队列。
我应该使用什么设计模式(即ZeroMQ Socket组合)?我已经浏览了0MQ指南中的所有模式,找不到与之匹配的任何内容。
由于
答案 0 :(得分:2)
典型软件Project使用许多ZeroMQ套接字(具有各种Archetypes)作为节点 - 节点信号化和消息传递平台的某种形式。
值得注意的是,自动化负载均衡器可以在自动化流程中正常工作,但对于人工执行或与人类交互的流程并非总是如此。
人类(呼叫中心代理商和他们的线路监督员)引入了另一层要求 - 有时需要引入非正式Round-Robin工作负载分配逻辑,有时需要将代理A的呼叫切换到另一个代理B(一个简单的原型根本不具备并且可能遇到麻烦,如果它是硬连线逻辑遇到碰撞(相互阻塞的REQ-REP
陈旧配偶就是这样一个例子)。
所以,简单地忘记等待一个超级供电的原型,而是创建一个智能的行为网络,这将涵盖您的分布式计算问题所需的事件处理。
还有许多其他方面,在将第一个ZeroMQ套接字投入使用之前应该先学习。
失败的反应
性能扩展
延迟分析(高优先级语音流量,低优先级日志记录)
看门狗确认和超时情况处理
交叉兼容性问题(版本2.1x与3.x对比4. + API)
处理针对故障代理/恶意攻击/致命虚假交通风暴的稳健性......仅列举一些问题
所有这些都在ZeroMQ工具箱中有一些内置函数,其中一些可能需要一些高级思维,以便处理已知的约束。
A会提倡一本神话般的Pieter HINTJENS的书“Code Connected,Volume 1” - 对于每个人来说都是严肃的分布式处理,这是必须阅读的 - 不要犹豫check other my posts找到这个ZeroMQ圣经的 PDF版本的直接网址。
值得时间,一个人的眼泪和汗水。