GO语言 服务发现概述

news2024/11/16 5:34:05

 https://zhuanlan.zhihu.com/p/32027014

明明白白的聊一下什么是服务发现-CSDN博客

一、服务发现 是什么

        在传统的系统部署中,服务运行在一个固定的已知的 IP 和端口上,如果一个服务需要调用另外一个服务,可以通过地址直接调用。

        但是,服务实例的启动和销毁是很频繁的,地址在动态变化,无法将请求固定发送到某个IP上。所以就 有需要将请求发送到 地址动态变化 的服务实例上。

        这需要两个步骤:

        1. 服务注册 — 存储服务的主机和端口信息,以及对应的服务名字。

        2. 服务发现 — 允许其他用户发现服务注册阶段存储的信息。

        所以,服务发现 就是只通过服务的名字就能够使用服务,并且支持服务所在地址是动态变化的。

二、服务发现 提供了什么功能

1. 健康检查

        作为一个服务发现服务,不仅要保存服务的访问方式(ip+port),还需要有服务监听的功能,隔一段时间去监听你的服务是否正常。即健康检查。

2. 负载均衡

        有多个节点提供一个服务,特别是高并发的时候,需要更多的节点。即负载均衡。

3. 全局分布

        一个服务需要改动时,不应该让其他服务做相应改动,服务的键值存储 需要是全局性的。即服务注册中心。

三、服务发现 的两种发现方式

        有两种主要的服务发现方式:客户端发现 和 服务端发现

1. 客户端服务发现

(1) 解释:

        客户端查询服务注册中心,获取服务的实际网络地址。

        客户端通过负载均衡算法,选择一个可用的服务实例。

        客户端将请求发送至该服务实例。

(2) 优点:架构简单,客户端可以自己选择负载均衡策略。

      缺点:客户端需要自己实现负载均衡,自己访问服务实例,有一定开发成本。

2. 服务端服务发现

(1) 解释:

        客户端向 负载均衡器 发送业务请求。

        负载均衡器 往服务注册中心查询可用的服务,然后转发请求到该 服务实例上。

(2) 优点:服务的发现逻辑对客户端是透明的。

      缺点:需要额外部署和维护高可用的负载均衡器。

       

四、服务注册中心

        服务注册中心 的位置 如上面 服务发现框架图 所示。

        服务注册中心是服务发现的核心,保存了各个可用服务实例的网络地址(IP和端口)。

        服务注册中心必须要有高可用性实时更新功能

        实时更新功能,主要是服务的注册和注销。 有两种实现方式:

1. 服务自己注册

        服务实例必须自己主动的到 服务注册中心 进行注册和注销。

        服务注册中心 使用 心跳机制 来监控实例异常关闭 并注销。

        优点:框架简单,不需要其它辅助组件。

        缺点:各个服务实例 和 服务注册中心 的耦合起来。

2. 第三方组件注册

        通过其他组件来实现,到 服务注册中心 进行注册和注销。

        组件需要监控实例的启动和关闭。

        组件可以通过如事件订阅等方式来监控服务实例的状态。

        优点:使用辅助组件 来实现 服务注册中新 和 服务实例解耦。

        缺点:增加框架复杂度,添加了辅助组件。

五、常见服务发现框架对比

六、Consul 介绍

1. Consul相比Etcd更强大

        如上图所示,Consul相比Etcd更强大,支持 多数据中心健康检查DNS协议

        consul通过 DNS或者HTTP接口 使服务注册和服务发现变的更容易     

2. Consul 框架图

        可见,使用的是 客户端服务发现方式,客户端直接访问服务实例。

3. 采用 Raft 算法,用来保证服务的高可用。

        目的是保证 系统中有一两个服务器当机,也不会影响其处理过程

七、思考服务发现应该怎么做

        主要考虑两个点:

