上节我们在启动go-micro服务时,可以看到使用的服务注册是mdns。这节来了解下如何使用consul。默认的服务发现是在同一台机器上,在生产环境下,服务与服务发现部署到同一机器,这不是个很好的实践。所以把consul机器独立出来就很有必要。
下面以Go Micro框架文章中的服务为例,编写一个go-micro服务。服务端microserver_consul.go文件

package mainimport ("context""fmt""github.com/micro/go-micro""github.com/micro/go-micro/registry""github.com/micro/go-micro/registry/consul"
)type Greeter struct {}func (g *Greeter) Hello(ctx context.Context, req *HelloRequest, rsp *HelloResponse) error {rsp.Greeting = "hello " + req.Namereturn nil
}func main() {reg := consul.NewRegistry(func(op *registry.Options) {op.Addrs = []string{"127.0.0.1:8500",}})service := micro.NewService(micro.Registry(reg),micro.Name("helloworld"), )service.Init()err := RegisterGreeterHandler(service.Server(), new(Greeter))if err != nil {fmt.Println("failed to register a handler: ", err)}if err = service.Run(); err != nil {fmt.Println("failed to run a service: ", err)}
}

Consul自带一个漂亮的、多种功能的Web用户界面。用户界面可以用来浏览所有的服务和节点,浏览所有的健康检查和他们的最新状态,以及读写键值数据,用户界面还自动支持多数据中心。在启动Consul Agent时使用-ui参数,可设置宿主用户界面。例如:

$ consul agent -dev -ui

用户界面使用与HTTP API相同的接口,在ui/路径下,默认地址是http://localhost:8500/ui
consul默认的地址是127.0.0.1:8500,生产环境常常不是这个地址。在启动Consul代理的情况下,运行上面的文件。然后就可以在命令行看到:

2019/04/30 15:07:26 Transport [http] Listening on [::]:55576
2019/04/30 15:07:26 Broker [http] Connected to [::]:55577
2019/04/30 15:07:26 Registry [consul] Registering node: helloworld-6c8afa0e-edca-474d-a495-23f4c2ba20e2

可以看到mdns已经变成了consul,注册的节点id为:helloworld-6c8afa0e-edca-474d-a495-23f4c2ba20e2。你在用户界面也可以看到有关节点的信息,访问http://localhost:8500/ui。
接着编写go-micro客户端文件microclient_consul.go

package mainimport ("context""fmt""github.com/micro/go-micro""github.com/micro/go-micro/registry""github.com/micro/go-micro/registry/consul"
)func main() {reg := consul.NewRegistry(func(op *registry.Options) {op.Addrs = []string{"127.0.0.1:8500",}})service := micro.NewService(micro.Registry(reg), micro.Name("greeter.client"))service.Init()rsp, err := NewGreeterService("helloworld", service.Client()).Hello(context.TODO(), &HelloRequest{Name: "benben_2015"})if err != nil {fmt.Println("failed to new greeter service: ", err)}fmt.Println(rsp.Greeting)
}

运行客户端文件microclient_consul.go后,你将会在命令行看到hello benben_2015

