golang的etcd

etcd 是由CoreOS開(kāi)發(fā),用于可靠地存儲(chǔ)集群的配置數(shù)據(jù)的一種持久性,輕量型的,分布式的鍵-值數(shù)據(jù)存儲(chǔ)。表示在任何給定時(shí)間點(diǎn)處的集群的整體狀態(tài)。其他組件在注意到存儲(chǔ)的變化之后,會(huì)變成相應(yīng)的狀態(tài)。

etcd 有g(shù)olang 編寫(xiě) kubernets體系中主要用于 服務(wù)注冊(cè) + 服務(wù)發(fā)現(xiàn).

// 以下為俺們封裝的grpc調(diào)用 etcd的調(diào)用邏輯.

  1. 服務(wù)端. 注冊(cè)服務(wù).
  2. client端. 發(fā)現(xiàn)服務(wù). 使用服務(wù).

2.1 導(dǎo)入 invoker 包
main.go -> service.Init() -> 相關(guān)grpc的初始化. -> 導(dǎo)入 git.dz11.com/vega/invoker 包.

2.2 invoker包的init函數(shù)執(zhí)行. 在 invoker/register.go 中.
init() 參數(shù)處理 -> 配置文件處理 -> invokerHandler = initInvoker() -> 各種服務(wù) grpc的話 Conf.initHrpc(invokerHandler)

2.3 Conf.initHrpc
新建 GRPCResolver -> grpc.RoundRobin -> grpc.DialContext -> 返回得到的grpc的conn

2.4 grpc.DialContext
一系列處理之后, cc.resolverWrapper, err = newCCResolverWrapper(cc) -> rb.Build -> (*passthroughBuilder) Build ->
r.start() -> r.cc.NewAddress() ->

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請(qǐng)結(jié)合常識(shí)與多方信息審慎甄別。
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡(jiǎn)書(shū)系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

  • Etcd和Consul都是非常出名的服務(wù)化治理工具。本篇先來(lái)講一下Etcd的使用。 學(xué)會(huì)使用 安裝 引用 Exam...
    leegoway閱讀 4,090評(píng)論 0 1
  • 這篇文章將會(huì)介紹 etcd 的實(shí)現(xiàn)原理,其中包括 Raft 協(xié)議、存儲(chǔ)兩大模塊,在最后我們也會(huì)簡(jiǎn)單介紹 etcd ...
    小刀愛(ài)編程閱讀 2,049評(píng)論 0 3
  • 因?yàn)楣ぷ餍枨?,公司需要使用ETCD來(lái)做gRPC服務(wù)的負(fù)載均衡,以及集群管理,所以對(duì)etcd做了一些研究,希望能給大...
    Jay_Guo閱讀 46,915評(píng)論 8 47
  • feisky云計(jì)算、虛擬化與Linux技術(shù)筆記posts - 1014, comments - 298, trac...
    不排版閱讀 4,334評(píng)論 0 5
  • 在葉子飄零的季節(jié)與你相遇 讓記憶再一次看到你的笑臉 在枝頭搖曳的孤寂里被風(fēng)吹亂心思 熟悉的名字和熟悉的身影 熟悉的...
    田萍閱讀 316評(píng)論 0 5

友情鏈接更多精彩內(nèi)容