grpc(4):使用 golang 调用consul api 接口,注册user-tomcat服务

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

1,关于consul


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

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


首先要在服务器安装一个consul服务:
http://blog.csdn.net/freewebsys/article/details/56296013
然后下载go的客户端。
go get github.com/hashicorp/consul
然后就可以使用 consul api服务了。

package src

import (
    "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)
    }


}

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

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

服务可用。

check失败服务不可用。

3,使用dig命令检查服务


yum install bind-utils

在服务器上面直接查看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

consul-dev.node.dc1.consul. 0 IN A 127.0.0.1
可以查询到一个域名节点。

4,总结


本文的原文连接是: http://blog.csdn.net/freewebsys/article/details/60466381
未经博主允许不得转载。
博主地址是:http://blog.csdn.net/freewebsys

总体上感觉 consul 还是非常简单实用的。
在做 Server-side Discovery 的时候是非常的方便的。
可以降低client的代码逻辑。

目录
相关文章
JSON 安全 API
226 0
JSON 监控 API
236 0
|
7月前
|
人工智能 算法 API
国产化用于单导联和六导联的心电算法及API服务
随着智能设备普及,心电图功能逐渐应用于智能手表、体脂仪等设备。苏州唯理推出单导联及6导联心电算法API服务,由AI驱动,1分钟内快速评估心律失常、房颤、早搏等问题,已广泛用于医疗设备及三甲医院。其算法还可评估压力、疲劳、情绪状态,筛查效率远超进口设备。唯理率先实现国产医疗级心电芯片,支持快速集成与私有化部署,适用于多种智能硬件。
|
8月前
|
存储 监控 API
零基础 3 天搞定京东 / 淘宝 API 开发,从注册到调通接口全流程拆解
本文详解京东/淘宝API开发入门,涵盖账号注册、应用创建、签名生成及实战项目,助零基础开发者3天掌握电商API调用,实现商品数据获取与价格监控。
|
8月前
|
JSON 安全 Java
API 一键转换 MCP 服务!Higress 助今日投资快速上线 MCP 市场
今日投资的技术负责人介绍了如何通过Higress MCP 市场完善的解决方案,快捷地将丰富的金融数据 API 转化为 MCP 工具,帮助用户通过 MCP 的方式非常轻松地调用专业金融数据,自由快速地构建自己的金融大模型应用。
1011 25
|
9月前
|
人工智能 自然语言处理 API
硅基流动入驻阿里云云市场,核心API服务将全面接入阿里云百炼平台💐
2025年6月18日,AI Infra企业硅基流动与阿里云达成战略合作,加入“繁花计划”并入驻云市场。其大模型推理平台SiliconCloud核心API将接入阿里云百炼平台,依托灵骏智能计算集群为客户提供高效服务。作为国内领先的MaaS平台,SiliconCloud已集成百余款开源大模型,服务600万用户及众多企业。双方将在算力协同、行业解决方案等领域深化合作,推动AI生态发展。
1111 0
|
11月前
|
人工智能 API 开发工具
GitHub官方开源MCP服务!GitHub MCP Server:无缝集成GitHub API,实现Git流程完全自动化
GitHub MCP Server是基于Model Context Protocol的服务器工具,提供与GitHub API的无缝集成,支持自动化处理问题、Pull Request和仓库管理等功能。
2220 2
GitHub官方开源MCP服务!GitHub MCP Server:无缝集成GitHub API,实现Git流程完全自动化
|
11月前
|
人工智能 算法 安全
OpenRouter 推出百万 token 上下文 AI 模型!Quasar Alpha:提供完全免费的 API 服务,同时支持联网搜索和多模态交互
Quasar Alpha 是 OpenRouter 推出的预发布 AI 模型,具备百万级 token 上下文处理能力,在代码生成、指令遵循和低延迟响应方面表现卓越,同时支持联网搜索和多模态交互。
899 1
OpenRouter 推出百万 token 上下文 AI 模型!Quasar Alpha:提供完全免费的 API 服务,同时支持联网搜索和多模态交互
|
人工智能 缓存 程序员
大模型文生图服务API设计原来如此简单(1)
文生图大模型的API设计其实很简单!无论是Midjourney这样的商业产品,还是ComfyUI这样的开源工具,它们的核心API设计都遵循着相似的简单原则。
500 1
|
Cloud Native 安全 Serverless
云原生应用实战:基于阿里云Serverless的API服务开发与部署
随着云计算的发展,Serverless架构日益流行。阿里云函数计算(Function Compute)作为Serverless服务,让开发者无需管理服务器即可运行代码,按需付费,简化开发运维流程。本文从零开始,介绍如何使用阿里云函数计算开发简单的API服务,并探讨其核心优势与最佳实践。通过Python示例,演示创建、部署及优化API的过程,涵盖环境准备、代码实现、性能优化和安全管理等内容,帮助读者快速上手Serverless开发。

推荐镜像

更多