Service Discovery in Microservices 客户端/服务端服务发现

news2024/12/20 19:53:21

原文链接 Client Side Service Discovery in Microservices - GeeksforGeeks

原文链接 Server Side Service Discovery in Microservices - GeeksforGeeks

目录

服务发现介绍

Server-Side 服务发现

实例:

Client-Side 服务发现

实例:

服务发现介绍

服务发现(Service Discovery)就是通过服务名去找服务地址(如 IP和端口)的过程。

去哪里找?当然是去拥有服务器地址信息的组件中找, 这个组件就是 发现服务(Discovery Service)。

发现服务(Discovery Service)哪来的这些地址信息? 每一个微服务启动的时候主动注册上去的。

这些地址信息可以存在一个特定的map,list 或数据库里。

假设我们现在有一个 Service-A, 四个不同地址的Service-B,在启动的时候注册自己的IP和端口到 发现服务(Discovery Service)中, 则信息如下图所示。

当 Service-A 准备调用 Service-B时,首先请求发送到 load balancer(LB), 然后LB去发现服务(Discovery Service)查询 Service-B的地址,结果发现有四个 Service-B。LB只需要按照设置的算法分发给其中一个 Service-B。

具体算法可以看这篇 What is load balancing? 什么是负载均衡?-CSDN博客

Server-Side 服务发现

其实上面这种就是 服务端(Service-Side)的服务发现。具体步骤如下:

1,客户端(Service-A)向服务器发出请求,服务器可能是路由器(Router)、负载平衡器(Load Balancer)或中间人(Middleman)。在本例中,它是一个负载均衡器(Load Balancer)。

2,服务器(负载均衡器)使用发现服务(Discovery Service)执行查询。

3,发现服务(Discovery Service)响应负载均衡器(Load Balancer)可以调用的 Service-B 实例的可用数量。

4,然后负载均衡器服务器(Load Balancer) 拿起一个 Service-B 实例并进行调用。

5,这里,Service-A(客户端)不直接与发现服务(Discovery Service)通信。它调用另一个服务器(负载均衡器)来帮助发现Service-B的URL信息。

这个完整的模式我们称之为服务器端发现。

优点:

        在这种方法中,负载平衡器(Load Balancer)完成负载平衡的工作。这是这种方法的主要优点。毫无疑问,开发这种级别的抽象使服务消费者更加轻量级,因为它不需要处理查找过程。因此,不需要为服务消费者使用的每种语言和框架单独实现发现逻辑。

缺点:

        缺点是我们必须设置和操作负载平衡器(Load Balancer),除非部署环境已经提供了它。

实例:

        Nginx: Nginx是一个web服务器,也可以用作反向代理,负载均衡器,邮件代理和HTTP缓存。Nginx是一个免费的开源软件。
        AWS ELB:弹性负载平衡器(Elastic Load Balancer, ELB)是Amazon提供的一项服务,在该服务中,传入流量以提高速度和性能的方式在一组后端服务器之间高效、自动地分布。它有助于提高应用程序的可伸缩性并保护应用程序。        

Client-Side 服务发现

客户端的服务发现其实就是 Service-A想要调用Service-B,直接请求发现服务,发现服务返回Service-B的四个实例地址,然后负载均衡由客户端Service-A 决定。

优点:对于服务端来说,少了一个额外的跳跃(hop)。

缺点:客户端要自己实现Load Balancing 逻辑。

实例:

        Netflix Eureka:Eureka 是Netflix服务发现服务器和客户端。可以将服务器配置和部署为高可用性,每个服务器将已注册服务的状态复制到其他服务器。

        Zookeeper: Zookeeper是一个分布式、开源的分布式应用协调服务(coordination service)。它公开了一组简单的原语,用于实现用于同步、配置维护、分组和命名的高级服务。

        Consul: Consul是一个服务网络解决方案,用于自动执行网络配置、发现服务,并支持跨任何云或运行时的安全连接。

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

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

相关文章

Git连接远程仓库(超详细)

目录 一、Gitee 远程仓库连接 1. HTTPS 方式 2. SSH公钥方式 (1)账户公钥 (2)仓库公钥 仓库的 SSH Key 和账户 SSH Key 的区别?​ 二、GitHub远程仓库连接 1. HTTPS方式 2.SSH公钥方式 本文将介绍如何通过 H…

系列4:基于Centos-8.6 Kubernetes多网卡节点Calico选择网卡配置

每日禅语 不动心”是一个人修养和定力的体现,若一个人心无定力,就会被外界环境左右,随外界的境遇而动摇。佛家认为,心是一切的基础,一个人如果想要真正入定,必须先从修心开始。修心即是净心,心灵…

Docker:Dockerfile(补充四)

这里写目录标题 1. Dockerfile常见指令1.1 DockerFile例子 2. 一些其他命令 1. Dockerfile常见指令 简单的dockerFile文件 FROM openjdk:17LABEL authorleifengyangCOPY app.jar /app.jarEXPOSE 8080ENTRYPOINT ["java","-jar","/app.jar"]# 使…

98. 验证二叉搜索树(java)

题目描述: 给你一个二叉树的根节点 root ,判断其是否是一个有效的二叉搜索树。 有效 二叉搜索树定义如下: 节点的左 子树 只包含 小于 当前节点的数。节点的右子树只包含 大于 当前节点的数。所有左子树和右子树自身必须也是二叉搜索树。 …

微软 Phi-4:小型模型的推理能力大突破

