golang核心api?同樣,本篇文章主要是分析一下manual解析器中的Build方法,做了什麼事情?,接下來我們就來聊聊關于golang核心api?以下内容大家不妨參考一二希望能幫到您!
同樣,本篇文章主要是分析一下manual解析器中的Build方法,做了什麼事情?
1、manual類型的解析器,如何獲取後端grpc服務器的地址列表?有多種技術實現思路:
參考一下,grpc-go框架自帶的測試用例,如下:直接進入grpc-go/examples/features/health/client/main.go文件中:
1.func main() {
2. flag.Parse()
3. r, cleanup := manual.GenerateAndRegisterManualResolver()
4. defer cleanup()
5. r.InitialState(resolver.State{
6. Addresses: []resolver.Address{
7. {Addr: "localhost:50051"},
8. //{Addr: "localhost:50052"},
9. },
10. })
11. address := fmt.Sprintf("%s:///unused", r.Scheme())
12. conn, err := grpc.Dial(address, options...)
//---省略掉非核心代碼
主要流程說明:
那麼,調用InitialState方法,有什麼用呢?點擊進入其内部:
func (r *Resolver) InitialState(s resolver.State) {
r.bootstrapState = &s
}
将resolver.State賦值給r.bootstrapState,這麼做就是為了用戶在客戶端不需要自己手動調用,而是grpc框架在build方法内部,幫我們調用UpdateState,從而觸發平衡器的操作流程,即最終向grpc服務器端發起rpc鍊接;
如果想了解更多的内容,可以點擊下面的鍊接。
,更多精彩资讯请关注tft每日頭條,我们将持续为您更新最新资讯!