当前位置: 首页 > news >正文

微服务模式:服务发现模式

由于微服务应用的动态性,很难调用具有固定 IP 地址的服务。这就是服务发现的概念出现的背景。服务发现有助于客户端了解服务实例的位置。在这种情况下,服务发现组件将充当服务注册表。

服务注册表是一个包含服务实例位置的集中式服务器/数据库。在微服务设置中,服务会定期更新其在服务注册表中的位置。然后服务使用者可以连接到服务注册表并获取这些服务的位置。Netflix Eureka[1] 是一种流行的“应用级”开源服务注册表。

在服务发现中,有两种模式。

1.客户端端服务发现2.服务器端服务发现

客户端端服务发现

这涉及多个步骤。

d344b844a7640452548fa543be9c23f3.png

图 01 — 客户端端服务发现

1.将服务提供者实例的位置添加到服务注册表(自注册模式)。2.当服务消费者想要请求特定服务时,服务发现机制将查询服务注册表以获取可用服务提供者实例位置的列表。3.在从服务注册表中获取位置列表后,将其发送回服务消费者。4.最后,服务消费者将路由服务请求到其中一个服务提供者实例。

自注册模式

在自注册模式中,服务实例会在启动时向服务注册表注册自己(见图 01 — 步骤 01)。这会在服务注册表上发生,并且在关闭时取消注册。

服务实例可能会调用服务注册表的注册 API 来注册其网络位置。除此之外,服务注册表还会调用服务提供者实例的健康检查 API。

模式 2:服务器端服务发现模式

与客户端端服务发现模式不同,服务器端服务发现模式中,服务客户端会发出对 DNS 名称的请求,该名称会解析为查询服务注册表并负载均衡请求的平台请求路由器。

这种模式的主要优点是,与客户端端发现模式不同,服务发现的所有方面都完全由部署平台处理。这对于任何开发方来说都是一个主要优势和一个无忧无虑的方法。部署平台(例如 Kubernetes)具有内置的服务注册表和服务发现机制,以覆盖服务器端发现模式。

这种方法的唯一限制是,您会稍微耦合到用于服务注册表的部署平台上。例如,如果您使用 Kubernetes 作为部署平台,那么您基本上与 Kubernetes 耦合,以用于服务发现。如果您的其他服务组件也在 Kubernetes 上运行,这将不是问题。然而,如今大多数部署都在云原生 Kubernetes 容器化环境中进行,这不是一个主要限制。

dbb6f388011d317a2ee60ab85ac68476.png

图 02 — 服务器端服务发现模式

这涉及多个步骤。

1.服务实例通过 registrar(第三方注册模式)向服务注册表注册。2.服务客户端从 Router 获取服务网络位置,并 Router 从服务注册表查询请求。3.然后 Router 从可用的服务提供者实例中负载均衡请求。

第三方注册模式

在第三方注册模式(见图 02 — 步骤 02)中,与服务注册表的自注册不同,一个称为 registrar 的第三方负责注册。

引用链接

[1] Netflix Eureka: https://github.com/spring-cloud/spring-cloud-netflix

http://www.lryc.cn/news/164208.html

相关文章:

  • 9.4 数据库 TCP
  • 普通用户使用spark的client无法更新Ranger策略
  • Git超详细教程
  • C++ 回调函数
  • xilinx FPGA IOB约束使用以及注意事项
  • 如何统计iOS产品不同渠道的下载量?
  • 大模型学习
  • Redis原理:IntSet
  • 【已解决】Splunk 8.2.X 升级ES 后红色报警
  • 香橙派使用外设驱动库wiringOP 配合定时器来驱动舵机
  • C++学习笔记--函数重载(2)
  • 代码随想录算法训练营Day56 || ● 583. 两个字符串的删除操作 ● 72. 编辑距离
  • chrome_elf.dll丢失怎么办?修复chrome_elf.dll文件的方法
  • 代码随想录32|738.单调递增的数字,968.监控二叉树,56. 合并区间
  • BIO NIO AIO演变
  • JVM GC垃圾回收
  • 【数据结构】队列知识点总结--定义;基本操作;队列的顺序实现;链式存储;双端队列;循环队列
  • 嵌入式学习之链表
  • 静态代理和动态代理笔记
  • [SM6225][Android13]user版本默认允许root和remount
  • pyinstaller打包exe,使用wexpect的问题
  • OpenCV(三十三):计算轮廓面积与轮廓长度
  • 9.11作业
  • AI伦理与未来社会:探讨人工智能的道德挑战与机会
  • Android窗口层级(Window Type)分析
  • 微信小程序基础加强总结
  • 【JAVA - List】差集removeAll() 四种方法实现与优化
  • sql注入基本概念
  • AIGC系列:1.chatgpt可以用来做哪些事情?
  • End-to-End Object Detection with Transformers(论文解析)