grpc(4):使用 golang 调用consul api 接口,注册user-tomcat
1,关于consuldubbo的注册中心是zookeeper,redis。 2,启动consul服务,调用接口首先要在服务器安装一个consul服务: 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 : ",err)
}
err = client.Agent().ServiceDeregister(Id)
if err != nil {
log.Fatal("register server error : ",err)
}
}
代码很简单,创建了一个consul的服务,说明tomcat的服务端口,ip。并且声明了一个check方法用来检查服务是否可用。 可以通过ui界面观察服务注册情况: 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://www.jb51.cc/article/p-mdvmpmzo-bew.html 总体上感觉 consul 还是非常简单实用的。 在做 Server-side Discovery 的时候是非常的方便的。 可以降低client的代码逻辑。 (编辑:北几岛) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |