代码拉取完成,页面将自动刷新
ZooKeeper 是一个集中式服务,用于维护配置信息、命名、提供分布式同步和提供组服务。在微服务开发中,为了配置的高可用,今天将学习实践用zk实现配置中心。
这里选择Docker安装
# docker run --name zookeeper --restart always -d -p 2181:2181 zookeeper:3.5
zk的ui支持web/win/mac
https://github.com/DeemOpen/zkui
docker run --rm -p 9090:9090 -e ZK_SERVER=zkserver:2181 juris/zkui
访问 zui-server:9090 username: admin, pwd: manager 更多操作可参考: https://github.com/DeemOpen/zkui
可参照 https://github.com/vran-dev/PrettyZoo/blob/master/README_CN.md
go zookeeper client
https://github.com/go-zookeeper/zk
支持的功能:
Demo(邮件服务的配置管理):
接着我们通过go-zookeeper来 CURD
package main
import (
"fmt"
"github.com/gin-gonic/gin"
"github.com/go-zookeeper/zk"
"time"
)
func main() {
var (
c *zk.Conn
err error
zksvr = "ZKSERVER:2181"
path = "/mail_service/sit/port"
)
//连接zkserver
c, _, err = zk.Connect([]string{zksvr}, time.Second*10)
if err != nil {
panic(err)
}
//获取节点数据
nodeData, sate, err := c.Get(path)
if err != nil {
panic(err)
}
port := string(nodeData)
fmt.Printf("get: %v\n", port)
fmt.Printf("sate: %v\n", sate)
r := gin.Default()
r.GET("/foo", func(c *gin.Context) {
c.JSON(200, gin.H{
"message": "hello",
})
})
r.Run(port)
}
输出
[GIN-debug] Listening and serving HTTP on :8000
参考:
此处可能存在不合适展示的内容,页面不予展示。您可通过相关编辑功能自查并修改。
如您确认内容无涉及 不当用语 / 纯广告导流 / 暴力 / 低俗色情 / 侵权 / 盗版 / 虚假 / 无价值内容或违法国家有关法律法规的内容,可点击提交进行申诉,我们将尽快为您处理。