Właśnie zacząłem czytać rozdział OTP w wielkiej książce Erlanga autorstwa Francesca Cesariniego. Czy większość aplikacji Erlang, takich jak aplikacje MochiWeb, Riak, RabbitMQ, Zotonic, ejabberd i CouchDB OTP?Czy większość aplikacji Erlang, takich jak aplikacje MochiWeb, Riak, RabbitMQ, Zotonic, ejabberd i CouchDB OTP?
Odpowiedz
MochiWeb następujące podstawowe OTP Design Principles: to wykorzystuje supervisor(3) zachowanie, aby uruchomić ponownie rozbił procesów (moduł mochiweb_sup.erl) i gen_server(3) zachowanie. Jednak wdraża to wiele procedur do przetwarzania danych, takie jak te znalezione w mochinum.erl
szybsze liczb zmiennoprzecinkowych serializacji i mochijson[2].erl
przetwarzać JSON itp
Złą rzeczą z mochiweb (I stało się jasne, dlaczego here) IMHO jest to, że używa wątpliwa i oficjalnie nieudokumentowana (od 2003 roku!) technika z modules parameterizing (moduł mochiweb_request.erl
, uwaga -module(mochiweb_request, [Socket, Method, RawPath, Version, Headers]).
w nagłówku pliku). To samo dotyczy innej biblioteki HTTP Erlanga misultin().
Popraw mnie, jeśli się mylę.
CouchDB miał wiele problemów z tym, ale najnowsze źródła opublikowane przez Cloudant pokazują CouchDB w pręcie zbrojeniowym, więc muszą być zgodne z ODP.
Riak - to samo, na pręcie zbrojeniowym (btw. Ten sam devs rebar i riak). Btw2. jest to bardzo ładnie napisana aplikacja, dobre miejsce do nauki dobrych praktyk.
Kod źródłowy Zotonika wygląda trochę jak bałagan. Widzę tam "aplikację" itp., Ale struktura katalogów nie wygląda jak żaden właściwy węzeł OTP. Btw. nawet Licencja nie jest dodawana do wszystkich modułów:?
ejabberd jest pełen sup i aplikacji, ale ma również kilka interesujących;) wyborów projektowych, więc może nie nauczyć się Erlanga na tym przykładzie.
Aplikacja bazy danych Hibari jest zdecydowanie oparta na OTP. Serwer jest podzielony na kilka aplikacji OTP, w tym małą na zarządzanie i logowanie (gmt), dużą dla samego serwera (gdss), małą dla natywnych klientów Erlanga (gdss_client) i osobne aplikacje OTP dla każdego procedur obsługi protokołów po stronie serwera (np. JSON-RPC, UBF, EBF/BERT).
Czasami zdjęcie jest warte co najmniej kilkaset słów. Mam kilka zrzutów ekranu z aplikacji "appmon" Erlang (monitor aplikacji), która pokazuje drzewo procesów nadzorcy i pracownika. Przepraszamy, aplikacje obsługujące protokół nie są pokazane na obrazku nr 01, ale byłyby one, gdybym je uruchomił po przechwyceniu obrazu.
Link jest tutaj: OTP 'appmon' screen shots
-Scott
moduły parametryzowane są obecnie udokumentowane. Nadal ich nie lubię, ale teraz są to oficjalne rzeczy. –
Niewłaściwe z mochiweb jest to, że używa on 'exit (normal)' zbyt wiele i w ten sposób ukrywa prawdziwe problemy. –