1. 服务实例怎么注册和注销:建议 服务实例 自己主动到 服务注册中心 去进行注册和注销,不要使用其他组件去监控服务实例,降低框架复杂度。

2. 客户端怎么访问服务:建议客户端直接访问 服务注册中心 获取服务地址,不要维护高可用的负载均衡中心,降低框架复杂度。

3. 总体:不是很庞大的生态,应该以降低框架服务度为主。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/1788865.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

uniadmin引入iconfont报错

当在uniadmin中引入iconfont后,出现错误: [plugin:vite:css] [postcss] Cannot find module ‘E:/UniAdmin/uniAdmin/static/fonts/iconfont.woff2?t1673083050786’ from ‘E:\UniAdmin\uniAdmin\static\fonts\iconfont.css’ 这是需要更改为绝对路径…

大语言模型RAG-将本地大模型封装为langchain的chat model(三)

大语言模型RAG-将本地大模型封装为langchain的chat model(三) 往期文章: 大语言模型RAG-技术概览 (一) 大语言模型RAG-langchain models (二) 上一期langchain还在0.1时代,这期使用的langchain v0.2已经与之前不兼容了。 本期介…

废品回收小程序怎么做?有哪些核心功能?

废品回收行业正逐步走向高质量发展的道路。在国家政策的推动下,再生资源市场需求旺盛,行业内部竞争格局逐渐明朗。 随着互联网技术的发展,"互联网回收"成为废品回收行业的一个新趋势。通过微信小程序这种线上平台,用户…

Next-Level Agents:释放动态上下文(Dynamic Context)的巨大潜力

