成人性生交大片免费看视频r_亚洲综合极品香蕉久久网_在线视频免费观看一区_亚洲精品亚洲人成人网在线播放_国产精品毛片av_久久久久国产精品www_亚洲国产一区二区三区在线播_日韩一区二区三区四区区区_亚洲精品国产无套在线观_国产免费www

主頁 > 知識庫 > golang在GRPC中設(shè)置client的超時時間

golang在GRPC中設(shè)置client的超時時間

熱門標(biāo)簽:外呼系統(tǒng)顯本地手機(jī)號 阿克蘇地圖標(biāo)注 百度地圖標(biāo)注后傳給手機(jī) 外呼系統(tǒng)用什么卡 壽光微信地圖標(biāo)注 涿州代理外呼系統(tǒng) 評價(jià)高的400電話辦理 電話機(jī)器人軟件免費(fèi) excel地圖標(biāo)注分布數(shù)據(jù)

超時

建立連接

主要就2函數(shù)Dail和DialContext。

// Dial creates a client connection to the given target.
func Dial(target string, opts ...DialOption) (*ClientConn, error) {
    return DialContext(context.Background(), target, opts...)
}
func DialContext(ctx context.Context, target string, opts ...DialOption) (conn *ClientConn, err error){...}

DialContext 太長了不帖了.看Dial實(shí)際上也是調(diào)用DialContext來實(shí)現(xiàn)的.如果你想在建立連接的時候使用超時控制.就使用

DialContext傳入一個Timeout的context,就像下面的例子

ctx1, cel := context.WithTimeout(context.Background(), time.Second*3)
defer cel()
conn, err := grpc.DialContext(ctx1, address, grpc.WithBlock(), grpc.WithInsecure())

另外調(diào)用Dial建立連接默認(rèn)只是返回一個ClientConn的指針,相當(dāng)于new了一個ClientConn 把指針返回給你。并不是一定要建立真實(shí)的h2連接.至于真實(shí)的連接建立實(shí)際上是一個異步的過程。

當(dāng)然了如果你想等真實(shí)的鏈接完全建立再返回ClientConn可以通過WithBlock傳入Options來實(shí)現(xiàn),當(dāng)然了這樣的話鏈接如果建立不成功就會一直阻塞直到Contex超時。

真正的建立鏈接的代碼后面介紹重試的時候會再詳細(xì)介紹。

調(diào)用超時

這個比較簡單

ctx, cancel := context.WithTimeout(context.TODO(), time.Second*3)
defer cancel()
 r, err := c.SayHello(ctx, pb.HelloRequest{Name: name})

如上代碼傳入一個timeout context就可以。

Server

type SearchService struct{}
 
func (s *SearchService) Search(ctx context.Context, r *pb.SearchRequest) (*pb.SearchResponse, error) {
    for i := 0; i  5; i++  {
        if ctx.Err() == context.Canceled {
            return nil, status.Errorf(codes.Canceled, "SearchService.Search canceled")
        }
 
        time.Sleep(1 * time.Second)
    }
 
    return pb.SearchResponse{Response: r.GetRequest() + " Server"}, nil
}
 
func main() {
    ...
}

而在 Server 端,由于 Client 已經(jīng)設(shè)置了截止時間。Server 勢必要去檢測它

否則如果 Client 已經(jīng)結(jié)束掉了,Server 還傻傻的在那執(zhí)行,這對資源是一種極大的浪費(fèi)

因此在這里需要用 ctx.Err() == context.Canceled 進(jìn)行判斷,為了模擬場景我們加了循環(huán)和睡眠 ?

驗(yàn)證

重新啟動 server.go 和 client.go,得到結(jié)果:

$ go run client.go
2018/10/06 17:45:55 client.Search err: deadline
exit status 1

總結(jié)

本章節(jié)比較簡單,你需要知道以下知識點(diǎn):

怎么設(shè)置 Deadlines

