Po roku prac został wydany framework Ergo 1.2, który implementuje pełny stos sieciowy Erlang oraz jego bibliotekę OTP w języku Go. Framework zapewnia programiście elastyczne narzędzia ze świata Erlang do tworzenia rozproszonych rozwiązań w języku Go, korzystając z gotowych wzorców projektowych Application, Supervisor i GenServer. Ponieważ w języku Go nie ma bezpośredniego odpowiednika procesu Erlang, w frameworku używane są goroutine jako podstawy dla GenServer z owinięciem recover, aby umożliwić obsługę wyjątków. Kod projektu jest rozpowszechniany na licencji MIT.
W nowym wydaniu:
- Wdrożono wsparcie dla TLS 1.3 z możliwością automatycznego generowania samopodpisanych certyfikatów (jeśli konieczne jest szyfrowanie połączeń, ale nie ma potrzeby jego autoryzacji, ponieważ połączenie wykorzystuje cookie do zapewnienia dostępu do węzła).
- Dodano statyczne routowanie, aby uniknąć zapytań do EPMD w celu określenia portu węzła. Umożliwia to rozwiązanie problemu bezpieczeństwa i wraz z szyfrowaniem pozwala na uruchamianie klastra Erlang w publicznych sieciach.
- Dodano nowy szablon GenStage (ze świata Elixir), który pozwala na tworzenie rozwiązań Pub/Sub bez użycia Message Bus. Jedną z ważnych cech tego szablonu jest „kontrola backpressure”. „Producent” dostarczy dokładnie taką ilość wiadomości, jaka została zażądana przez „Konsumenta.” Przykład realizacji można zobaczyć tutaj.
W sekcji dyskusji poruszana jest implementacja wzorca projektowego SAGAS, który wdraża funkcjonalność rozproszonych transakcji.
Źródło: opennet.ru
