国产 无码 综合区,色欲AV无码国产永久播放,无码天堂亚洲国产AV,国产日韩欧美女同一区二区

go-zero/grpc的rpc服務(wù)間傳遞額外數(shù)據(jù)

這篇具有很好參考價(jià)值的文章主要介紹了go-zero/grpc的rpc服務(wù)間傳遞額外數(shù)據(jù)。希望對(duì)大家有所幫助。如果存在錯(cuò)誤或未考慮完全的地方,請(qǐng)大家不吝賜教,您也可以點(diǎn)擊"舉報(bào)違法"按鈕提交疑問。

go-zero/grpc的rpc服務(wù)間傳遞額外數(shù)據(jù)

2024/02/18

客戶端:

md := metadata.New(map[string]string{"signature": "0123456789", "timestamp": "2021-07-01 00:00:00"})
ctx := metadata.NewOutgoingContext(ctx, md)
addResp, err := adderClient.Add(ctx, addReq) // rpc 調(diào)用

初始化 md 也可如下方式:

md := metadata.Pairs(
	"signature", "0123456789",
	"timestamp", "2021-07-01 00:00:00",
)
ctx := metadata.NewOutgoingContext(ctx, md)
addResp, err := adderClient.Add(ctx, addReq) // rpc 調(diào)用

追加新的如下:

ctx = metadata.AppendToOutgoingContext(ctx, "noncestr", "abc")

也可使用 md 的 Set 和 Append 方法追加:

md.Set("extra", "extra-value")
md.Append("append", "append-value")

服務(wù)端:

md, _ := metadata.FromIncomingContext(ctx)
或直接:
vals := metadata.ValueFromIncomingContext(ctx, "signature")

注意 key 都會(huì)被轉(zhuǎn)為小寫,即使客戶端為大寫:

// Keys beginning with "grpc-" are reserved for grpc-internal use only and may
// result in errors if set in metadata.
func New(m map[string]string) MD {
	md := make(MD, len(m))
	for k, val := range m {
		key := strings.ToLower(k)
		md[key] = append(md[key], val)
	}
	return md
}

func Pairs(kv ...string) MD {
	if len(kv)%2 == 1 {
		panic(fmt.Sprintf("metadata: Pairs got the odd number of input pairs for metadata: %d", len(kv)))
	}
	md := make(MD, len(kv)/2)
	for i := 0; i < len(kv); i += 2 {
		key := strings.ToLower(kv[i])
		md[key] = append(md[key], kv[i+1])
	}
	return md
}

func (md MD) Set(k string, vals ...string) {
	if len(vals) == 0 {
		return
	}
	k = strings.ToLower(k)
	md[k] = vals
}

而且 key 只能由 數(shù)字、字母和三個(gè)特殊字符“-_.”組成,大寫字母會(huì)自動(dòng)被轉(zhuǎn)為小寫字母。文章來源地址http://www.zghlxwxcb.cn/news/detail-826801.html

到了這里,關(guān)于go-zero/grpc的rpc服務(wù)間傳遞額外數(shù)據(jù)的文章就介紹完了。如果您還想了解更多內(nèi)容,請(qǐng)?jiān)谟疑辖撬阉鱐OY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章,希望大家以后多多支持TOY模板網(wǎng)!

本文來自互聯(lián)網(wǎng)用戶投稿,該文觀點(diǎn)僅代表作者本人,不代表本站立場(chǎng)。本站僅提供信息存儲(chǔ)空間服務(wù),不擁有所有權(quán),不承擔(dān)相關(guān)法律責(zé)任。如若轉(zhuǎn)載,請(qǐng)注明出處: 如若內(nèi)容造成侵權(quán)/違法違規(guī)/事實(shí)不符,請(qǐng)點(diǎn)擊違法舉報(bào)進(jìn)行投訴反饋,一經(jīng)查實(shí),立即刪除!

領(lǐng)支付寶紅包贊助服務(wù)器費(fèi)用

