2015-06-28 12 views
7

use-case của tôi:Truyền thông liên tiến trình Java trong năm 2015 (không có đĩa nồi hơi)?

  • quá trình-1 "cơ sở dữ liệu" mà tải> 1GB dữ liệu vào bộ nhớ từ dữ liệu tập tin (chỉ tải mất 30-60 giây)
  • quá trình-2 "khách hàng" muốn truy cập dữ liệu đó nhanh chóng mà không phải tải tất cả các dữ liệu đó

Chúng là các quá trình riêng biệt chạy trên cùng một máy. Dữ liệu tôi muốn chuyển giữa các tiến trình là Bộ sưu tập (danh sách, bản đồ) chứa các kiểu nguyên thủy (số nguyên, chuỗi, booleans).

Tôi biết rằng điều này có thể được thực hiện bằng cách mở ổ cắm kết nối (tạo một số giao thức cụ thể trong tuần tự hóa dữ liệu) hoặc bằng RMI (nhiều hơn hoặc ít hơn cùng một điều). Chúng tôi đã làm cả hai cách đây 15 năm rồi. Đã không ai tự động hoá điều này bây giờ để bằng cách sử dụng một số thư viện bạn chỉ có thể thiết lập @InterProcessMethod("some", "details") và có thể gọi phương thức trên JVM khác nhau mà không cần phải thực hiện serializations vv mỗi lần? (vì các loại chính này không nên quá phức tạp).

Một công ty có tên Caucho đã từng có một số sản phẩm để giải quyết vấn đề này nhưng tôi không thể tìm thấy nó từ trang web của họ nữa. Sau đó, một lần nữa, nó là một loại dịch vụ web thay vì RPC.

+0

OK, tôi thích câu hỏi này. – Mordechai

+3

Không, họ không ... vì vấn đề phức tạp hơn bạn tưởng tượng. –

+0

Một câu hỏi hay. Tuy nhiên, ngoài chủ đề. – CKing

Trả lời

0

Không phải bây giờ. Càng nhiều "2015" sẽ ở lại với RMI, hoặc, refactor backend của bạn thành REST API và kết nối nó thông qua JSON, và sau đó, nếu bạn muốn, serialize/deserialize nó với Jackson hoặc thậm chí bằng tay (Trong một số định hướng rất hiệu quả kịch bản).

Các vấn đề liên quan