為什么要設(shè)置 Deadlines

你要清楚地明白到,gRPC Deadlines 是很重要的,否則這小小的功能點(diǎn)就會要了你生產(chǎn)的命。

補(bǔ)充:golang使用grpc超時控制和對沖策略

超時控制

grcp超時控制設(shè)置在客戶端調(diào)用服務(wù)時,如果設(shè)定了超時時間,客戶端會立即返回超時。超時控制一般有三個因素:鏈路超時:上有調(diào)用端通過協(xié)議字段把自己允許的超時時間傳給當(dāng)前服務(wù),表示在該時間內(nèi)返回?cái)?shù)據(jù),超時返回已無意義。流程如下圖A調(diào)用B的總超時情況。

消息超時:服務(wù)端收到請求消息到返回響應(yīng)數(shù)據(jù)的最長消息處理時間。下圖的B內(nèi)部的當(dāng)前請求整體超時時間。調(diào)用超時:當(dāng)前服務(wù)調(diào)用下游服務(wù)設(shè)置的每一個rpc請求的超時時間。如下圖B調(diào)用C的單個超時時間。通常一次請求會連續(xù)調(diào)用多次rpc,這個調(diào)用超時控制的是每個rpc的獨(dú)立超時時間。

發(fā)起rpc調(diào)用請求時,需要計(jì)算此次rpc調(diào)用的超時時間。真正生效的超時時間是通過以上三個因素實(shí)時計(jì)算的最小值,計(jì)算過程

如下:

1、首先計(jì)算鏈路超時和消息超時的最小值,如鏈路超時2s,消息超時1s,則當(dāng)前消息的最長處理時間為1s。

2、發(fā)起rpc調(diào)用時,再次計(jì)算當(dāng)前消息最長處理時間和單個超時時間的最小值,比如:上圖的B->C設(shè)置的單個超時時間為5s,則實(shí)際上B調(diào)用C的真實(shí)超時仍然是1s,其實(shí)只要超時時間大于當(dāng)前最長處理時間都是無效的,都會取最小值。再比如B->C單個超時時間為500ms,這種情況B調(diào)用C的真實(shí)超時即為500ms,此時500ms這個值也會通過協(xié)議字段傳給C,在服務(wù)端C的視角來看就是他的鏈路超時時間。鏈路超時時間會在整個rpc調(diào)用鏈上一直傳遞下去,并逐漸減少,直至為0,這樣避免出現(xiàn)死循環(huán)調(diào)用的問題。

3、因?yàn)槊恳淮蝦pc調(diào)用都會實(shí)際消耗一部分時間,所以當(dāng)前消息最長處理時間需要實(shí)時計(jì)算剩余時間,比如上面B調(diào)用C真實(shí)耗時200ms,此時最長處理時間就只剩下800ms了。此時發(fā)起第二次rpc調(diào)用時,則需要計(jì)算此時剩余的消息超時時間和單個調(diào)用時間的最小值。如上圖的B->D設(shè)置的單個超時時間為1s,則實(shí)際生效的超時時間仍然為800ms。鏈路超時設(shè)置:golang的context.Context根據(jù)協(xié)議里面的timeout字段和框架配置的timeout字段。設(shè)置好當(dāng)前請求的最長處理時間,然后交給用戶使用,并在處理函數(shù)結(jié)束時會立馬cancel掉當(dāng)前context。所以在創(chuàng)建新的goroutine時,需要重新設(shè)定新的context。

對沖策略

對沖策略不是被動的等待上一次請求超時或者失敗,在對沖延時時間內(nèi)(或小于超時時間)如果沒有收到回復(fù)的包就會再觸發(fā)一個請求。

與重試策略不同的是同一時間內(nèi)in-fliaght可能有多個,當(dāng)接收到第一回復(fù)時,其他的回復(fù)會被忽略。

一、重試策略:

對失敗的請求,進(jìn)行重新請求。

