[ CloudWeGo 微服务实践 - 05 ] 服务注册(2)
昨天的实践中,我们打算使用 etcd 作为注册中心,安装好并尝试连接到了 etcd,今天就尝试封装成组件,在服务启动时,能把我们的服务信息注册到 etcd 中。
目标
etcd 安装配置好。(上节我们做好了)
实现 Kitex 的服务注册接口。(今天要做)
环境
MacOS Monterey 12.0.1
etcd version:3.5.0
go version go1.16.5 darwin/amd64
步骤
参看服务注册扩展接口
这里我们直接参考官网介绍>>服务注册扩展
复制代码
项目中创建服务注册文件夹及文件
新建 registry
文件夹
复制代码
创建 etcd.go
文件
效果如下:
尝试实现接口
在刚刚的 etcd.go 文件中,我们先尝试如下代码:
复制代码
尝试注册服务
我们在 main.go
文件中,修改 api.NewServer 处的代码如下:
复制代码
确定下代码
main.go
register/etcd.go
重启服务
先尝试这个玩法是否可行
启动
能看到我们注册时打印的日志,由以下代码产生的:
复制代码
停止
能看到我们撤销服务时打印的日志,由以下代码产生的:
复制代码
优化 etcd 注册中心的实现
思路:
使用 NewFunc 的方式创建实例,并把 etcd client 显式的注入进去。
注册、撤销服务时对应操作 etcd 数据。
New 出注册中心实例
etcd.go
文件先改造下:
复制代码
然后改造下 main.go
:
复制代码
操作 etcd 数据
复制代码
改造 main.go
,定义一些服务信息
复制代码
代码确认
main.go
registry/etcd.go
重启服务
没有任何报错,是个好消息
确认注册信息
打开终端执行:
复制代码
效果如下:
成功!
总结
代码还有很多优化空间,严谨性合理性等等,后续可继续优化。比如注册一个服务支持多节点,现在我们只是简单的放了一个节点进去。
系列阅读
版权声明: 本文为 InfoQ 作者【baiyutang】的原创文章。
原文链接:【http://xie.infoq.cn/article/ce62b626b83749ad25728853f】。文章转载请联系作者。
评论