2015-10-18 17 views
8

Khi sử dụng gRPC từ Java, tôi có thể cache sơ khai (máy khách) và gọi chúng trong môi trường đa luồng hay là các luồng an toàn và có thể được lưu trữ an toàn không?Có phải kênh/sơ đồ trong gRPC thread-safe

Nếu có sự cố ngừng mạng, tôi có nên tạo lại kênh hoặc đủ thông minh để kết nối lại không? Tôi không thể tìm thấy thông tin liên quan trên http://www.grpc.io/docs/

Cảm ơn

Trả lời

10

trả lời cho câu hỏi đầu tiên:

kênh là thread an toàn; io.grpc.Channel được đánh dấu bằng chú thích @ThreadSafe. Sơ khai cũng an toàn thread, đó là lý do tại sao cấu hình lại tạo ra một sơ khai mới.

Trả lời câu hỏi thứ hai:

Nếu có sự cố ngừng mạng, bạn không cần phải tạo lại kênh. Kênh sẽ kết nối lại với số lần trả về theo hàm mũ, gần như được mô tả bởi tài liệu connection backoff. Java không hoàn toàn phù hợp với thuật toán đó, vì nó không làm tăng thời gian chờ kết nối trong lần thử lại sau. (Không được nhầm lẫn với backoff theo hàm mũ, được thực hiện.)

Như một "nhỏ", giải quyết DNS với Netty hiện tại (v0.9.0) xảy ra khi kênh đang được tạo và sẽ không được tái thực hiện sau. Phiên bản tiếp theo không nên có vấn đề này.

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