当前位置: 首页 > 网络应用技术

服务注册和发现的原则和实施

时间:2023-03-06 14:06:18 网络应用技术

  对于从事微服务的学生来说,服务注册和服务发现的概念不太奇怪。

  简而言之,当服务A需要依靠服务B时,我们需要告诉服务A,您可以在哪里调用服务B,这是解决服务注册问题的问题。

  服务注册用于服务方面。服务开始后,需要注册,分为几个部分:

  服务节点启动后,您需要注册自己才能找到自己。当服务启动和可接受的请求并设置有效期时,需要注册注册,以防止该过程退出流程并仍被访问。

  续订时间相当于定期告诉自己他可以继续服务。

  当该过程退出时,我们应该主动撤销注册信息,以便呼叫者会及时将请求分发给其他节点。在同一时间,Go-Zero即使节点退出即使及时及时删除节点,也可以及时删除节点。不要主动取消。

  服务发现针对呼叫端,通常分为两种类型:

  另一个常见的工程问题是

  当出现服务发现服务(例如ETCD,领事,NACOS等)时,我们不应修改我们获得的端点列表,以便更好地确保服务依赖ETCD和其他停机时间仍然可以正常交互。

  启动时,您需要选择现有节点列表:,然后根据自己的负载平衡算法选择适当的节点发送请求。

  上图已经可用。如果此时开始,我们需要通知一个新节点。如图所示:

  对于服务呼叫者,我们缓存了内存中可用节点的列表。无论是使用还是等待,我们都可能在服务发现中面临群集失败。例如,当我们遇到故障时,我们需要冻结节点信息而不更改。在此时间,并且目前的节点很可能是正常的,并且它将自动隔离并恢复故障节点。

  服务注册和服务发现的基本原理大致相同。当然,实现它是相对复杂的。接下来,让我们看看哪种服务查找方法支持。

  默认支持三个服务发现方法:

  直接连接是最简单的方法。当我们的服务足够简单(例如一台运输我们的业务的机器)时,我们可以直接使用此方法。

  只需在配置文件中指定,例如::

  呼叫终端将把负载分配给这两个节点。出现问题时,将自动删除其中一个节点。节点恢复时将再次分配负载。

  该方法的缺点是不能动态添加节点。每个新节点都需要修改呼叫派对配置并重新启动。

  当我们的服务具有一定的量表时,由于服务可能取决于许多服务,因此我们需要能够动态增加或减少节点,而无需修改许多呼叫方配置并重新启动。

  有常见的服务发现解决方案等。

  Go-Zero具有基于内置服务的发现解决方案。使用的具体方法如下:

  如果我们的服务部署在集群上,则是通过其自己的管理集群。所有服务将向Object.Node信息注册我们的节点信息。

  在此机制工作之前,我们需要配置当前对群集的访问。这里有三个概念:

  特定的配置文件可以在此处引用,并根据需要进行修改。

  注意:请记住,在没有权限的时间报告的开始时,检查是否实现了这些配置:)

  服务发现的使用如下:

  在:

  创建配置文件时,请确保添加指定哪个。示例如下:

  注意要创建哪一个。

  部署到集群中后,您可以通过滚动以下命令来滚动所有节点

  使用以下命令查看节点日志:

  可以看出,我们的服务发现机制完美地遵循了节点的变化,并且在服务更新期间没有异常请求。

  请参阅github.com/zeromicro/zero-sexamples/main/discovery/k8s

  在下一篇文章中,我将解释如何实现,等待服务注册找出答案,请继续关注!

  github.com/tal-tech/go-zero

  欢迎使用和明星支持我们。

  作者:凯文·万