小小千想和您聊一聊

当前位置: 首页> 技术分享> 微服务管理--服务注册与查询

微服务管理--服务注册与查询

定义一个服务

服务的定义通过一个.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、服务查询

服务的查询支持两种方式的查询,分别为:DNSHTTP

  • a、第一种:DNS

 dig @127.0.0.1 -p 8600 dev.firstservice.service.consul

【说明:】

  • 1、dev.firstservice.service.consul是固定的格式组合,具体格式为:tag.servicename.service.consul,即tagservicename为服务创建时自定义配置内容。

  • 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,  } }
{
  "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个微服务。



上一篇:HTML5工具初识之网页编辑器

下一篇:微服务管理--Docker安装及运行consul节点

QQ技术交流群

千锋go语言官方①群
816085262

加入群聊