由圖中可以看出,client一共進(jìn)行了三次請求,前兩次均失敗,并且在重新請求時都會隨機(jī)避段時間,防止請求毛刺,第三次請求成功,返回給應(yīng)用層。對于每次嘗試,我們都會盡可能地將請求發(fā)往不同的節(jié)點(diǎn)。

通常重試策略有三種配置:

1、失敗重新請求的最大次數(shù),達(dá)到最大次數(shù)仍然失敗,不再進(jìn)行重試;

2、退避時間:退避時間取的是 random(0, delay);

3、可重試錯誤碼:設(shè)置可錯誤碼,對于不可重試的,立即停止重試并將錯誤返回應(yīng)用層。

二、對沖策略

上圖中client一共進(jìn)行了4次,橙、藍(lán)、綠、紫

橙色是第一次嘗試。在由 client 發(fā)起后,server2 很快便收到了。但是 server2 的因?yàn)榫W(wǎng)絡(luò)等問題,直到綠色請求成功,并返回給應(yīng)用層后,它的正確回包才姍姍來遲。盡管它成功了,但我們必須丟棄它,因?yàn)槲覀円呀?jīng)將另一個成功的回包返回給應(yīng)用層了。

藍(lán)色是第二次嘗試。因?yàn)槌壬埱笤趯_時延(hedging delay)后還沒有回包,因此我們發(fā)起了一次新的嘗試。這次嘗試選擇了 server1(我們會盡可能地為每次嘗試選擇不同的節(jié)點(diǎn))。藍(lán)色嘗試的回包比較快,在對沖時延之前便返回了。但是卻失敗了。我們立刻發(fā)起了新一次嘗試。

綠色是第三次嘗試。盡管它的回包可能有點(diǎn)慢(超過了對沖時延,因此又觸發(fā)了一次新的嘗試),但是它成功了!一旦我們收到第一個成功的回包,便立刻將它返回給了應(yīng)用層。

紫色是第四次嘗試。剛發(fā)起后,我們便收到了綠色成功的回包。對紫色來說,它可能處于很多狀態(tài):請求還在 client gRPC 內(nèi),這時,我們有機(jī)會取消它;請求已經(jīng)進(jìn)入了 client 的內(nèi)核或者已經(jīng)由網(wǎng)卡發(fā)出,無論如何,我們已經(jīng)沒有機(jī)會取消它了。紫色請求上的 ✘ 表示我們會盡可能地取消紫色請求。注意,即使紫色請求最終成功地到達(dá)了 server2,它的回包也會像橙色一樣被丟棄。

由以上可知對沖策略更像是添加了等待時間的重試,但是他沒有退避機(jī)制,一旦收到錯誤的包,立刻發(fā)起重試。這種對于需要解決長尾問題時推薦使用,一般情況建議使用重試策略。

對沖策略一般有三種配置

1、對沖延時:在對對沖時延內(nèi)沒有收到回包時便會立刻發(fā)起新的嘗試;

2、最大請求次數(shù):一旦耗盡,便等待并返回最后一個回包,無論它是否成功或失敗;

3、非致命錯誤:返回致命錯誤會立刻中止對沖,等待并返回最后一個回包,無論它是否成功或失敗。返回非致命錯誤會立刻觸發(fā)一次新的嘗試(對沖時延計(jì)時器會被重置)。

以上為個人經(jīng)驗(yàn),希望能給大家一個參考,也希望大家多多支持腳本之家。如有錯誤或未考慮完全的地方,望不吝賜教。

您可能感興趣的文章:
  • 解決golang時間字符串轉(zhuǎn)time.Time的坑
  • golang時間處理工具箱now的使用詳解
  • golang time包做時間轉(zhuǎn)換操作
  • golang時間字符串和時間戳轉(zhuǎn)換的案例
  • golang 實(shí)現(xiàn)tcp server端和client端,并計(jì)算RTT時間操作
  • golang 實(shí)現(xiàn)時間戳和時間的轉(zhuǎn)化