编者按: 本文深入探讨了如何通过优化动态上下文信息(Dynamic Context)来提升 AI Agents 的工作效率和准确性。文章首先概述了五种常见的技术策略,包括信息标识(Message Labeling)、针对不同需求设定不同上下文、优化系统提示词(Sy…

用python写一个基于PyQt5和OpenAI的智能问答项目

摘要: 使用python写一个可以对话的智能问答机器人,界面是使用PyQt5写的,通过调用OpenAl的免费接口,实现实时聊天功能。 1.申请免费的API key 前往页面https://github.com/chatanywhere/GPT_API_free 点击下面链接: …

如何判断ubuntu是桌面版(destop版)还是服务版(server版)?(systemctl status display-manager)

文章目录 用命令systemctl status display-manager 用命令systemctl status display-manager systemctl status display-manager如果是ubuntu desktop,将显示服务正在运行,如: 如果是ubuntu server,将不会显示服务,提…

计网ppt标黄知识点整理第(1)章节——谢希仁版本、期末复习自用

大众熟知的三大网络:电信网络、有线电视网络、计算机网络。发展最快起到核心的是计算机网络。Internet是全球最大、最重要的计算机网络。互联网:流行最广、事实上的标准译名。互连网:把许多网络通过一些路由器连接在一起。与网络相连的计算机…

宏集Panorama SCADA:个性化定制,满足多元角色需求

前言 在考虑不同人员在企业中的职能和职责时,他们对于SCADA系统的需求可能因其角色和工作职责的不同而有所差异。在SCADA系统的设计和实施过程中,必须充分考虑和解决这种差异性。 为了满足不同人员的需求, 宏集Panorama SCADA平台具备灵活的功能和定制…

如何通过PHP语言实现远程控制多路照明

如何通过PHP语言实现远程控制多路照明呢? 本文描述了使用PHP语言调用HTTP接口,实现控制多路照明,通过多路控制器,可独立远程控制多路照明。 可选用产品:可根据实际场景需求,选择对应的规格 序号设备名称厂…

Android Dialog使用汇总

Dialog分类 AlertDialog Dialog 类是对话框的基类,官方建议我们不要直接实例化它,而是使用其子类来获取实例。AlertDialog是系统提供的一个直接子类,它能帮助我们快速构建出不同类型的弹窗。接下来就看下各种类型弹窗的使用。 1、普通对话框…

【教学类-13-05】20240604《数字色块图-5*7*8-A4横板-横切》中4班

背景需求: 【教学类-13-04】20230404《数字色块图判断密码是否正确-5*7*8-A4横板-横切》(中班主题《我爱我家》)_图案密码色块-CSDN博客文章浏览阅读530次。【教学类-13-04】20230404《数字色块图判断密码是否正确-5*7*8-A4横板-横切》(中班主…

2024高质量建成新型电力系统加速发展低零碳灵活性资源研究报告

来源:RMI&清华大学 近期历史回顾:2024年中国新能源汽车出海洞察.pdf 2024可信赖的企业级生成式 AI 白皮书.pdf 2023亚洲家族办公室 2024年移动性别鸿沟报告.pdf 2024年社交媒体顶级美容品牌.pdf 2024高质量建成新型电力系统加速发展低零碳灵活性资源…

Linux 搭建 ZeroTier 的 Moon 服务器

系统:centos 7.6 轻量云服务器:腾讯云 Moon是什么,为什么需要Moon? ZeroTier通过自己的多个根服务器帮助我们建立虚拟的局域网,让虚拟局域网内的各台设备可以打洞直连。这些根服务器的功能有些类似于通过域名查询找到…

2024年数字化经济与金融创新国际学术会议(ICDEFI 2024)

2024年数字化经济与金融创新国际学术会议(ICDEFI 2024) 会议简介 2024年数字经济与金融创新国际学术会议即将召开。此次会议旨在汇集全球数字经济与金融创新领域的专家学者,共同探讨数字经济的发展趋势以及金融创新的路径。与会者将分享前沿…

Linux下查看进程和端口信息

1, 根据进程名(这里是模糊查询)查看进程信息,以查看nginx进程名为例,查看所对应的进程id为19013(或者使用: ps -aux | grep nginx查看占用内存等信息) ps -ef | grep nginx 2, 根据进程id查看进程占用端口,查看对应端口为8080&…

springboot+mqtt使用总结

1.软件的选型 1.1.使用免费版EMQX 1.1.1.下载 百度搜索的目前是会打开官网,这里提供下免费版的使用链接EMQX使用手册 文档很详细,这里不再记录了。 1.2.使用rabbitmq rabbitmq一般做消息队列用,作为mqtt用我没有找到详细资料&#xff0c…

VB.net实战(VSTO):Excel插件的安装与卸载

1. 安装 1.1编程环境:Visual Studio 2022 1.2创建新项目: 1.3 加入一行测试程序:MsgBox(“hello”),点击启动,确认可以弹窗 1.4 点击发布 1.5 找到安装程序,点击安装。打开Excel程…

win10环境下nodejs安装过程

打开 https://nodejs.org/en/官网下载node.js 2.下载完成后的安装文件为node-v16.16.0-x64.msi,双击进行安装即可。 3.一直默认安装,记得可以更改安装路径 4.其他不用打勾,一直next,安装完成即可。 5.安装完成后,wi…

软件测试需求管理指南规范(Word原件,项目管理全资料)

3 测试需求 3.1 测试范围 3.2 测试目标 4 测试需求的现状 5 测试需求的内容 5.1 主体内容 5.2 管理内容 6 测试需求的制定 6.1 需求信息来源 6.2 需求分析 6.2.1 功能性需求 6.2.2 系统功能需求 6.2.3 界面需求 6.2.4 安装需求 6.2.5 业务需求 6.2.6 非功能性需求 6.2.7 性能需…

告别复制粘贴:AI论文写作工具的高效应用

写作这件事一直让我们从小学时期就开始头痛,初高中时期800字的作文让我们焦头烂额,一篇作文里用尽了口水话,拼拼凑凑才勉强完成。 大学时期以为可以轻松顺利毕业,结果毕业前的最后一道坎拦住我们的是毕业论文,这玩意不…