J'ai une application Java, connectée via une socket TCP à un "serveur" développé en C / C ++.
l'application et le serveur fonctionnent sur la même machine, une boîte Solaris (mais nous envisageons de migrer vers Linux à terme). le type de données échangées est de simples messages (login, login ACK, puis le client demande quelque chose, le serveur répond). chaque message mesure environ 300 octets.
Actuellement, nous utilisons Sockets, et tout va bien, mais je recherche un moyen plus rapide d'échanger des données (latence plus faible), en utilisant les méthodes IPC.
J'ai fait des recherches sur le net et j'ai trouvé des références aux technologies suivantes:
- la memoire partagée
- tuyaux
- files d'attente
- ainsi que ce qu'on appelle DMA (Direct Memory Access)
mais je n'ai pas pu trouver une analyse correcte de leurs performances respectives, ni comment les implémenter en JAVA et C / C ++ (pour qu'ils puissent se parler), sauf peut-être des tuyaux que je pourrais imaginer comment faire.
Quelqu'un peut-il commenter les performances et la faisabilité de chaque méthode dans ce contexte? un pointeur / lien vers des informations utiles sur la mise en œuvre?
MODIFIER / METTRE À JOUR
suite au commentaire et aux réponses que j'ai obtenus ici, j'ai trouvé des informations sur les sockets de domaine Unix, qui semblent être construites juste au-dessus des tuyaux, et me sauveraient toute la pile TCP. c'est spécifique à la plate-forme, donc je prévois de le tester avec JNI ou juds ou junixsocket .
Les prochaines étapes possibles seraient l'implémentation directe des tuyaux, puis la mémoire partagée, même si j'ai été averti du niveau supplémentaire de complexité ...
Merci de votre aide