etcd3進行配置管理

2021-07-22 06:12:40 字數 1198 閱讀 2668

最近在用golang 做乙個系統,裡面有乙個需求是可以隨時暫停某項功能,這個涉及到執行時動態改變配置。首先配置寫死在**中,是絕對不可能實現這個需求的,每次從資料獲取,雖說可以解決這個問題,但是耗時,每次請求都要去查資料庫。有人會說引入快取儲存從資料庫查詢的值,定時去同步資料中的值到快取。這是乙個可行的辦法,但是用etcd3的watcher會達到更加高效,優雅。etcd是乙個高可用的鍵值儲存系統,主要用於共享配置和服務發現.。 etcd 裡面有個watcher 可以監視某個key, 如果key中的value有改變,會監聽到這個改變事件,然後重新整理etcd種的最新版本到本地快取。下面上**分析:

const(

etcdkey = "/prod/***/config"  // 快取的key,也是watcher監聽的key

)var (

confvals     map[string]inte***ce{} // 配置的本地快取,防止etcd宕機,也不影響業務,當watcher監聽的key的value變化,會重新整理快取到這個map中。

lock         sync.rwmutex  // 讀寫鎖

)// 啟動etcd

func start() )

...........

defer cli.close()

if err := fetchconfig(cli); err != nil

watchconfigchanges(cli)

}// 解析etcd 配置

func fetchconfig(cli *clientv3.client) error

for _, kv := range resp.kvs

break

}return nil

}// watcher 監聽指定的key, key 傳送變化更新confvals

func watchconfigchanges(cli *clientv3.client)

if err := updateconfigvals(ev.kv.value); err != nil

break}}

}func updateconfigvals(b byte) error {}

'''''''''''

'''''''''''

更新confvals

(&lock).lock()

confvals = m

return nil

}

使用 Puppet 進行配置管理

注 本文譯自 今天,配置管理最成熟的工具是 puppet。但是,我想您一定想知道為什麼 puppet 如此受歡迎 與其他配置管理工具相比,它有什麼獨特之處。puppet 是配置管理工具,用於部署 配置和管理伺服器。它具有以下功能 puppet 使用主從架構,主從之間通過 ssl 使用安全的加密通道進...

資料 配置管理

目前國內外常見的10種配置管理工具一覽 配置管理不是單純的指軟體的 版本管理,上面的資料介紹的主要是 級管理.配置管理的目的是為了準確交付,減少事故.當專案本身是由多個語言,多個部門來開發,採用了較多開源和第三方的軟體例項時,需要好的配置管理.配置管理之路 scmroad 軟體測試網 軟體測試管理 ...

cmmi配置管理

配置管理的目的是通過執行版本控制 變更控制等規程,以及使用配置管理軟體,來保證所以配置項的完整性和可跟蹤性。配置管理是對工作成果的一種有效保護。凡是納入配置管理範疇的工作成果統稱為配置項 comfiguration item,ci 配置項主要有兩大類 屬於產品組成部分的工作成果,如需求文件 設計文件...