Go語言操作etcd的示例詳解
etcd介紹
etcd是使用Go語言開發(fā)的一個開源的、高可用的分布式key—value存儲系統(tǒng),可以用于配置共享和服務(wù)的注冊和發(fā)現(xiàn),基于raft算法實現(xiàn)具有強一致性
etcd中涉及了數(shù)據(jù)一致性、多版本并發(fā)控制、watch監(jiān)控、磁盤IO讀寫等知識點
etcd的特性:
1.簡單:etcd的安裝簡單,為用戶提供了HTTP的接口,使用也很簡單
2.存儲:etcd的基本功能,基本信息存儲在文件中
3.Watch機制:watch指定的鍵的更改會通知
4.安全通信:SSL證書驗證
5.高性能:2K/s讀操作,提供了基準測試的工具
6.一致可靠:raft一致性算法
類似的項目有zookeeper和consul。
etcd具有以下的特點:
1.完全復(fù)制:集群中的每個節(jié)點都可以使用完整的存檔
2.高可用性:Etcd可用于避免硬件的單點故障或網(wǎng)絡(luò)問題
3.一致性:每次讀取都會返回跨多主機的最新寫入
4.簡單:包括一個定義良好、面向用戶的API(gRPC)
5.安全:實現(xiàn)了帶有可選的客戶端證書身份驗證的自動化TLS
6.快速:每秒10000次寫入的基準速度
7.可靠:使用Raft算法實現(xiàn)了強一致、高可用的服務(wù)存儲目錄
etcd的常見分布式場景:
1.鍵值對存儲
2.服務(wù)注冊與發(fā)現(xiàn)
3.消息訂閱與發(fā)布
4.分布式鎖
go語言操作etcd
首先在后臺啟動etcd
寫一段go代碼
package main import ( "context" "fmt" clientv3 "go.etcd.io/etcd/client/v3" "time" ) func main() { // 創(chuàng)建客戶端,連接etcd cli, err := clientv3.New(clientv3.Config{ Endpoints: []string{"127.0.0.1:2379"}, DialTimeout: 5 * time.Second, }) if err != nil { fmt.Printf("connect to etcd failed, err:%v\n", err) return } fmt.Println("connect to etcd success") defer cli.Close() str := `[{"path":"d:/logs/s4.logs","topic":"s4_logs"},{"path":"d:/logs/web.logs","topic":"web_logs"}` // put操作 _, err = cli.Put(context.TODO(), "collect_log_conf", str) if err != nil { fmt.Printf("put to etcd failed, err:%v\n", err) return } get操作 resp, err := cli.Get(context.TODO(), "collect_log_conf") // 獲取指定Key的值 if err != nil { fmt.Printf("get to etcd failed") return } for _, ev := range resp.Kvs { fmt.Printf("key:%s,value:%s\n", ev.Key, ev.Value) } delete 刪除key //if _,err = cli.Delete(context.TODO(), "testetcd");err != nil{ // fmt.Println("delete key failed") //}else{ // fmt.Println("delete key success") //} }
也可以直接使用ectdctl工具查看key
etcdctl.exe --endpoints=127.0.0.1:2379 get collect_log_conf
到此這篇關(guān)于Go語言操作etcd的示例詳解的文章就介紹到這了,更多相關(guān)Go操作etcd內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
相關(guān)文章
Golang測試func?TestXX(t?*testing.T)的使用詳解
一般Golang中的測試代碼都以xxx_test.go的樣式,在命名測試函數(shù)的時候以Testxx開頭,下面給大家介紹Golang測試func?TestXX(t?*testing.T)的使用,感興趣的朋友跟隨小編一起看看吧2024-08-08在Visual Studio Code中配置GO開發(fā)環(huán)境的詳細教程
這篇文章主要介紹了在Visual Studio Code中配置GO開發(fā)環(huán)境的詳細教程,需要的朋友可以參考下2017-02-02基于Golang實現(xiàn)Excel表格的導(dǎo)入導(dǎo)出功能
最近項目開發(fā)中有涉及到Excel的導(dǎo)入與導(dǎo)出功能,特別是導(dǎo)出表格時需要特定的格式,所以本文給大家介紹了基于Golang實現(xiàn)Excel表格的導(dǎo)入導(dǎo)出功能,文中通過代碼示例和圖文介紹的非常詳細,需要的朋友可以參考下2023-12-12golang?xorm?自定義日志記錄器之使用zap實現(xiàn)日志輸出、切割日志(最新)
這篇文章主要介紹了golang?xorm?自定義日志記錄器,使用zap實現(xiàn)日志輸出、切割日志,包括連接postgresql數(shù)據(jù)庫的操作方法及?zap日志工具?,本文結(jié)合實例代碼給大家介紹的非常詳細,對大家的學(xué)習(xí)或工作具有一定的參考借鑒價值,需要的朋友可以參考下2022-10-10