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
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.
- 1. Netty + JMeter, błędy przy ponownym korzystaniu z połączenia
- 2. Czy jest jakiś problem z wydajnością podczas używania ISNULL() w SQL Server?
- 3. Czy jest jakiś sens, aby std :: atomowe obiekty <> z kwalifikatorem - volatile?
- 4. Jaka jest różnica w korzystaniu z addEventListener?
- 5. Czy wiele instrukcji .Where() w LINQ jest problemem z wydajnością?
- 6. Jak ta rozdzielczość przeciążania ma jakiś sens?
- 7. Używanie SPDY z Netty
- 8. Czy jest jakiś sens używania CHAR, jeśli masz VARCHAR w tej samej tabeli?
- 9. Czy hosting serwera Netty w Tomcat jest możliwy/pożądany?
- 10. Czy ktoś ma doświadczenie w korzystaniu z CloudFoundry z Grails?
- 11. Problem z wydajnością JavaFX TableView
- 12. Doświadczenie w korzystaniu z extjs z grails?
- 13. Czy jest jakiś sens przesłania grafiki funkcji w bieżącym Sklepie Play?
- 14. Disruptor helloworld example
- 15. Problem z wydajnością z joda-time DateTime.with *()
- 16. Problemy z wydajnością SwiftyJSON
- 17. Czy jest jakiś problem z ContentPresenter w ListBoxItem.ContentTemplate?
- 18. Problem z wydajnością RavenDb?
- 19. Rekurencja z wydajnością
- 20. Jaki jest największy problem z wydajnością w Emberjście?
- 21. TensorFlow - wprowadzenie zarówno regularyzacji L2, jak i rezygnacji z sieci. Czy to ma jakiś sens?
- 22. Problem z wydajnością Hibernacji
- 23. Czy wątek Netty Channel.write jest bezpieczny?
- 24. Czy korzystanie z serwerów stanowych ma sens?
- 25. Czy jest jakiś sens używania `override` podczas przesłonięcia czystej funkcji wirtualnej?
- 26. Asynchroniczny klient HTTP z Netty
- 27. Czy w Scali jest jakiś silnik gry?
- 28. Sens z profilera GHC
- 29. Problemy z Netty IdleStateHandler - czy testuję to w niewłaściwy sposób?
- 30. Czy jest jakiś lekki aktor w Akka?
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