Tôi gặp sự cố liên quan đến một số máy, hàng đợi tin nhắn và giao dịch. Vì vậy, ví dụ người dùng nhấp vào một trang web, nhấp chuột sẽ gửi một tin nhắn đến một máy khác, thêm một khoản thanh toán vào tài khoản của người dùng. Có thể có hàng nghìn nhấp chuột mỗi giây. Tất cả các khía cạnh của giao dịch phải chịu lỗi.các giao dịch và hàng đợi được phân phối, ruby, erlang, scala
Tôi chưa bao giờ phải đối phó với bất cứ điều gì như thế này trước đây, nhưng một chút đọc cho thấy đây là một vấn đề nổi tiếng.
Vì vậy, với câu hỏi của tôi. Tôi có đúng trong giả định rằng một cách an toàn để làm điều này là với một cam kết hai giai đoạn, nhưng giao thức đang chặn và vì vậy tôi sẽ không nhận được hiệu suất cần thiết? Tôi thường viết Ruby, nhưng có vẻ như các DB như redis và hệ thống xếp hàng như Rescue, RabbitMQ vv không thực sự giúp tôi nhiều - ngay cả khi tôi thực hiện một số kiểu cam kết hai pha, dữ liệu sẽ bị mất nếu redis crash vì về cơ bản nó chỉ là bộ nhớ.
Tất cả điều này đã khiến tôi nhìn vào Erlang và Scala - nhưng trước khi tôi lội vào và bắt đầu học một ngôn ngữ mới, tôi thực sự muốn hiểu rõ hơn nếu điều này đáng giá. Cụ thể, tôi có phải suy nghĩ rằng vì khả năng xử lý song song của họ, các ngôn ngữ này là một lựa chọn tốt hơn để triển khai một giao thức chặn như cam kết hai giai đoạn hay tôi nhầm lẫn? Và nếu có, có bất kỳ lý do nào để chọn một thay vì khác (đặc biệt trong ngữ cảnh này - tôi biết có rất nhiều chủ đề và blog so sánh hai chủ đề chung hơn)
Xin lỗi vì đã đăng bài - lần đầu tiên được đăng lên stack-exchange nhưng tôi đã thêm vào câu hỏi và phiên bản này có thể phù hợp hơn ở đây
câu trả lời rất hữu ích - cảm ơn bạn và +1. Tôi vẫn quan tâm để xem những gì các quan điểm khác có trước khi chấp nhận điều này – chrispanda