[英]why the "loadBalancingPolicy“ must be used when "healthCheckConfig" in grpc
可疑代碼:
var serviceConfig = `{
"loadBalancingPolicy": "round_robin",
"healthCheckConfig": {
"serviceName": ""
}
}`
測試步驟:
1.只運行一台服務器和一個客戶端
2.當使用"loadBalancingPolicy": "round_robin"時,客戶端可以檢測到服務器的"status=NOT_SERVING"
3.刪除"loadBalancingPolicy": "round_robin",或者使用"pick_first"時,客戶端檢測不到服務端的"status=NOT_SERVING"
當有多個服務器地址時健康檢查有意義。 如果只有一個地址,則無需檢查健康狀況。 所以負載均衡策略round_robin
是和健康檢查一起工作的。
round_robin
會檢查健康狀態,所以它會一個接一個地向READY
地址發送請求。
pick_first
策略不支持健康檢查,因此它將使用第一個成功連接的服務器。 因此,任何請求都只會使用指定地址。
您可以在LB Policies Can Disable Health Checking When Needed中閱讀健康檢查和負載均衡策略的文檔。
為了調試客戶端和服務器,您可以添加環境變量GRPC_GO_LOG_SEVERITY_LEVEL=info
和GRPC_GO_LOG_VERBOSITY_LEVEL=99
以獲得傳輸和連接事件的更多詳細信息。
仔細閱讀源碼后,我明白了內部實現。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.