go etcd 三 使用Go實現服務註冊

2021-10-23 21:55:26 字數 2540 閱讀 3097

service.go檔案

//初始化etcdctl

func

newservice()

*service

, dialtimeout:

10*time.second,

} client,

_:=clientv3.

new(config)

return

&service

}//註冊服務

func

(this *service)

regservice

(id string

,name string

,address string

)error

//put值

_,err=kv.

put(ctx,key_prefix+id+

"/"+name,address,clientv3.

withlease

(leaseres.id)

)if err!=

nil//自動續租

keepaliveres,err := lease.

keepalive

(context.

todo()

,leaseres.id)

if err!=

nil//列印續租資訊, keepaliveres是個唯讀channel

goliskeepalive

(keepaliveres)

return

nil}

//列印續租資訊

func

liskeepalive

(keepaliveres <-

chan

*clientv3.leasekeepaliveresponse)}}

}//反註冊服務

)//初始化etcdctl

service:=util.

newservice()

serviceid:=

"p1"

//服務id

servicename:=

"productservice"

//服務名

serviceaddr:=

"192.168.16.30"

//服務位址

serviceport:=

8081

//服務埠

//錯誤channel

errchan:=

make

(chan

error

)//初始化http

//開啟http服務

)//訊號監聽go(

func()

)() geterr:=

<-errchan

err:=service.

unregservice

(serviceid)

//反註冊

if err!=

nil//可以執行一些 **工作,譬如關閉資料庫

}啟用p1.go, 進入etcd容器,獲取鍵值成功

/usr/bin # ./etcdctl get /services/p1/productservice

/services/p1/productservice

192.168.16.30:8081

Go實現簡單的Socket服務端筆記 三

利用goroutine實現同時多個客戶端連線 將資料讀取放入單獨的方法中,利用goroutine執行 本文 檢視github 要實現多個客戶端連線,需要將每個客戶端放入單獨的執行緒處理,通常我們使用多執行緒實現這個功能,但go語言提供的 goroutine,可以非常方便的實現並行 goroutine...

使用 Go 語言實現優雅的伺服器重啟

go被設計為一種後台語言,它通常也被用於後端程式中。服務端程式是go語言最常見的軟體產品。在這我要解決的問題是 如何乾淨利落地公升級正在執行的服務端程式。image 在基於unix的作業系統中,signal 訊號 是與長時間執行的程序互動的常用方法.如果收到sighup訊號,優雅地重啟程序需要以下幾...

服務計算 Go語言實現selpg

3.程式測試 4.參考資料 使用golang開發linux命令列中的selpg io,實現了一系列非平台相關的 io 相關介面和實現,比如提供了對 os 中系統相關的 io 功能的封裝。我們在進行流式讀寫 比如讀寫檔案 時,通常會用到該包。os exec,執行外部命令,它包裝了 os.startpr...