2014-04-10 11 views
5

Buduję prosty, reaktywny serwer, który powinien odbierać przychodzące komunikaty protobuf/protostuff od wielu klientów, wykonywać na nich logikę biznesową i ewentualnie wysyłać wiadomości typu "zapisz i zapomnij" innym użytkownikom. Chcę zaimplementować funkcję transportu i dekodowania w Netty. Moje pytanie brzmi: czy jest jakaś kwestia publikowania zdekodowanych wiadomości do wydajności bufora pierścienia Disruptora lub dodatkowa wydajność oferowana przez Disruptor byłaby zanegowana przez wewnętrzne planowanie Netty? Czy powinienem dostarczyć Netty z dwoma wątkami (jeden dla "accept" i inny dla grupy "connect") czy tylko jeden jest lepszy? Może powinienem po prostu podzielić wiadomości według długości w programach obsługi Netty i wykonać dekodowanie w Disruptor?Czy jest jakiś sens w korzystaniu z Netty z wydajnością Disruptor?

Odpowiedz

5

Zależy;)

disruptor pozwala oddzielić różne różne działania i potencjalnie wykonywać je równolegle. Tak więc pytanie brzmi, jak droga jest Twoja logika biznesowa i jak wielki jest twój nakład pracy? Disruptor służy do przesyłania danych między wątkami, w szczególności wątków, które potencjalnie są uruchomione przy różnych szybkościach komunikatów. To znaczy. pozwala to wytwarzającemu wątkowi generować serię komunikatów, podczas gdy wątek zużywający jest zajęty obsługą ostatniej wiadomości.

Na przykład, jeśli chciałybyśmy również przekazać wiadomość do bazy danych, a także przesłać wyniki, można opublikować wiadomość w "wychodzącym" buforze pierścieniowym i zużywać swój kod netty oraz DB.

Im mniej czasu spędzasz na robieniu pracy w Netty pod numerem eventloop, tym więcej klientów możesz obsłużyć lub większych wiadomości na poziomie transportu.

+0

Dzięki! Wygląda na to, że Disruptor zmieści się w tym miejscu, ponieważ obsługa rozerwanych wiadomości i ważna jest część dziennikarska. – wyrd

Powiązane problemy