go-micro中使用consul相关推荐

  1. 如何在 ASP.Net Core 中使用 Consul 来存储配置

    原文: USING CONSUL FOR STORING THE CONFIGURATION IN ASP.NET CORE 作者: Nathanael [译者注:因急于分享给大家,所以本文翻译的很仓 ...

  2. Swoft中使用Consul微服务

    目录 Swoft中接入Consul Swoft服务限流 Swoft服务熔断和降级 在之前我写的一篇内容:PHP中接入consul,实现微服务的注册发现和配置中心_浮尘笔记的博客-CSDN博客 中,使用 ...

  3. MacOS中安装Consul(启动及关闭)

    PS:非 brew 安装方式. 官网下载链接:https://www.consul.io/downloads.html 懒得去官网下载,或者官网下载速度慢的可以试一下下方蓝奏云链接. 蓝奏云v1.9. ...

  4. Caliburn.Micro中的WindowManager

    Window Manager 简介 Caliburn Micro的窗口管理器可以通过ViewModel创建窗口,你只需要传递一个ViewModel实例给窗口管理器,窗口管理器就会自动查找对应的View ...

  5. Spring Cloud中使用Consul作为服务注册中心时如何获得local service id?

    微服务是目前非常流行和实用的软件架构设计.Spring Cloud是java开发领域最受欢迎也是常用的微服务框架.Spring Cloud Finchley版本已经发布,与此同时Eureka 2.0的 ...

  6. Caliburn.Micro中的Screen和Conductor

    Screen和Conductor继承关系 作为一个Presentation的框架,各个UI部件(Widget或者叫Pad)的管理是必不可少的.Screen就是用来表示UI部件的,它定义了一些列UI部件 ...

  7. f12控制台如何查看consul_基于 Consul 的 Go Micro 客户端服务发现是如何实现的

    基于 Consul 的 Go Micro 客户端服务发现是如何实现的 由 学院君 创建于1年前, 最后更新于 1年前 版本号 #1 上篇分享我们介绍了基于 Consul 作为注册中心的 Go Micr ...

  8. 【译】保护 Consul 在特定设置中免受 RCE 风险的影响

    2018年11月27日 Consul 团队 介绍 我们最近注意到了一组恶意软件,它们主要针对具有允许远程执行代码这一特定配置的 Consul nodes . 我们的社区成员也 (负责任地) 报告了此恶 ...

  9. 【转】Go Micro(2)——微服务工具箱

    微服务工具箱 现在你也许听到了这个新现象:微服务.如果你对此不熟悉也有兴趣学习,欢迎参考上一篇文章. 这篇文章我们将讨论 Micro - 一个开源的微服务工具箱,Micro 提供了核心的必须工具来构建 ...

最新文章

  1. java 应用程序的打包发行
  2. ethernet调试工具_开发者分享 | 如何调试10G/25G以太网IP自协商/Link Training
  3. linux安装报错之:ifconfig command not found解决
  4. where is flag GV_IMMEDIATE_RESTART marked in SAP CRM WebClient UI
  5. 数据预处理-数据变换-连续属性离散化实现:pandas(0.23)+sklearn(0.19.1)+matplotlib(2.2.2)
  6. 正整数的唯一分解定理 c语言,SSOJ2662正整数的唯一分解定理
  7. python管道怎么使用_如何在多个流程中正确使用管道(2)
  8. 流水灯c语言代码大全,单片机闪烁灯流水灯汇编代码大全
  9. 2022年Web前端开发流程和学习路线(详尽版)
  10. AndroidStudio选中代码后,光标自动变粗,自动变成ins模式的解决方法
  11. 腾讯云主机SSH连接不上如何解决
  12. java 协方差矩阵_协方差矩阵概念(易理解)
  13. matlab自带的优化工具箱,MATLAB 自带优化工具箱(optimization Tool)之遗传算法简述...
  14. Excel如何对单元格内的分隔数据进行求和操作?
  15. NS2协议分析与仿真
  16. 安卓设备门禁识别开发_基于Android和RFID的门禁管理系统
  17. Quagga编译安装
  18. 学习记录:python获取链接下载
  19. IntelliJ IDEA官网打不开的问题
  20. sketch八个高效的快捷方式(上)

热门文章

  1. ant design pro模板_Ant Design Pro 学习笔记
  2. 【第77篇】GPT-4技术报告
  3. 默哀三分钟的google搜索曲线
  4. ROG Zephyrus G14(幻14)Ubuntu 20.04 双系统安装避坑指南(4800H AMD Nvidia GPU核显独显问题,快捷键Fn键盘灯驱动)
  5. 计算机应用视觉传媒是什么,视觉传播
  6. 电力设备绝缘子串红外热缺陷检测步骤与相关知识
  7. reactnative安卓真机调试
  8. (专升本)Excel中的隐藏(行、列的隐藏,工作表的隐藏,工作簿的隐藏)
  9. 39 | Linux查看硬盘挂载
  10. 股权激励:用明天的钱激励今天的员工