Mam aplikację Java, łączącą się przez gniazdo TCP z „serwerem” opracowanym w C / C ++.
zarówno aplikacja, jak i serwer działają na tej samej maszynie, na Solarisie (ale rozważamy ostateczną migrację do Linuksa). typ wymienianych danych to proste komunikaty (login, login ACK, potem klient o coś pyta, serwer odpowiada). każda wiadomość ma około 300 bajtów długości.
Obecnie używamy gniazd i wszystko jest w porządku, jednak szukam szybszego sposobu na wymianę danych (mniejsze opóźnienie), przy użyciu metod IPC.
Przeszukałem sieć i znalazłem odniesienia do następujących technologii:
- pamięć współdzielona
- Rury
- kolejki
- a także tak zwane DMA (bezpośredni dostęp do pamięci)
ale nie mogłem znaleźć odpowiedniej analizy ich występów, ani tego, jak zaimplementować je zarówno w JAVA, jak i C / C ++ (żeby mogli ze sobą rozmawiać), może poza rurami, które mogłem sobie wyobrazić.
Czy ktoś może wypowiedzieć się na temat wydajności i wykonalności każdej metody w tym kontekście? jakiś wskaźnik / link do przydatnych informacji o implementacji?
EDYTUJ / AKTUALIZUJ
podążając za komentarzem i odpowiedziami, które tutaj otrzymałem, znalazłem informacje o gniazdach domeny Unix, które wydają się być zbudowane tuż nad potokami i zaoszczędzą mi cały stos TCP. jest specyficzny dla platformy, więc planuję przetestować go z JNI lub z judsami lub junixsocket .
następnymi możliwymi krokami byłaby bezpośrednia implementacja potoków, a następnie pamięć współdzielona, chociaż ostrzegano mnie o dodatkowym poziomie złożoności ...
dzięki za pomoc