Một trong những lợi thế của các mô hình xử lý thông báo như các tác nhân và tác nhân là các vấn đề tương tranh truyền thống (chủ yếu là đồng bộ hóa trạng thái chia sẻ) không còn là vấn đề nữa. Các diễn viên có thể giữ trạng thái riêng tư và cập nhật nó một cách tự do mà không cần khóa. Khung diễn viên đảm bảo rằng chỉ có một tin nhắn được xử lý tại một thời điểm. Với xử lý nối tiếp, mã có thể được viết theo cách không khóa.
Trong ví dụ của bạn về việc người dùng lưu một biểu mẫu, giả sử diễn viên đang giữ Danh sách một số dữ liệu từ mỗi biểu mẫu, diễn viên có thể cập nhật danh sách mà không cần khóa, bởi vì khung đảm bảo rằng chỉ có một biểu mẫu sẽ được xử lý tại một thời điểm. Theo truyền thống, bạn sẽ phải khóa xung quanh danh sách truy cập hoặc sử dụng danh sách đồng thời.
Chiến lược đồng thời là một vấn đề hơi khác và vẫn là trách nhiệm của bạn (không có chiến lược nào là chiến lược phổ biến nhất). Để thay đổi ví dụ của bạn một chút, giả sử rằng cả hai người dùng đều cố gắng cập nhật phiên bản biểu mẫu CÙNG cùng một lúc. Không có chiến lược đồng thời, các thay đổi của một người sẽ ghi đè lên chiến lược khác (có thể là chiến thắng cuối cùng). Điều đó tốt, nhưng tốt nhất điều này dẫn đến hành vi không mong muốn cho người dùng có thay đổi bị ghi đè. Nếu họ xem biểu mẫu họ vừa thay đổi, nó sẽ có các giá trị không mong muốn (từ người dùng khác). Tệ nhất (khi chúng ta không chỉ nói về cập nhật biểu mẫu, mà những thứ như đơn đặt hàng vận chuyển) nó có thể dẫn đến tổn thất các loại (thời gian, doanh thu, v.v.).
Sử dụng chiến lược đồng thời giúp xác định các trường hợp này và có thể giải quyết chúng dựa trên các quy tắc kinh doanh. Ví dụ, Optimistic Concurrency có người dùng gửi phiên bản của biểu mẫu mà nó đang cập nhật. Khi diễn viên tiến hành xử lý thay đổi, thông báo rằng người dùng thứ 2 nghĩ rằng họ đang cập nhật Phiên bản 5 khi biểu mẫu thực sự ở Phiên bản 6 vì bản cập nhật của người dùng đầu tiên. Bây giờ ít nhất chúng tôi có thể thông báo cho người dùng thứ 2 rằng biểu mẫu đã thay đổi kể từ khi họ bắt đầu chỉnh sửa nó. Hoặc bất cứ quy tắc nào doanh nghiệp muốn thực thi ở đó.
Trong trường hợp cập nhật một biểu mẫu, có lẽ bạn không quan tâm nhiều đến sự tương tranh (tôi đoán vậy). Nhưng trong các trường hợp khác, nó có thể là một điều rất quan trọng để ít nhất có thể kiểm tra và xử lý các vi phạm. Bạn thậm chí có thể muốn bỏ qua vi phạm đồng thời, như nếu người dùng thay đổi các phần khác nhau (để tiếp tục tương tự biểu mẫu). Hoặc nếu thay đổi có tác động lớn đến doanh nghiệp (một đơn đặt hàng lớn), bạn muốn chấp nhận và giải quyết các xung đột nhỏ sau này (ví dụ: cập nhật thông tin liên hệ hàng năm chưa được hoàn thành).
Tôi tin rằng Akka có một số khía cạnh khác như cách nó xử lý các thất bại, người giám sát, v.v ... đó là những cân nhắc quan trọng đối với các tín đồ.