go-micro微服务教程五:Registry服务注册和发现

Micro内置了mDNS组播系统,这是一种零依赖的服务注册发现机制,它不依赖其他组件,可以当做本地开发的服务发现方式。本节课我们使用etcd代替mDNS,替换很简单,启动微服务时追加参数–registry etcd或配置环境变量MICRO_REGISTRY=etcd 即可

安装 etcd

根据官方文档进行安装

script
1
2
3
4
5
6
7
8
9
git clone https://github.com/etcd-io/etcd.git
cd etcd
./build
cd bin
cp etcd etcdctl /usr/local/bin
#或者
brew install etcd
#启动etcd
etcd

使用etcd作为服务发现

script
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21

# 启动 srv 注册到etcd
cd user/srv
./user-srv --registry etcd

#启动 api 注册到etcd
cd /user/api
./user-api --registry etcd


#启动 micro-api api网关,注册到etcd
cd micro-examples/
micro --registry etcd api --namespace=io.github.entere.api --handler=api


#查看服务是否正常启动
micro --registry etcd list services

#获取指定名的服务
micro --registry etcd get service io.github.entere.srv.user
micro --registry etcd get service io.github.entere.api.user

测试

curl 请求接口:

script
1
curl -H "Content-Type:application/x-www-form-urlencoded" -X POST -d "user_id=f546e78a46284765" http://localhost:8080/user/info

返回结果:

1
2
3
4
5
6
7
8
9
10
11

{
"code": 200,
"data": {
"user_id": "f546e78a46284765",
"nickname": "匿名",
"mobile": "138********",
"avatar_url": "avatar.jpg",
"gender": 1
}
}