Posted on 16 stycznia, 2019
Nie korzystaj z Axona i Tracking Processor
Lubię placki i Axona. Przez większość czasu działa szybko, stabilnie i niezawodnie, a problemy, które sprawia jakoś da się rozwiązać. Jednak tym razem będę namawiał na całkowite porzucenie Tracking Processor. Jest to najlepsza funkcjonalność Axona dodana w wersji 3, a zarazem bardzo niedopracowana. Jeżeli zależy Ci na prędkości przetwarzania i wielowątkowości to musisz z niej zrezygnować. Tracking Processor w Axonie to funkcjonalność śledząca przetwarzanie zdarzeń przez metody, które je obsługują. Daje to łatwe odtworzenie lub dodanie query ponieważ wystarczy usunąć z bazy danych odpowiednie wiersze dla metody obsługującej zdarzenie, procesor to wykryje i zaaplikuje je ponownie. Jednak nie działa to tak sprawnie jak byśmy chcieli.
Problem prędkości przetwarzania
Tracking Processor przetwarza kilka zdarzeń na sekundę.
Przyczyna
Nie dowiedzieliśmy się dlaczego tak się dzieje, a przyznanie dodatkowego wątku do Tracking Processor jeszcze zmniejszyło ilość przetworzonych zdarzeń na sekundę.
Rozwiązanie
Nie korzystać z Tracking Procesora. Po prostu usunąć całą konfigurację z nim związaną. My tak zrobiliśmy i dodaliśmy konfigurację Asynchronous Command Bus, co spowodowało wzrost przetwarzania rozkazów i zdarzeń z 40 do 400 na sekundę.
Dodatek 1
W roku 2018 byłem na Devoxx Poland i z ciekawości poszedłem na prelekcję o Axonie. Tam usłyszałem, że połączenie Axona i relacyjnych baz danych nie działa najlepiej. Nie było dokładnie wyjaśnione „co i dlaczego” ale koleś wydawał się ogarnięty. No spoko, hype development, wywalamy Postgresa i korzystamy z MongoDB… No jednak nie. W dokumentacji Axona możemy przeczytać, że Tracking Processor nie działa efektywnie z MongoDB, smuteczek.
Dodatek 2
Axon wydał nową wersję 4.0. Wymyślił coś takiego jak Axon Server (nie jestem fanem tego rozwiązania) i z tego co widziałem, wykorzystywana jest w nim funkcjonalność Tracking Processor. Mam tylko cichą nadzieję, że chociaż trochę poprawili tą funkcjonalność, przynajmniej z nowej dokumentacji zniknęła wzmianka o nieefektywności.
Wersja Axona: 3.3