我有一个涉及多台机器、消息队列和事务的问题。因此,例如,用户点击网页,点击会向另一台机器发送一条消息,该机器将付款添加到用户的帐户中。每秒可能有数千次点击。事务的所有方面都应该是容错的。
我以前从来没有处理过这样的事情,但是一点阅读表明这是一个众所周知的问题。
所以我的问题。我是否正确假设这样做的安全方法是使用两阶段提交,但协议是阻塞的,所以我不会获得所需的性能?我通常编写 Ruby,但似乎像 Redis 这样的 DB 和像 Rescue、RabbitMQ 等这样的消息队列系统并没有真正帮助我 - 即使我实现了某种两阶段提交,如果 redis 崩溃,数据也会丢失,因为它本质上只是内存。
所有这一切都让我看到了 erlang 和 scala——但在我涉足并开始学习一门新语言之前,我真的很想更好地理解这是否值得付出努力。具体来说,我是否正确地认为,由于它们的并行处理能力,这些语言是实现像两阶段提交这样的阻塞协议的更好选择,还是我感到困惑?如果是的话,是否有任何理由选择一个而不是另一个(特别是在这种情况下 - 我知道有很多线程和博客更普遍地比较了两者)
为交叉发布道歉 - 这是第一次发布到堆栈交换,但我已经添加到问题中,这个版本可能更适合这里