Jedną z zalet modeli przetwarzania komunikatów, takich jak aktorzy i agenci, jest to, że tradycyjne problemy z współbieżnością (przede wszystkim synchronizacja stanu współdzielonego) nie stanowią już problemu. Aktor może zachować stan prywatny i dowolnie go aktualizować bez blokad. Struktura aktora zapewnia przetwarzanie tylko jednej wiadomości na raz. Dzięki przetwarzaniu serializowanemu kod może być zapisywany bez blokady.
W przykładzie użytkowników zapisujących formularz, zakładając, że aktor przechowuje listę niektórych danych z każdego formularza, aktor może aktualizować listę bez blokad, ponieważ struktura gwarantuje, że przetwarzany będzie tylko jeden formularz naraz. Tradycyjnie musiałbyś blokować dostęp do listy lub korzystać z równoległej listy.
Strategia współbieżności jest nieco inną sprawą i nadal spoczywa na tobie odpowiedzialność (żadna strategia nie jest najczęstszą strategią). Aby nieznacznie zmienić przykład, powiedzmy, że obaj użytkownicy próbują jednocześnie zaktualizować instancję formularza SAME. Bez strategii współbieżności zmiany jednej osoby zastąpią drugą (prawdopodobnie ostatnia wygrywa). W porządku, ale w najlepszym wypadku powoduje to nieoczekiwane zachowanie użytkownika, którego zmiany zostały zastąpione. Jeśli zobaczą właśnie zmieniony formularz, będzie on miał nieoczekiwane wartości (od drugiego użytkownika). W najgorszym przypadku (gdy nie mówimy tylko o aktualizacjach formularzy, ale o rzeczach takich jak wysyłanie zamówień), może to spowodować różnego rodzaju straty (czas, przychody itp.).
Korzystanie ze strategii współbieżności pomaga zidentyfikować te przypadki i być w stanie je rozwiązać na podstawie reguł biznesowych. Na przykład optymistyczna współbieżność każe użytkownikowi przesłać wersję formularza, który aktualizuje. Gdy aktor przystępuje do przetworzenia zmiany, zauważa, że drugi użytkownik myśli, że aktualizuje wersję 5, gdy formularz faktycznie ma wersję 6 z powodu aktualizacji pierwszego użytkownika. Teraz przynajmniej możemy powiadomić drugiego użytkownika, że formularz już się zmienił, odkąd zaczął go edytować. Lub jakiekolwiek zasady, które firma chce tam egzekwować.
W przypadku aktualizacji formularza prawdopodobnie nie przejmujesz się tak bardzo współbieżnością (jak sądzę, zależy). Ale w innych przypadkach może być bardzo ważne, aby przynajmniej móc sprawdzać i obsługiwać naruszenia. Możesz nawet zignorować naruszenie współbieżności, na przykład jeśli użytkownicy zmienili różne sekcje (aby kontynuować analogię formularza). Lub jeśli zmiana ma duży wpływ na biznes (duże zamówienie), chcesz ją zaakceptować i rozwiązać drobne konflikty później (np. Coroczna aktualizacja informacji kontaktowych nie została zakończona).
Wierzę, że Akka ma wiele innych wymiarów, takich jak sposób radzenia sobie z awariami, nadzorcami itp., Które są ważnymi rozważaniami dla deweloperów.