Я новичок в netty. Я хотел бы создать сервер, который будет получать запросы от немногих (скажем, Max из 2) клиентов. Но каждый клиент будет отправлять много запросов на сервер непрерывно. Сервер должен обрабатывать такие запросы и отвечать клиенту. Итак, здесь я предполагаю, что даже если я настрою несколько рабочих threds, это может быть не полезно, поскольку есть только 2 активных соединения. Рабочий поток снова блокируется, пока он не обработает и не ответит на клиента. Поэтому, пожалуйста, дайте мне знать, как справиться с этими проблемами. Если я использую threadpoolexecutor в рабочем потоке для обработки запросов клиентов в многопоточном режиме, будет ли он эффективным? Или, если его трость достигнута с помощью netty framework, PLZ сообщите мне, как это сделать? Заранее спасибо ...Netty multi threading для подключения
ответ
Если я правильно понимаю: ваши клиенты (2) отправят много сообщений, каждое из которых будет как можно быстрее отвечать на сервере с сервера.
2 варианта можно увидеть:
Процесс answear является короткий промежуток времени (достаточно коротким, чтобы не быть isssue для скорости вы хотите достичь, то есть 1 нить может answear так же быстро, как вы требуется для 1 клиента): тогда вы можете оставаться со стандартными потоками от Netty (1 рабочий поток для 1 клиента за раз), установленным в загрузочном буфере сервера. Это самый короткий путь.
Процесс ответа не является достаточно коротким (скорость будет ужасной, например, потому что существует «длительный процесс», такой как блокировка вызова, доступ к базе данных, запись в файле ...): тогда вы может добавить пул потоков (группу) в конвейере Netty для вас, ChannelHandler делает такой блокирующий/длительный процесс.
Вот выдержка из документации API, взятой из ChannelPipeline: http://netty.io/4.0/api/io/netty/channel/ChannelPipeline.html
// Tell the pipeline to run MyBusinessLogicHandler's event handler methods
// in a different thread than an I/O thread so that the I/O thread is not blocked by
// a time-consuming task.
// If your business logic is fully asynchronous or finished very quickly, you don't
// need to specify a group.
pipeline.addLast(group, "handler", new MyBusinessLogicHandler());
- 1. Multi Threading
- 2. Multi Threading
- 3. Threading in Netty ZlibEncoder
- 4. freeDiameter и multi threading
- 5. Multi-threading - Allocating Work
- 6. Android Multi Threading
- 7. python multi threading communication
- 8. Multi Threading Java ScriptEngine
- 9. Qt Multi-Threading
- 10. Singleton class & multi-threading
- 11. Netty multi client
- 12. Multi Threading with Singletons
- 13. Spring.Net/NHibernate - Multi Threading
- 14. multi threading on asp.net
- 15. Java Multi threading
- 16. Multi Threading в Android
- 17. Blackberry multi threading issue
- 18. .net multi-threading
- 19. Multi Threading in C#
- 20. .NET 3.5 Multi Threading
- 21. Проблемы с Multi-Threading
- 22. Python3 multi threading
- 23. StreamWriter Multi Threading C#
- 24. C# - Multi-Threading
- 25. Multi Threading and Swing
- 26. .net application multi-threading
- 27. Queue-Multi Threading Python
- 28. JavaFX Multi Threading
- 29. Multi-Threading pauses form
- 30. Java: Multi Threading
Я реализовал DefaultEventExecutorGroup и добавил мой обработчик для запуска под этой группы трубопровода, как указано. Просто добавьте S.O.P для печати имени потока и Thread.sleep (2000), чтобы увидеть имя потока и запущены ли параллельные потоки и отправить 3 сообщения на сервер от одного клиента. Но он всегда показывает тот же номер потока для всех 3 сообщений на сервере. Если я добавлю threadpoolexecutor в свой обработчик и отправлю сообщения в threadpoolexecutor, он будет работать параллельно. Могу ли я использовать структуру исполнителей пула потоков? будет ли какая-то разница? PLZ помощь ... –