Tôi có một ứng dụng Java, kết nối thông qua cổng TCP với một "máy chủ" được phát triển bằng C / C ++.
cả ứng dụng và máy chủ đều đang chạy trên cùng một máy, một hộp Solaris (nhưng cuối cùng chúng tôi đang xem xét chuyển sang Linux). loại dữ liệu được trao đổi là các thông điệp đơn giản (đăng nhập, đăng nhập ACK, sau đó máy khách yêu cầu một cái gì đó, máy chủ trả lời). mỗi tin nhắn dài khoảng 300 byte.
Hiện tại chúng tôi đang sử dụng Sockets và tất cả đều ổn, tuy nhiên tôi đang tìm một cách nhanh hơn để trao đổi dữ liệu (độ trễ thấp hơn), bằng cách sử dụng các phương pháp IPC.
Tôi đã nghiên cứu mạng và tìm ra tài liệu tham khảo về các công nghệ sau:
- chia sẻ bộ nhớ
- đường ống
- hàng đợi
- cũng như những gì được gọi là DMA (Truy cập bộ nhớ trực tiếp)
nhưng tôi không thể tìm thấy phân tích thích hợp về hiệu suất tương ứng của chúng, cũng không phải cách triển khai chúng trong cả JAVA và C / C ++ (để chúng có thể nói chuyện với nhau), ngoại trừ có thể là các đường ống mà tôi có thể hình dung cách làm.
bất cứ ai có thể nhận xét về hiệu suất và tính khả thi của mỗi phương pháp trong bối cảnh này? bất kỳ con trỏ / liên kết đến thông tin triển khai hữu ích?
CHỈNH SỬA / CẬP NHẬT
theo nhận xét và câu trả lời tôi nhận được ở đây, tôi tìm thấy thông tin về Unix Domain Sockets, có vẻ như chỉ được xây dựng trên đường ống và sẽ giúp tôi tiết kiệm toàn bộ ngăn xếp TCP. nó dành riêng cho nền tảng, vì vậy tôi dự định thử nghiệm nó với JNI hoặc juds hoặc junixsocket .
Các bước khả thi tiếp theo sẽ là thực hiện trực tiếp các đường ống, sau đó chia sẻ bộ nhớ, mặc dù tôi đã được cảnh báo về mức độ phức tạp hơn ...
Cảm ơn bạn đã giúp đỡ