找不到服务器micro,Go Micro服务发现
服务发现,就是通过什么办法可以找到需要调用的服务的地址(ip和端口),因为只有拿到服务的地址,我们才可以连接服务,发送接口调用请求。
上一个章节,我们没说明两个服务直接是如何找到对方的,只是使用服务名,就可以调用远程服务api,本章将介绍Go Micro如何通过服务名找到服务的地址。
Go Micro的Register模块负责服务发现,Go Micro 框架以插件的形式内置了几种常用的服务发现组件,下面分别介绍三种常用的服务发现组件:mDNS、Consul、Etcd
Consul和Etcd都是基于注册中心实现服务发现,大致原理如下图:
服务启动的时候,主动向注册中间注册自己的服务信息(服务名、Ip、port)
客户端,通过服务名去注册中心,查询服务信息,拿到对应的ip和port,一个服务名可能查询到多个服务地址,默认go micro框架的Selector模块,通过随机算法从多个服务地址中选择一个进行通信(这样也就实现了负载均衡处理),然后向服务发起接口调用。
提示:如果对服务发现还是不太了解,可以看下这篇博客:微服务之服务发现。
1.基于mDNS服务发现
上一章的例子,就是通过mDNS实现服务发现,这也是Go Micro框架默认的机制,不需要任何配置。
mDNS(多播DNS)是一种局域网内使用的DNS机制,他的大致原理如下:当有新的节点加入局域网的时候,如果打开了mDNS,就主动向局域网其他所有节点广播,自己提供的服务(域名是什么、ip地址是什么、端口号是什么), 这样我们任何一个节点都知道局域网提供了什么服务。
例如:
Go Micro微服务A启动的时候,通过mDNS协议,向局域网的所有节点,广播自己的服务名、Ip和端口号。 当另外一个微服务B,需要调用微服务A的,通过微服务A的服务名,去向mDNS查询ip地址和端口号,如果找不到,就向局域网广播询问,谁有微服务A的地址信息,通过这样的机制我们就可以找到同一个局域网内的服务信息。
提示:基于mDNS的服务发现,不需要额外的中间件和配置,适合个人开发做实验,团队多人合作开发,往往有部分微服务是在云服务器上面,通过mDNS无法查询这些服务的信息,生产环境也会选择其他服务发现中间件。
2.基于Consul的服务发现
Consul是解决服务发现、配置中心的分布式中间件,适合生产环境使用。
如果不熟悉Consul,可以点击这里了解下:Consul教程
当安装好Consul后,我们可以通过环境变量设置Go Micro的服务发现中间件配置。
例如:
MICRO_REGISTRY=consul \
MICRO_REGISTRY_ADDRESS=127.0.0.1:8500 \
go run orderservice.go
参数说明:
MICRO_REGISTRY - 注册中心类型,这里设置为consul
MICRO_REGISTRY_ADDRESS - 注册中心地址, IP + PORT的形式
运行后,你会发现增加一条类似的日志,说明服务信息已经注册到Consul了。
2019/10/29 22:08:13 Registry [consul] Registering node: go.micro.api.orderservice-da1e90a0-975b-4b55-81bf-7f1d846f559e
注意:使用consul后,所有微服务启动的时候都需要配置使用同一个consul,包括我们使用micro call 命令和启动其他mico组件,都需要配置register环境变量,否则会出现找不到服务的错误。
3.基于Etcd的服务发现
Etcd是强一致性的、分布式键值存储引擎,类似zookeeper。
当你安装好Etcd后,使用Etcd作为注册中心,让go micro微服务基于Etcd实现服务发现,配置方式跟consul类似。
例如:
MICRO_REGISTRY= etcd \
MICRO_REGISTRY_ADDRESS=127.0.0.1:2379 \
go run orderservice.go
参数说明:
MICRO_REGISTRY - 注册中心类型,这里设置为etcd
MICRO_REGISTRY_ADDRESS - 注册中心地址, IP + PORT的形式
找不到服务器micro,Go Micro服务发现相关推荐
- 微服务注册中心做了什么事——服务发现
是否被一大堆的注册中心八股文淹没,不知道哪个是哪个,有啥区别甚至于不知道哪几个功能重叠互为替代,请看下文. 服务发现 服务发现如何做到持续维护服务地址在动态运维中的时效性 那在正式开始学习之前呢,让 ...
- 找不到服务器micro,go-micro 找不到服务,server not found是什么原因?编译出来在linux下面可以,windows不行。...
我按照go-micro官网介绍,写了一个demo,但是发现服务器可以运行,客服端显示找不到服务器,为什么呢? server端: package main import ( "context& ...
- 警告 初始化默认驱动器时出错“找不到运行 Active Directory Web 服务的默认服务器。”...
在导入AD模块时报错如下 "警告 初始化默认驱动器时出错"找不到运行 Active Directory Web 服务的默认服务器." 报错的是web服务器,第一时间想到的 ...
- SRV记录用来标识某台服务器使用了某个服务,常见于微软系统的目录管理——深入的话需要去折腾Azure Active Directory...
SRV记录 SRV记录 什么情况下会用到SRV记录? [SRV记录用来标识某台服务器使用了某个服务,常见于微软系统的目录管理] SRV记录的添加方式 A.主机记录处格式为:服务的名字.协议的类型 例如 ...
- sql 2008找不到服务器,sql server 2005 数据库迁移问题总结——错误 ‘80004005’ 在 sys.servers 中找不到服务器 ‘XXX’...
SQL2005做转移的过程中遇到此问题,到时为了方便,转移方法直接采用的,停止A服务器,复制A服务器中的数据库,将此数据库加载到B服务器,重启B服务器,有可能这种迁移方法有问题,最后的结果就是,可以正 ...
- 在 sysservers 中找不到服务器,在 sys.servers 中找不到服务器的解决办法,自己解决的...
一开始提示,在服务器中找不到在 sys.servers 中找不到服务器 'QPAccountsDBLink',先用select * from sys.servers ,发现只能查到一个服务器名称,后 ...
- 怎么查找无线的dns服务器,无线找不到服务器dns地址
无线找不到服务器dns地址 内容精选 换一换 只有管理员可以设置敏感操作,普通IAM用户只有查看权限,不能对其进行设置,如需修改,请联系管理员为您操作或添加权限.联邦用户在执行敏感操作时,不需要进行身 ...
- 打开浏览器显示找不到服务器DNS地址,电脑浏览器找不到服务器dns地址
电脑浏览器找不到服务器dns地址 内容精选 换一换 用户已将购买的SSL证书配置到ELB中,访问域名时,存在部分电脑访问提示不受信任,且同一办公网络部分电脑反馈"Windows没有足够信息, ...
- 2.架设邮件服务器-windows 2003 POP3服务,SMTP服务收发邮件
1.默认安装的系统是没有安装POP3组件,SMTP组件,搞个盘过来,或从网上下载一个i386(下载地址:http://down.spdns.com/i386.rar ). (1)从"控制面板 ...
最新文章
- NeHe教程Qt实现——lesson14
- 使用expvar进行监控
- PAT甲级1043 Is It a Binary Search Tree :[C++题解]判断二叉搜索树BST、给定前序序列和中序序列
- AI:神经网络调参(数据、层数、batch大小,学习率+激活函数+正则化+分类/回归)并进行结果可视化
- 2020年信息系统项目管理师真题讲解
- 一个傻瓜式构建可视化 web的 Python 神器
- 如何高效管理我的时间?——时间会给你最好的答案
- 关于oracle的certview
- Redis命令参考【EXPIRE】
- 开源 ERP 软件 Odoo 提速指南
- 2级c语言题库及答案,2019-C语言二级考试题库(含答案)
- C++原子量,内存序,无锁并发
- windows计算机资源管理器,windows10系统打开资源管理器的三种方法
- The Elder(树形dp 斜率优化)
- 《第四部分-练习题:微信朋友圈、支付宝支付功能测试点》
- 学习笔记14--环境感知传感器技术之毫米波雷达
- arm64_linux head.S的执行流程(3.18)- 12.msm8996 地址空间布局
- Python提取视频帧图片
- 智能秤方案设计——蓝牙体脂秤PCBA方案
- Microsoft Teams安装教程