Tôi đang sử dụng gRPC với Python là máy khách/máy chủ bên trong kubernetes pods ... Tôi muốn có thể khởi chạy nhiều nhóm cùng loại (máy chủ gRPC) và để khách hàng kết nối với chúng (ngẫu nhiên).cân bằng tải phía khách hàng gRPC
Tôi đã gửi 10 nhóm máy chủ và thiết lập 'dịch vụ' để nhắm mục tiêu chúng. Sau đó, trong máy khách, tôi kết nối với tên DNS của dịch vụ - có nghĩa là kubernetes sẽ thực hiện việc cân bằng tải và đưa tôi đến một nhóm máy chủ ngẫu nhiên. Trong thực tế, khách hàng gọi các hàm gRPC (hoạt động tốt) nhưng khi tôi nhìn vào nhật ký, tôi thấy rằng tất cả các cuộc gọi đến cùng một máy chủ.
Tôi giả định máy khách đang thực hiện một số loại bộ nhớ đệm DNS dẫn đến tất cả các cuộc gọi được gửi đến cùng một máy chủ. Đây có phải là trường hợp không? Có anyway để vô hiệu hóa nó và thiết lập các khách hàng stub cùng để thực hiện một cuộc gọi "mới" và lấy một ip mới bằng DNS với mỗi cuộc gọi?
Tôi biết mức phí mà tôi có thể gây ra nếu nó sẽ truy vấn máy chủ DNS mỗi lần nhưng phân phối tải là quan trọng hơn nhiều đối với tôi vào lúc này.
EDIT
lẽ không phải là một vấn đề bộ nhớ đệm ... Có thể chỉ là cách gRPC hoạt động. HTTP/2 và kết nối có thể tái sử dụng liên tục. Bất kỳ cách nào để "ngắt kết nối" sau mỗi cuộc gọi?
Cảm ơn bạn đã trả lời chi tiết. Trên thực tế, tôi đã làm những gì bạn đề xuất và tạo kênh mới cho mỗi yêu cầu (không hiệu quả, tôi biết). Từ câu trả lời của bạn tôi hiểu rằng chỉ có ip đầu tiên trong dns sẽ nhận được yêu cầu cho đến khi nó dừng lại (không có kết nối/giết chết/bị hỏng) và chỉ sau đó khách hàng sẽ nhận được ip thứ hai và vv ... là đúng? – Idan
Có. Cho đến khi thay đổi, bạn có thể chọn vòng xoay thay cho lựa chọn đầu tiên làm chính sách LB, như đã đề cập. –
Có giải pháp thông thường nào để mở rộng quy mô lên nhiều máy chủ gRPC không? hoặc cân bằng tải phía máy khách? –