使用 golang 调用consul api 接口,注册user-tomcat服务
发布日期:2021-06-29 08:41:15 浏览次数:2 分类:技术文章

本文共 3150 字,大约阅读时间需要 10 分钟。

1,关于consul


dubbo的注册中心是zookeeper,redis。 

motan的注册中心是zookeeper,consul。 
kubernetes的注册中心是 etcd。 
使用consul的好处是服务发现啥的都支持了。 
可以使用域名进行负载均衡。 
也是一个不错的 Server-Side Discovery Pattern 。

2,启动consul服务,调用接口


首先要在服务器安装一个consul服务: 

 
然后下载go的客户端。 
go get github.com/hashicorp/consul 
然后就可以使用 consul api服务了。

package srcimport (    "fmt"    consulapi "github.com/hashicorp/consul/api"    "log"    "testing")const Id = "1234567890"func TestRegister(t *testing.T) {    fmt.Println("test begin .")    config := consulapi.DefaultConfig()    //config.Address = "localhost"    fmt.Println("defautl config : ", config)    client, err := consulapi.NewClient(config)    if err != nil {        log.Fatal("consul client error : ", err)    }    //创建一个新服务。    registration := new(consulapi.AgentServiceRegistration)    registration.ID = Id    registration.Name = "user-tomcat"    registration.Port = 8080    registration.Tags = []string{"user-tomcat"}    registration.Address = "127.0.0.1"    //增加check。    check := new(consulapi.AgentServiceCheck)    check.HTTP = fmt.Sprintf("http://%s:%d%s", registration.Address, registration.Port, "/check")    //设置超时 5s。    check.Timeout = "5s"    //设置间隔 5s。    check.Interval = "5s"    //注册check服务。    registration.Check = check    log.Println("get check.HTTP:",check)    err = client.Agent().ServiceRegister(registration)    if err != nil {        log.Fatal("register server error : ", err)    }}func TestDregister(t *testing.T){    fmt.Println("test begin .")    config := consulapi.DefaultConfig()    //config.Address = "localhost"    fmt.Println("defautl config : ", config)    client, err := consulapi.NewClient(config)    if err != nil {        log.Fatal("consul client error : ", err)    }    err = client.Agent().ServiceDeregister(Id)    if err != nil {        log.Fatal("register server error : ", err)    }}
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18
  • 19
  • 20
  • 21
  • 22
  • 23
  • 24
  • 25
  • 26
  • 27
  • 28
  • 29
  • 30
  • 31
  • 32
  • 33
  • 34
  • 35
  • 36
  • 37
  • 38
  • 39
  • 40
  • 41
  • 42
  • 43
  • 44
  • 45
  • 46
  • 47
  • 48
  • 49
  • 50
  • 51
  • 52
  • 53
  • 54
  • 55
  • 56
  • 57
  • 58
  • 59
  • 60
  • 61
  • 62
  • 63
  • 64
  • 65
  • 66
  • 67
  • 68
  • 69

代码很简单,创建了一个consul的服务,说明tomcat的服务端口,ip。并且声明了一个check方法用来检查服务是否可用。

可以通过ui界面观察服务注册情况: 

服务可用。 
check失败服务不可用。

3,使用dig命令检查服务


yum install bind-utils
  • 1

在服务器上面直接查看user-tomcat 服务情况:

# dig @10.0.2.15 -p 8600 user-tomcat.service.consul SRV; <<>> DiG 9.9.4-RedHat-9.9.4-38.el7_3.2 <<>> @10.0.2.15 -p 8600 user-tomcat.service.consul SRV; (1 server found);; global options: +cmd;; Got answer:;; ->>HEADER<<- opcode: QUERY, status: NOERROR, id: 17543;; flags: qr aa rd; QUERY: 1, ANSWER: 1, AUTHORITY: 0, ADDITIONAL: 1;; WARNING: recursion requested but not available;; QUESTION SECTION:;user-tomcat.service.consul.    IN      SRV;; ANSWER SECTION:user-tomcat.service.consul. 0   IN      SRV     1 1 8080 consul-dev.node.dc1.consul.;; ADDITIONAL SECTION:consul-dev.node.dc1.consul. 0   IN      A       127.0.0.1;; Query time: 0 msec;; SERVER: 10.0.2.15#8600(10.0.2.15);; WHEN: Sun Mar 05 03:06:06 EST 2017;; MSG SIZE  rcvd: 100
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18
  • 19
  • 20
  • 21
  • 22
  • 23

consul-dev.node.dc1.consul. 0 IN A 127.0.0.1 

可以查询到一个域名节点。

4,总结


本文的原文连接是:  

未经博主允许不得转载。 
博主地址是:

总体上感觉 consul 还是非常简单实用的。 

在做 Server-side Discovery 的时候是非常的方便的。 
可以降低client的代码逻辑。

转载地址:https://blog.csdn.net/zl1zl2zl3/article/details/80986365 如侵犯您的版权,请留言回复原文章的地址,我们会给您删除此文章,给您带来不便请您谅解!

上一篇:【Consul】Consul实践指导-健康检查(Checks)
下一篇:用Nginx+Lua(OpenResty)开发高性能Web应用

发表评论

最新留言

路过按个爪印,很不错,赞一个!
[***.219.124.196]2024年04月09日 00时12分27秒

关于作者

    喝酒易醉,品茶养心,人生如梦,品茶悟道,何以解忧?唯有杜康!
-- 愿君每日到此一游!

推荐文章

树莓派与arduino通信 2019-04-29
FFmpeg概述及编码支持 2019-04-29
后端开发配置全过程(Java安装及环境配置,IDEA安装,MySQL和Navicat安装,IDEA中使用MySQL) 2019-04-29
PyTorch构建简单的网络——波士顿房价数据集 2019-04-29
2.1栈的应用(括号匹配问题、简单计算器) 2019-04-29
c++存储字符串的方法( 读取字符串、char 数组、string 类型) 2019-04-29
3.1-3.2 %运算符、数位拆解 2019-04-29
PyTorch——线性回归的从零开始实现 2019-04-29
python 中 return VS yield 2019-04-29
PyTorch—— softmax 的从零开始实现 2019-04-29
PyTorch—— 图像分类数据集(Fashion-MNIST) 2019-04-29
【BUG修复】:tkinter 使用 Label 显示 png、jpg 不能成功显示,但是不报错 2019-04-29
【SSD论文解读】 论文中用到的数据集:Pascal VOC、MS COCO、ImageNet 2019-04-29
【SSD论文解读】 模型部分:骨干网络 VGG16 + 特征提取层 Extra Feature Layers 2019-04-29
交并比(IOU) 2019-04-29
【BUG修复】:tkinter 报错:TypeError: ‘NoneType‘ object does not support item assignment 2019-04-29
PyTorch + visdom + netron 实现网络数据和模型结构的可视化 2019-04-29
【BUG修复】:安装 CUDA时,出现 “此应用无法在你的电脑上运行”的错误提示 2019-04-29
【SCRDet++代码调试】windows下调试(重点是“编译 setup.py(rotate) tensorflow版”) 2019-04-29
win10编译 Fast R-CNN 所需的setup.py(rotate) tensorflow版 2019-04-29