edm*_*rto 0 distributed-computing rabbitmq amazon-sqs redis amazon-swf
所以我试图了解队列解决了哪些实际问题。通过阅读谷歌上的所有信息,我得到了高水平的信息。
因此,我正在研究 A 公司的架构,他们对于作业队列有不同的用例,例如
为什么要稍后处理呢?
这是我最好的猜测...
假设这是一个有效的用例,那么添加更多服务器来处理更多“事物”难道没有意义吗?是因为添加更多服务器比使用队列成本更高并且稍微牺牲响应时间吗?
根据我的用例示例,队列还能为它们解决哪些其他问题?
你是否曾经在银行繁忙时排队过?你本来会排队等候。
“但是,”你可能会说,“增加更多的员工来处理更多的客户难道不是有意义的吗?是因为增加更多的员工比雇用队列并牺牲一点响应时间的成本更高吗?”
那是正确的。根据每天到达的客户高峰数量,为银行配备人员的成本可能相当高。对于低于这个级别的员工来说,让一些顾客排队等候会更便宜。
而且,每天的顾客数量也不是100%可预测的。队列允许多余的需求等待,而不会破坏系统。
队列可以实现解耦。
例如,想象一下客户购买商品的在线商店。他们选择商品,提供信用卡号码,然后单击“购买”。如果信用卡被拒绝,在线商店可以立即提示他们重新输入号码。这种交互必须在客户仍然在线时立即进行。
然而,在发票生成、记录添加到会计系统以及库存下架时,客户无需等待。这可以与订购过程分离。一个好的方法是将订单推入队列,由下一个系统处理。
如果那个‘下一个系统’此时恰好离线,就没有理由取消整个销售。当“下一个系统”恢复在线时,可以处理交易。这比仅仅因为一个组件(不是立即需要的)发生故障而使整个过程失败要好得多。
底线:队列非常好。它们可以更好地处理故障。它们使事情更有弹性(只需等待几分钟,然后重试!)。当进程与排队架构兼容时,应始终使用它们。
| 归档时间: |
|
| 查看次数: |
638 次 |
| 最近记录: |