在人工智能领域,语言模型的发展日新月异。微软作为行业的重要参与者,一直致力于推动语言模型技术的进步。近日,微软推出了最新的小型语言模型 Phi-4,这款模型以其卓越的复杂推理能力和在数学领域的出色表现,引起了广泛…

libaom 源码分析:熵编码模块介绍

AV1 熵编码原理介绍 关于AV1 熵编码原理介绍可以参考:AV1 编码标准熵编码技术概述libaom 熵编码相关源码介绍 函数流程图 核心函数介绍 av1_pack_bitstream 函数:该函数负责将编码后的数据打包成符合 AV1 标准的比特流格式;包括写入序列头 OBU 的函数 av1_write_obu_header…

JAVA基于百度AI人脸识别签到考勤系统(开题报告+作品+论文)

博主介绍:黄菊华老师《Vue.js入门与商城开发实战》《微信小程序商城开发》图书作者,CSDN博客专家,在线教育专家,CSDN钻石讲师;专注大学生毕业设计教育、辅导。 所有项目都配有从入门到精通的基础知识视频课程&#xff…

go 中使用redis 基础用法

1、安装redis 参考链接:https://www.codeleading.com/article/98554130215/ 1.1 查看是否有redis yum 源 yum install redis没有可用的软件包,执行1.2 1.2下载fedora的epel仓库 yum install epel-release --下载fedora的epel仓库1.3启动redis s…

postman添加cookie

点击cookies 输入域名,添加该域名下的cookies 发送改域名下的请求,cookie会自动追加上

简易记事本开发-(SSM+Vue)

目录 前言 一、项目需求分析 二、项目环境搭建 1.创建MavenWeb项目: 2.配置 Spring、SpringMVC 和 MyBatis SpringMVC 配置文件 (spring-mvc.xml): 配置视图解析器、处理器映射器,配置了CORS(跨源资源共享)&#x…

vsCode 报错[vue/no-v-model-argument]e‘v-model‘ directives require no argument

在vue3中使用ui库中的组件语法v-model:value时会提示[vue/no-multiple-template-root]The template root requires exactly one element. 引入组件使用单标签时会提示[vue/no-multiple-template-root]“The template root requires exactly one element. 原因: 1.可…

初学stm32 -- SysTick定时器

以delay延时函数来介绍SysTick定时器的配置与使用 首先是delay_init()延时初始化函数,这个函数主要是去初始化SysTick定时器; void delay_init() {SysTick_CLKSourceConfig(SysTick_CLKSource_HCLK_Div8); //选择外部时钟 HCLK/8fac_usSystemCoreCloc…

Gitlab 数据备份全攻略:命令、方法与注意事项

文章目录 1、备份命令2、备份目录名称说明3、手工备份配置文件3.1 备份配置文件3.2 备份ssh文件 4、备份注意事项4.1 停止puma和sicdekiq组件4.2 copy策略需要更多磁盘空间 5、数据备份方法5.1 docker命令备份5.2 kubectl命令备份5.3 参数说明5.4、选择性备份5.5、非tar备份5.6…

selenium工作原理

原文链接:https://blog.csdn.net/weixin_67603503/article/details/143226557 启动浏览器和绑定端口 当你创建一个 WebDriver 实例(如 webdriver.Chrome())时,Selenium 会启动一个新的浏览器实例,并为其分配一个特定的…

Docker--Docker Registry(镜像仓库)

什么是Docker Registry? 镜像仓库(Docker Registry)是Docker生态系统中用于存储、管理和分发Docker镜像的关键组件。 镜像仓库主要负责存储Docker镜像,这些镜像包含了应用程序及其相关的依赖项和配置,是构建和运行Doc…

OpenEuler Linux上怎么测试Nvidia显卡安装情况

当安装好显卡驱动后怎么样知道驱动程序安装好了,这里以T400 OpenEuler 正常情况下,我们只要看一下nvidia-smi 状态就可以确定他已经正常了 如图: 这里就已经确定是可以正常使用了,这里只是没有运行对应的程序,那接来下我们就写一个测试程序来测试一下:以下代码通过AI给出然后…

【python虚拟环境安装】linux centos 下的python虚拟环境配置

linux centos 下的python虚拟环境配置 在 CentOS 环境中处理 pip 安装警告的方法1. 创建并使用虚拟环境2. 忽略警告并继续使用 root 用户安装(不推荐)报错问题处理 在 CentOS 环境中处理 pip 安装警告的方法 当在 CentOS 环境中遇到 pip 安装警告时&…

Excel根据身份证号,计算退休日期和剩余天数!

大家好,我是小鱼。 日常工作中,有时我们需要使用Excel表格统计男女员工退休日期或者退休剩余天数,很多新手小伙伴可能不知道如何下手。今天就跟大家分享一下WPS中的Excel表格数据如果根据身份证号,自动批量计算退休日期和剩余天数…

排序算法(3)——归并排序、计数排序

目录 1. 归并排序 1.1 递归实现 1.2 非递归实现 1.3 归并排序特性总结 2. 计数排序 代码实现 3. 总结 1. 归并排序 基本思想: 归并排序(merge sort)是建立在归并操作上的一种有效的排序算法,该算法是采用分治法&#xff0…

Electron-Vue 开发下 dev/prod/webpack server各种路径设置汇总

背景 在实际开发中,我发现团队对于这几个路径的设置上是纯靠猜的,通过一点点地尝试来找到可行的路径,这是不应该的,我们应该很清晰地了解这几个概念,以下通过截图和代码进行细节讲解。 npm run dev 下的路径如何处理&…