go-micro中使用consul
上节我们在启动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相关推荐
- 如何在 ASP.Net Core 中使用 Consul 来存储配置
原文: USING CONSUL FOR STORING THE CONFIGURATION IN ASP.NET CORE 作者: Nathanael [译者注:因急于分享给大家,所以本文翻译的很仓 ...
- Swoft中使用Consul微服务
目录 Swoft中接入Consul Swoft服务限流 Swoft服务熔断和降级 在之前我写的一篇内容:PHP中接入consul,实现微服务的注册发现和配置中心_浮尘笔记的博客-CSDN博客 中,使用 ...
- MacOS中安装Consul(启动及关闭)
PS:非 brew 安装方式. 官网下载链接:https://www.consul.io/downloads.html 懒得去官网下载,或者官网下载速度慢的可以试一下下方蓝奏云链接. 蓝奏云v1.9. ...
- Caliburn.Micro中的WindowManager
Window Manager 简介 Caliburn Micro的窗口管理器可以通过ViewModel创建窗口,你只需要传递一个ViewModel实例给窗口管理器,窗口管理器就会自动查找对应的View ...
- Spring Cloud中使用Consul作为服务注册中心时如何获得local service id?
微服务是目前非常流行和实用的软件架构设计.Spring Cloud是java开发领域最受欢迎也是常用的微服务框架.Spring Cloud Finchley版本已经发布,与此同时Eureka 2.0的 ...
- Caliburn.Micro中的Screen和Conductor
Screen和Conductor继承关系 作为一个Presentation的框架,各个UI部件(Widget或者叫Pad)的管理是必不可少的.Screen就是用来表示UI部件的,它定义了一些列UI部件 ...
- f12控制台如何查看consul_基于 Consul 的 Go Micro 客户端服务发现是如何实现的
基于 Consul 的 Go Micro 客户端服务发现是如何实现的 由 学院君 创建于1年前, 最后更新于 1年前 版本号 #1 上篇分享我们介绍了基于 Consul 作为注册中心的 Go Micr ...
- 【译】保护 Consul 在特定设置中免受 RCE 风险的影响
2018年11月27日 Consul 团队 介绍 我们最近注意到了一组恶意软件,它们主要针对具有允许远程执行代码这一特定配置的 Consul nodes . 我们的社区成员也 (负责任地) 报告了此恶 ...
- 【转】Go Micro(2)——微服务工具箱
微服务工具箱 现在你也许听到了这个新现象:微服务.如果你对此不熟悉也有兴趣学习,欢迎参考上一篇文章. 这篇文章我们将讨论 Micro - 一个开源的微服务工具箱,Micro 提供了核心的必须工具来构建 ...
最新文章
- java 应用程序的打包发行
- ethernet调试工具_开发者分享 | 如何调试10G/25G以太网IP自协商/Link Training
- linux安装报错之:ifconfig command not found解决
- where is flag GV_IMMEDIATE_RESTART marked in SAP CRM WebClient UI
- 数据预处理-数据变换-连续属性离散化实现:pandas(0.23)+sklearn(0.19.1)+matplotlib(2.2.2)
- 正整数的唯一分解定理 c语言,SSOJ2662正整数的唯一分解定理
- python管道怎么使用_如何在多个流程中正确使用管道(2)
- 流水灯c语言代码大全,单片机闪烁灯流水灯汇编代码大全
- 2022年Web前端开发流程和学习路线(详尽版)
- AndroidStudio选中代码后,光标自动变粗,自动变成ins模式的解决方法
- 腾讯云主机SSH连接不上如何解决
- java 协方差矩阵_协方差矩阵概念(易理解)
- matlab自带的优化工具箱,MATLAB 自带优化工具箱(optimization Tool)之遗传算法简述...
- Excel如何对单元格内的分隔数据进行求和操作?
- NS2协议分析与仿真
- 安卓设备门禁识别开发_基于Android和RFID的门禁管理系统
- Quagga编译安装
- 学习记录:python获取链接下载
- IntelliJ IDEA官网打不开的问题
- sketch八个高效的快捷方式(上)
热门文章
- ant design pro模板_Ant Design Pro 学习笔记
- 【第77篇】GPT-4技术报告
- 默哀三分钟的google搜索曲线
- ROG Zephyrus G14(幻14)Ubuntu 20.04 双系统安装避坑指南(4800H AMD Nvidia GPU核显独显问题,快捷键Fn键盘灯驱动)
- 计算机应用视觉传媒是什么,视觉传播
- 电力设备绝缘子串红外热缺陷检测步骤与相关知识
- reactnative安卓真机调试
- (专升本)Excel中的隐藏(行、列的隐藏,工作表的隐藏,工作簿的隐藏)
- 39 | Linux查看硬盘挂载
- 股权激励:用明天的钱激励今天的员工