Я хочу создать приложение, которое предоставляет простые данные клиентам (байты, строки), но главным образом непрерывным способом (подталкивает, передает данные нескольким клиентам, возможно, за NAT). Производительность является ключевым фактором здесь: мне нужно большое количество клиентов с большим количеством сообщений, отправляемых в секунду (таким образом, тип связи UDP предпочтительнее при отправке данных клиентам).Java-библиотека для приложений и масштабируемых серверных приложений
Я тестировал базовые сокеты Java (TCP и UDP с многопоточным доступом), но не эффективен для большого числа клиентов (есть ли другой хороший подход с TCP?). Я пробовал передачу UDP, но я застрял здесь, потому что я не нашел никакого способа (или примера) передачи данных клиентам, которые, возможно, за NAT (это было бы приемлемым выбором, если бы я мог найти решение).
Итак, я начал искать некоторые рамки, которые могли бы удовлетворить мои потребности. Я нашел рекомендацию для:
- java NIO, но швы, что очень низкий уровень, а также многая борьбы с хорошими примерами и эффективными способами использования API
- JMS - швов, как интересное решение, но я не знаю, что возможно и эффективно отправлять трансляцию push нескольким клиентам за NAT. На данный момент, если JMS может это сделать, меня интересует основная (низкоуровневая) логика, поэтому я могу сделать то же самое с простой передачей UDP.
- Java NioServer - я не нашел много повторений, и это швы устарели, поэтому Я не знаю, насколько это достоверно
Еще одна важная проблема (и именно по этой причине я пытался использовать сокеты, простые сообщения udp/tcp) заключается в том, что я хочу создавать клиентов для разных платформ, языки (например, C/C++). Итак, после быстрого просмотра этих выше (1,2,3), я считаю, что использование любого из них заставит меня строить клиентов только на Java. Итак, какие советы или другие справочные ссылки вы бы дали?
Существует также [KryoNet] (https://github.com/EsotericSoftware/kryonet). –