GO语言 服务发现概述

 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 算法,用来保证服务的高可用。

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

        

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

如若内容造成侵权/违法违规/事实不符,请联系长河编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

excle中数据分析,excle导入用sql简单处理

前言: 办法一:直接用excle导入db就行,如果excle导如db不能用,就用笨办法下面这个方法去做 1、从系统中导出excle 2、db中插入相应的表和标题 3、先手动插入条件,把insert语句复制出来 INSERT INTO test.test (orders…

短视频直播教学课程小程序的作用是什么

只要短视频/直播做的好,营收通常都不在话下,近些年,线上自媒体行业热度非常高,每条细分赛道都有着博主/账号,其各种优势条件下也吸引着其他普通人冲入。 然无论老玩家还是新玩家,面对平台不断变化的规则和…

深度学习设计模式之装饰器模式

文章目录 前言一、介绍二、详细分析1.核心组成2.实现步骤3.代码示例4.优缺点优点缺点 5.使用场景 总结 前言 装饰器模式属于结构型模式,又叫包装设计模式,动态的将责任添加到对象上。 一、介绍 装饰器模式又叫包装设计模式,为现有的类的一个…

RaspAP:轻松实现树莓派无线 AP

RaspAP 是一个可以将树莓派轻松部署成无线 AP(Access Point)的软件方案,具有一套响应式的 WebUI 来控制 WiFi,用起来和家用路由器一样方便。RaspAP 可以运行在 Raspbian 上,只需要先给树莓派安装好 Raspbian 系统&…

分享一个 ASP.NET WebForm 使用 Form Authentication 的例子

前言 前些天一个朋友说他们客户的网站出了点故障,让我帮忙看看,这个网站还是用 ASP.NET WebForm 做的,很久以前的技术了,不过很多客户就是这样,只要网站还能稳定地运行,一般就不会去折腾升级,_…

读AI未来进行式笔记03自然语言处理技术

1. AI伙伴 1.1. 作为AI能力的集大成者,AI伙伴融合了各种复杂的AI技术 1.2. 人类唯一可能超越AI的领域,只可能在机器无法触及之处,那是属于人类感性与直觉的领域 1.3. 要读懂人类,需要漫长而平缓的学习过程 1.4. AI塑造了我们&…

什么是OCR转写服务?

OCR(Optical Character Recognition,光学字符识别)转写服务是一种技术,用于将图像或扫描文档中的文字转换为可编辑的文本格式。这项服务通过识别图像中的文字,并将其转换成计算机可读的文本形式,从而使得用…

uni-app+php 生成微信二维码 分销海报

主要代码如下,可直接复制调试参数: //查询当前用户是否有分销海报public function user_poster(){$this->checkAuth();//查询会员信息$user $this->getUserInfoById($this->user_id);if(!empty($user[distribution_img])){$result[data] $use…

vue2中使用tinymce

vue2中使用tinymce的记录 本篇文章主要实现的功能: (1)【查看】时禁用编辑 (2)【编辑】时某些内容是不可编辑的 实现效果图: 第一个功能的主要代码 disabled属性 // 使用地地方,传递disabled属…

白银票据~

一. 白银票据的原理 白银票据就伪造ST票据, kerberoasting是破解ST票据中的服务用户hash值,有以下区别: 白银票据:伪造的ST使用的是机器用户的Hash值 Kerberoasting:破解的是ST的域用户的hash值二. 白银票据的利用条件 1.域名 …

Python第二语言(二、Python语言基础)

目录 1. python中常用的6中数据类型 2. Print语句(输出程序) 3. 字面量 4. 注释 5. 变量 6. 数据类型 7. type()语句:查询数据类型 8. 数据类型转换语句 9. 标识符 10. 算术运算符 11. 赋值运算符 && 复合赋值运算符 12. …

Oracle导出clob字段到csv

使用UTL_FILE ref: How to Export The Table with a CLOB Column Into a CSV File using UTL_FILE ?(Doc ID 1967617.1) --preapre data CREATE TABLE TESTCLOB(ID NUMBER, MYCLOB1 CLOB, MYCLOB2 CLOB ); INSERT INTO TESTCLOB(ID,MYCLOB1,MYCLOB2) VALUES(1,Sample row 11…

Spring boot实现基于注解的aop面向切面编程

Spring boot实现基于注解的aop面向切面编程 背景 从最开始使用Spring,AOP和IOC的理念就深入我心。正好,我需要写一个基于注解的AOP,被这个注解修饰的参数和属性,就会被拿到参数并校验参数。 一,引入依赖 当前sprin…

【scikit-learn009】异常检测系列:单类支持向量机(OC-SVM)实战总结(看这篇就够了,已更新)

1.一直以来想写下机器学习训练AI算法的系列文章,作为较火的机器学习框架,也是日常项目开发中常用的一款工具,最近刚好挤时间梳理、总结下这块儿的知识体系。 2.熟悉、梳理、总结下scikit-learn框架OCSVM模型相关知识体系。 3.欢迎批评指正,欢迎互三,跪谢一键三连! 4.欢迎…

【WEB前端2024】3D智体编程:乔布斯3D纪念馆-第35课-3D互动教材

【WEB前端2024】3D智体编程:乔布斯3D纪念馆-第35课-3D互动教材 使用dtns.network德塔世界(开源的智体世界引擎),策划和设计《乔布斯超大型的开源3D纪念馆》的系列教程。dtns.network是一款主要由JavaScript编写的智体世界引擎&am…

LeetCode题练习与总结:填充每个节点的下一个右侧节点指针Ⅱ--117

一、题目描述 给定一个二叉树: struct Node {int val;Node *left;Node *right;Node *next; } 填充它的每个 next 指针,让这个指针指向其下一个右侧节点。如果找不到下一个右侧节点,则将 next 指针设置为 NULL 。 初始状态下,所…

第二十七章HTML.CSS综合案例

1.产品介绍 效果图如下&#xff1a; 代码部分如下&#xff1a; <!DOCTYPE html> <html lang"en"> <head><meta charset"UTF-8"><meta name"viewport" content"widthdevice-width, initial-scale1.0">…

计算机毕业设计Python+Spark新能源汽车推荐系统 汽车大数据 汽车数据分析 汽车可视化 汽车爬虫 大数据毕业设计 大数据毕设 知识图谱 深度学习

黄河交通学院本科毕业设计&#xff08;论文&#xff09;任务书 学院&#xff1a;智能工程学院 学生姓名 刘丹杰 专业班级 大数据20-1班 学号 2080910T01521 指导教师 炎士涛 职称 副教授 学位 硕士 题目名称 基于Hadoop的新能源汽车销售数据分析系统的设计与实现…

【Unity美术】spine软件的使用—2D动画的制作

&#x1f468;‍&#x1f4bb;个人主页&#xff1a;元宇宙-秩沅 &#x1f468;‍&#x1f4bb; hallo 欢迎 点赞&#x1f44d; 收藏⭐ 留言&#x1f4dd; 加关注✅! &#x1f468;‍&#x1f4bb; 本文由 秩沅 原创 &#x1f468;‍&#x1f4bb; 收录于专栏&#xff1a;就业…

群体优化算法---灰狼优化算法学习介绍以及在卷积神经网络训练上的应用

**长文预警**介绍 在自然界中&#xff0c;狼群的社会结构和捕猎策略展现了高度的智能和协调性&#xff0c;灰狼优化算法&#xff08;Grey Wolf Optimizer, GWO&#xff09;正是受此启发提出的一种群体智能优化算法。GWO主要模拟了灰狼的社会等级制度和捕猎行为&#xff0c;其核…