微服务。服务注册与服务发现有何区别?

13

我是Microservices的新手。我遇到了“服务注册表”和“服务发现”的术语。

我的理解是当一个新的服务(或服务实例)启动时,它将在“服务注册表”中注册自己。还提到客户端可以联系服务注册表并获取该服务可用的IP端口列表。

在这种情况下,“服务发现”的作用是什么呢?

编辑

接受答案。此外,还发现了更多理论细节:https://www.nginx.com/blog/service-discovery-in-a-microservices-architecture/

2个回答

16
通过将服务注册到中心位置并使用服务注册表联系目标服务的完整过程被称为服务发现。这非常类似于使用DNS查找站点的IP地址,然后使用该IP地址访问该站点。
我是Kubernetes的用户,它也有类似的说法: https://kubernetes.io/docs/concepts/services-networking/service/#discovering-services 简而言之,服务发现不是具有特定角色的模块,而是连接从服务A到服务B的端到端步骤。

3
服务发现用于客户端最初不知道需要哪个服务时,通过请求可用服务的列表来开始。 免责声明:我怀疑这个术语在不同系统中的使用方式可能会有所不同。因此,请带着一颗谨慎的心态接受我在此给出的标准答案。
一般来说,服务注册系统遵循“Broker Pattern”(或类似模式),并分为两类:
  1. “White-pages”代理:客户端准确知道所需服务的名称,并通过名称请求该服务。

  2. “Yellow-pages”代理:客户端知道需要执行的服务类型,但不知道具体需要哪个服务。

这两种系统都将客户端连接到服务,并且都涉及使用“Register Pattern”将自己输入注册表中的服务。
但是,“Yellow-pages”系统需要进行预备的“Service Discovery”步骤。在“Service Discovery”模式中,
  • 客户端首先向代理请求服务列表。
  • 客户端从列表中选择一个服务。
  • 客户端请求从列表中连接到一个服务。

Diagram from Gomaa

图片来源:Hasan Gomaa,《软件建模与设计》(剑桥大学出版社,2011年),第283页。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接