相關(guān)文章

  • go-zero踩坑:在api層邏輯代碼中設(shè)置context超時(shí)時(shí)間,傳遞到rpc層邏輯代碼時(shí)設(shè)置的context超時(shí)時(shí)間消失 + api層和rpc層Timeout配置說明

    在api層邏輯代碼中設(shè)置context超時(shí)時(shí)間,傳遞到rpc層邏輯代碼時(shí)設(shè)置的context超時(shí)時(shí)間消失 我在用 go-zero 時(shí),在 api 層傳遞 context 到 rpc 層,但報(bào)錯(cuò): rpc error:DeadlineExceeded desc = context deadline exceeded ,這是 上下文超時(shí) 導(dǎo)致的(客戶端用的上下文是 context.WithTimeout 超時(shí)時(shí)間 小于

    2024年02月11日
    瀏覽(37)
  • go-zero的服務(wù)發(fā)現(xiàn)源碼閱讀

    go-zero的服務(wù)發(fā)現(xiàn)源碼閱讀

    服務(wù)發(fā)現(xiàn)原理與grpc源碼解析_wangxiaoangg的博客-CSDN博客 ? go-zero rpc demo官方文檔:rpc編寫與調(diào)用 | go-zero 目錄 一 服務(wù)注冊(cè) 1.?創(chuàng)建rpc服務(wù) 2. 啟動(dòng)rpc服務(wù) 3.?registerEtcd做了什么 4.?discov.NewPublisher 服務(wù)發(fā)布者 二 服務(wù)發(fā)現(xiàn) 1.定義注冊(cè)resolver 2.解析etcd地址創(chuàng)建鏈接 3.update方法 在看rp

    2024年02月06日
    瀏覽(16)
  • go-zero微服務(wù)實(shí)戰(zhàn)——服務(wù)構(gòu)建

    go-zero微服務(wù)實(shí)戰(zhàn)——服務(wù)構(gòu)建

    接上一節(jié)go-zero微服務(wù)實(shí)戰(zhàn)——基本環(huán)境搭建。搭建好了微服務(wù)的基本環(huán)境,開始構(gòu)建整個(gè)微服務(wù)體系了,將其他服務(wù)也搭建起來。 order的目錄結(jié)構(gòu),如下 根目錄 api服務(wù) rpc服務(wù) 自定義邏輯層logic 自定義參數(shù)層models 自定義工具層util api服務(wù)和rpc服務(wù)都是基于goctl一鍵生成的,當(dāng)

    2024年02月14日
    瀏覽(23)
  • 使用go-zero快速構(gòu)建微服務(wù)

    使用go-zero快速構(gòu)建微服務(wù)

    本文是對(duì) 使用go-zero快速構(gòu)建微服務(wù) [1] 的親手實(shí)踐 編寫API Gateway代碼 mkdir api goctl api -o api/bookstore.api cd api goctl api go -api bookstore.api -dir . go run bookstore.go -f etc/bookstore-api.yaml 啟動(dòng)API Gateway服務(wù),默認(rèn)偵聽在8888端口 因?yàn)槟J(rèn)生成的 api/etc/bookstore-api.yml 為: 按提示下載,再次運(yùn)行

    2024年02月13日
    瀏覽(25)
  • go-zero學(xué)習(xí) 第三章 微服務(wù)

    go-zero學(xué)習(xí) 第三章 微服務(wù)

    1.1 API服務(wù)模塊 goctl 使用 api 文件生成 api服務(wù) 命令: 1.2 RPC服務(wù)模塊 goctl 使用 protoc 文件生成 rpc服務(wù) 命令: 注意: --go_out 、 --go-grpc_out 、 --zrpc_out 三者配置的路徑需要完全一致,否則會(huì)報(bào)下列錯(cuò)誤。 基礎(chǔ)代碼:已生成基本的API服務(wù)、RPC服務(wù)。 這里以API服務(wù)調(diào)用RPC服務(wù)的登

    2024年02月16日
    瀏覽(21)
  • 【go-zero】go-zero阿里云oss 前端上傳文件到go-zero API服務(wù) 并在k8s pod中創(chuàng)建文件 并推送到阿里云oss 最佳實(shí)踐

    問題:在本地通過上傳文件,然后將文件推送到aliyun的oss中,是沒問題的 但是部署到了k8s中,則出現(xiàn)了問題,一直報(bào)錯(cuò)沒有創(chuàng)建的權(quán)限 思路:開始認(rèn)為應(yīng)該將該文件掛載到configmap中,然后通過這種方式修改了deployment和dockerfile。最終發(fā)現(xiàn)應(yīng)該是go的創(chuàng)建文件路徑方式搞錯(cuò)了,

    2024年02月13日
    瀏覽(29)
  • 微服務(wù)框架 go-zero logx 日志組件剖析

    微服務(wù)框架 go-zero logx 日志組件剖析

    上一篇我們說到咱們還剩下 addTenant 功能還未實(shí)現(xiàn),不知道有沒有兄弟感興趣去實(shí)驗(yàn)一波的,本篇文章進(jìn)行簡(jiǎn)要補(bǔ)充 根據(jù)上一篇文章分析,其實(shí)我們只需要執(zhí)行如下幾步即可: 編寫 tenant.api,提供外部 addTenant 的 http 接口 編寫 tenant.api 提供一個(gè) POST http 的接口 / api /tenant/addt

    2024年02月11日
    瀏覽(23)
  • Go-Zero微服務(wù)快速入門和最佳實(shí)踐(一)

    并發(fā)編程和分布式微服務(wù) 是我們Gopher升職加薪的關(guān)鍵。 畢竟Go基礎(chǔ)很容易搞定,不管你是否有編程經(jīng)驗(yàn),都可以比較快速的入門Go語言進(jìn)行簡(jiǎn)單項(xiàng)目的開發(fā)。 雖說好上手,但是想和別人拉開差距,提高自己的競(jìng)爭(zhēng)力, 搞懂分布式微服務(wù)和并發(fā)編程還是灰常重要的,這也是我

    2024年04月28日
    瀏覽(21)
  • 微服務(wù)架構(gòu)|go-zero 的自適應(yīng)熔斷器

    原文鏈接: go-zero 的自適應(yīng)熔斷器 上篇文章我們介紹了微服務(wù)的限流,詳細(xì)分析了計(jì)數(shù)器限流和令牌桶限流算法,這篇文章來說說熔斷。 熔斷和限流還不太一樣,限流是控制請(qǐng)求速率,只要還能承受,那么都會(huì)處理,但熔斷不是。 在一條調(diào)用鏈上,如果發(fā)現(xiàn)某個(gè)服務(wù)異常,

    2024年02月10日
    瀏覽(24)
  • go-zero微服務(wù)實(shí)戰(zhàn)——etcd服務(wù)注冊(cè)與發(fā)現(xiàn)

    go-zero微服務(wù)實(shí)戰(zhàn)——etcd服務(wù)注冊(cè)與發(fā)現(xiàn)

    淺談etcd服務(wù)注冊(cè)與發(fā)現(xiàn) etcd官網(wǎng) etcd中文文檔 apt安裝etcd,啟動(dòng)命令十分簡(jiǎn)單 etcd 。 etcd分為v2版本和v3版本,命令有所不一樣,使用命令 etcdctl h 查看 如上圖所示并沒有出現(xiàn)API的版本,此時(shí)是使用默認(rèn)的v2版本,但是v2版本很多命令使用不了,因此切換為v3版本,命令如下: e

    2024年02月12日
    瀏覽(23)

覺得文章有用就打賞一下文章作者

支付寶掃一掃打賞

博客贊助

微信掃一掃打賞

請(qǐng)作者喝杯咖啡吧~博客贊助

支付寶掃一掃領(lǐng)取紅包,優(yōu)惠每天領(lǐng)

二維碼1

領(lǐng)取紅包

二維碼2

領(lǐng)紅包