概述
微服务管理--服务注册与查询
@author:Davie 版权所有:北京千锋互联科技有限公司
定义一个服务
服务的定义通过一个.json的json文件来进行定义,该文件中使用json格式定义所要注册服务的相关内容,以下为服务的json格式示例:
{
"service": {
"id": "firstservice",
"name": "firstservice",
"tags": ["dev"],
"port": 80,
}
}
服务注册
1、创建服务文件所存放的文件夹
sudo mkdir /etc/consul.d
说明:.d做后缀,表示一系列配置文件的存放目录
2、编写如章节一中的服务内容,并保存为文件
vim firstservice.json
内容是章节一部分的json中的内容。
说明:每一个服务都是以json文件格式的形式被单独声明在一个文件中,然后集中放到一个目录下。供consul启动时读取。
3、保存firstservice.json文件到指定目录
mv firstservice.json /etc/consul.d/
通过如上命令将自定义的firstservice.json服务文件移动至集中存放consul集群启动时要启动的服务目录中,即/etc/consul.d
服务查询
1、启动consul
由于我们添加了服务,启动的服务是以配置文件的形式进行配置的,因此,在启动时有必要指定服务配置文件所对应的目录,如下所示:
consul agent -dev -config-dir /etc/consul.d/
如上的命令表示:根据-config-dir指定的服务注册的目录中的文件来启动服务。
2、服务查询
服务的查询支持两种方式的查询,分别为:DNS和HTTP
- a、第一种:DNS
dig @127.0.0.1 -p 8600 dev.firstservice.service.consul
【说明:】 1、dev.firstservice.service.consul是固定的格式组合,具体格式为:tag.servicename.service.consul,即tag和servicename为服务创建时自定义配置内容。2、DNS访问的端口是8600
- b、第二种:HTTP
curl http://localhost:8500/v1/catalog/service/firstservice
【说明:】 1、HTTP访问路径:host:port/版本号/service/服务名。 2、Address:用于指定一个特定的Service的IP地址,默认情况下,使用的是该service使用的agent。
注册多个服务
1、每一个服务分别写一个json文件
例如,新建第二个服务sendservice,将新建secondservice.json文件,如下:
{
"service": {
"id": "secondservice",
"name": "secondservice",
"tags": ["dev"],
"port": 80,
}
}
- 使用http格式访问:
curl http://localhost:8500/v1/catalog/service/secondservice
2、将多个服务写到一个json文件中
除了将每一个服务单独定义为一个json配置文件外,consul还允许将多个服务组合定义在一个json文件中,具体的方式是对json文件的格式稍作修改,将原来的service修改为sevices,将原来service对应的对象类型,修改为数组类型。举例如下:
{
"services": [
{
"id": "firstservice",
"name": "firstservice",
"tags": ["dev"],
"port": 80
},
{
"id": "secondservice",
"name": "secondservice",
"tags": ["dev"],
"port": 80
}
]
}
说明: 1、放在多个services中而不是原来的service 2、多个服务放在一个数组中,起名为services
在实际的开发过程中,微服务数量众多。如果每个文件都放在一个文件里,文件会非常多;而如果所有服务都放在一个文件里,文件太大,也不合适。因此,在实践中,往往二者结合使用。例如,假设有100个微服务,则,放在10json文件中,每个文件中放10个微服务。
最后
以上就是笨笨大象为你收集整理的Go语言微服务架构实战:第十二节 微服务管理--服务注册与查询的全部内容,希望文章能够帮你解决Go语言微服务架构实战:第十二节 微服务管理--服务注册与查询所遇到的程序开发问题。
如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。
发表评论 取消回复