標(biāo)簽:蘭州 欽州 汕頭 雞西 吐魯番 銅川 重慶 梅河口

巨人網(wǎng)絡(luò)通訊聲明:本文標(biāo)題《golang在GRPC中設(shè)置client的超時時間》,本文關(guān)鍵詞  golang,在,GRPC,中,設(shè)置,client,;如發(fā)現(xiàn)本文內(nèi)容存在版權(quán)問題,煩請?zhí)峁┫嚓P(guān)信息告之我們,我們將及時溝通與處理。本站內(nèi)容系統(tǒng)采集于網(wǎng)絡(luò),涉及言論、版權(quán)與本站無關(guān)。
  • 相關(guān)文章
  • 下面列出與本文章《golang在GRPC中設(shè)置client的超時時間》相關(guān)的同類信息!
  • 本頁收集關(guān)于golang在GRPC中設(shè)置client的超時時間的相關(guān)信息資訊供網(wǎng)民參考!
  • 推薦文章
    国产粉嫩一区二区三区在线观看| 国产精品无码电影在线观看| 在线观看欧美视频| 久久久久成人精品| 精品久久人人做人人爰| 国产午夜精品无码一区二区| 中国一级大黄大黄大色毛片| 国产精品久久久精品四季影院| 亚洲免费成人av电影| 一区二区三区四区乱视频| 91激情视频在线观看| 亚洲最大av在线| 日韩免费在线观看| 亚洲网址你懂得| 亚洲精品色图| 黄色片免费网址| av电影网站在线观看| 黄色av免费在线观看| 全免费a级毛片| 欧美久久久久久一卡四| 亚洲综合在线网| 国产特级黄色片| 高清av一区二区三区| 91免费人成网站在线观看18| 资源av在线| 久久精品99久久久香蕉| 中文字幕2022永久在线| 狂野欧美性猛交xxxx巴西| 精品国产sm最大网站免费看| 在线黄色网页| 久久久亚洲精选| 国产爆乳无码一区二区麻豆| 亚洲欧美电影| 网站黄色在线观看| 久久综合给合久久狠狠狠97色69| 人人妻人人玩人人澡人人爽| 日韩精品 欧美| 国产精品一区二区免费视频| 在线观看欧美日韩电影| 国产视频在线一区二区| 国产精品xxx在线观看| 国产精品一区二区在线观看| 日韩激情免费| 日韩电影在线观看中文字幕| 欧美激情99| 欧美高清hd| 亚洲国产成人精品无码区99| 亚洲电影中文字幕在线观看| 91久久久久久久久久久久久久| 好吊成人免视频| 狠狠人妻久久久久久综合麻豆| 欧美性xxxxxbbbbbb精品| 国产午夜精品理论片a级大结局| 黄色一区二区视频| 免费观看黄色一级视频| 日韩区欧美区| 日韩在线视频观看正片免费网站| 色愁久久久久久| 久久精品欧美一区二区| 日本韩国欧美三级| 日韩国产在线一| 最新国产热播激情视频| gogogo影视剧免费观看在线观看| 免费观看一区二区三区毛片| 亚洲美女屁股眼交| 99这里只有久久精品视频| 日韩伦理视频| 91肉色超薄丝袜脚交一区二区| 国产在线www| 国产在线视频网站| 国产一区二区三区免费在线| 成人天堂噜噜噜| 精品人体无码一区二区三区| 日韩精品伦理第一区| 欧洲大片精品免费永久看nba| 96pao国产成视频永久免费| 久久国产乱子精品免费女| 97国产成人精品视频| 日韩高清三级| 久草在线资源视频| 高清久久久久久| av加勒比在线| h版电影在线播放视频网站| 欧美激情综合色综合啪啪| 少妇久久久久久| 欧美自拍视频在线| 樱桃国产成人精品视频| gogo久久日韩裸体艺术| 国产激情片在线观看| 一区二区在线免费播放| 精品丰满少妇一区二区三区| 成人线上视频| 伊人成人开心激情综合网| 亚洲性视频大全| 青青草av网站| 香蕉大人久久国产成人av| 欧美在线免费播放| 欧美一级一级性生活免费录像| 一二三区在线播放| 久久成人亚洲精品| 不卡一区二区三区四区五区| 精品福利在线导航| 美女www一区二区| www.日日操| 国产又黄又粗又猛又爽| 欧美一区二区三区另类| | 99热超碰在线| 高清中文字幕一区二区三区| 日韩精品一区二区三区蜜臀| 日韩影视一区二区三区| 色婷婷视频在线| 国产最新精品视频| 亚洲国产1区| 日本10禁啪啪无遮挡免费一区二区| 91蝌蚪porny九色| 精品在线观看国产| 日本aa大片在线播放免费看| 日韩专区视频网站| 欧美一区二区综合| 日韩av首页| 久久成人羞羞网站| 茄子视频成人在线| 国产午夜精品一区二区三区欧美| 欧美成人三区| 激情无码人妻又粗又大| 成人网18入口| 大桥未久女教师av一区二区| 豆国产96在线|亚洲| 麻豆精品一区二区三区| 国内精品卡一卡二卡三新区| 亚洲国产免费| 黄色精品网站| 亚洲aⅴ优女av综合久久久| 亚洲在线免费播放| 日本高清中文字幕在线| 超碰超碰超碰超碰| 中文字幕日韩精品一区| 久久成人综合视频| 欧美国产中文字幕| 久久奇米777| 一级在线观看| 五月激情久久久| 日韩成人在线网站| av中文字幕一区二区三区| 国产二区视频| 中国女人内谢69视频| 欧洲午夜精品| 国外成人在线视频网站| 特级毛片在线| 久久久亚洲国产天美传媒修理工| 水蜜桃亚洲精品| 欧美白嫩的18sex少妇| 日本福利视频在线观看| 国产偷国产偷亚洲高清人白洁| 欧美成人福利视频| 亚洲国产精品久久久男人的天堂| 在线观看成人av| 一本色道久久综合亚洲二区三区| 国产精品一区在线观看乱码| 亚洲这里只有精品| 欧美一级在线亚洲天堂| 综合蜜桃精品| 韩国三级与黑人| sedog在线观看| 香蕉视频在线观看网站| 亚洲精品一区国产| 亚洲国产日韩欧美在线动漫| 日韩欧美亚洲视频| 国产小视频一区| 欧美日韩电影在线播放| 亚洲精品欧美在线| 在线看片福利| 欧洲永久精品大片ww免费漫画| 国产一区视频在线看| 日韩一区国产二区欧美三区| 亚洲欧美影音先锋| 国产精品成人观看视频免费| 欧美一区二区性| 欧美日韩不卡一区二区| 国产一区二区三区亚洲综合| 91搞黄在线观看| 国产精品久久久久久精| 91久久精品国产91性色| 51精品国产人成在线观看| 免费看精品久久片| 亚洲美女福利视频| 成人资源www网在线最新版| 国产在线视频一区二区三区| 国产精品精品久久久久久| 姬川优奈av一区二区在线电影| 久久精品在线观看视频| 我家有个日本女人| 在线视频观看你懂的| 三级三级久久三级久久18| 小视频在线播放| 亚洲天堂av资源在线观看| 亚洲三级视频在线观看| 欧美熟女一区二区| 国产高清免费观看| 久久er99精品| 欧美a级一区二区| 亚洲av无码乱码国产精品| 国产福利亚洲| a级免费视频| 午夜免费日韩视频| 亚洲精选一区二区三区| 亚洲人成电影在线观看天堂色| 国产亚洲精品福利| 亚洲香蕉av在线一区二区三区| 久久免费小视频| www.com在线观看| 日本www在线播放| 日本在线观看一区二区三区| 色男人天堂综合再现| 中文字幕久久午夜不卡| 91精品久久久久久久久久久| 天堂成人在线观看| 久久综合图区亚洲综合图区| 久久精品国产亚洲av麻豆色欲| 亚洲综合av一区二区三区| 女女同性女同一区二区三区91| 欧美zozo| 国产精品hd| 要久久爱电视剧全集完整观看| 污污片在线免费视频| 国产精品久久久久久av下载红粉| 久久狠狠亚洲综合| 夫妻av一区二区| 色之综合天天综合色天天棕色| 欧美日韩亚洲精品一区二区三区| 国产亚洲一二三区| 四虎永久在线观看| 97人妻精品一区二区三区软件| 久久不见久久见中文字幕免费| 天天综合色天天| brazzers欧美精品| 日韩伦理在线视频| 欧美午夜精品久久久久久蜜| 日韩av加勒比| 在线视频观看日韩| 夜夜嗨av一区二区三区免费区| **网站欧美大片在线观看| 热99精品只有里视频最新| 在线看三级电影| 亚洲品质自拍视频网站| 97精品国产| 少妇高潮惨叫久久久久| 日本一卡2卡三卡4卡网站| 波多野结衣亚洲| 青青草原国产免费| 国产午夜精品一区二区理论影院| 一级黄色片网址| 欧美一区二区视频在线观看2022| 中文字幕乱码一区二区三区| 不卡的免费av| 能看的毛片网站| 最新国产拍偷乱拍精品| 亚洲毛片一区| 国产偷国产偷亚洲清高网站| 成人精品视频一区二区三区| 热久久中文字幕| 草草久久久无码国产专区| 日本女优在线视频一区二区| 欧产日产国产精品98| 各处沟厕大尺度偷拍女厕嘘嘘| 99久久人妻无码中文字幕系列| 精品国产一区二区三区久久久蜜臀| 国产高清成人久久| 偷偷要91色婷婷| 亚洲天堂网中文字| 国产999精品久久久| 国产精品福利影院| 国产黄色片在线免费观看| 国产精品一区二区三区在线播放| 亚洲精品国产一区二区在线| 欧洲av一区二区三区| 国产一区二区精品久久99| 国产调教视频一区| 欧美男人操女人视频| 91精品国产高清91久久久久久| 欧美色图自拍| 精品日本高清在线播放| 最近2018年手机中文在线| 久草在线视频资源| 中文字幕精品久久| 国产精品理人伦一区二区三区| 亚洲午夜91| 五月婷婷六月合| 日本不卡一区二区在线观看| 亚洲激情黄色| 日本成年人网址| 视频精品国内| 久草视频免费看| 精品国内自产拍在线观看视频| 欧美精品久久久久久久久46p| 黄色激情视频网址| 91传媒在线免费观看| 美女视频久久黄| 欧美性xxxxxx| chinese偷拍一区二区三区| 一区视频网站| 性做久久久久久免费观看| 国产精品国产亚洲精品看不卡15| 国产精品国产精品国产专区不卡| 极品尤物av丝袜美腿在线观看| 欧洲亚洲一区二区三区四区五区| 色综合天天综合狠狠| 五月婷婷一区| 天堂www中文在线资源| 欧美一级片一区| 亚洲免费观看在线观看| 丁香婷婷综合激情五月色| 欧美 日韩 国产一区二区在线视频| 少妇人妻大乳在线视频| 粉嫩91精品久久久久久久99蜜桃| 欧美综合视频在线| 波多野结衣在线网站| 中文精品久久久久人妻不卡| 蜜桃久久久久久| 秋霞蜜臀av久久电影网免费| 欧美亚洲国产免费| 久久久久看片| 日本精品一级二级| 亚洲精品日韩综合观看成人91| 卡通动漫国产精品| 午夜电影网一区| 久久精品99久久无色码中文字幕|