У меня есть приложение Java, которое через сокет TCP подключается к «серверу», разработанному на C / C ++.
и приложение, и сервер работают на одном компьютере, в системе Solaris (но в конечном итоге мы рассматриваем возможность перехода на Linux). Тип обмена данными - простые сообщения (логин, авторизация ACK, затем клиент что-то запрашивает, ответы сервера). каждое сообщение имеет длину около 300 байт.
В настоящее время мы используем сокеты, и все в порядке, однако я ищу более быстрый способ обмена данными (меньшая задержка) с использованием методов IPC.
Я исследовал сеть и нашел ссылки на следующие технологии:
- Общая память
- трубы
- очереди
- а также то, что называется DMA (прямой доступ к памяти)
но я не смог найти ни надлежащего анализа их соответствующих характеристик, ни того, как реализовать их как на JAVA, так и на C / C ++ (чтобы они могли разговаривать друг с другом), за исключением, возможно, каналов, которые я мог представить, как это сделать.
может ли кто-нибудь прокомментировать производительность и осуществимость каждого метода в этом контексте? любой указатель / ссылка на полезную информацию о реализации?
ИЗМЕНИТЬ / ОБНОВИТЬ
следуя комментариям и ответам, которые я получил здесь, я нашел информацию о сокетах домена Unix, которые, похоже, построены прямо над каналами и спасут мне весь стек TCP. он специфичен для платформы, поэтому я планирую протестировать его с помощью JNI или с помощью juds или junixsocket .
Следующими возможными шагами будет прямая реализация каналов, а затем общая память, хотя меня предупреждали о дополнительном уровне сложности ...
Спасибо за вашу помощь