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

NACOS源代码系列 - 订阅机制的主要后果(第1部分)

时间:2023-03-05 21:08:16 网络应用技术

  再次查看,养成习惯,并在微信上搜索[Mu Xiaonong],以支付更多信息。在风和雨中,小农民正在等待您,我很高兴成为您的朋友。项目源地址:公共帐户回复NACOS,您可以免费获得源代码

  在我们了解NACOS订阅机制之前,让我们首先了解先前原因的“服务发现” - NACOS客户。

  读者的心:我相信你鬼。

  对于NAOCS客户端的“服务发现”,主要是NamingService获取服务列表,汇编参数,呼叫服务接口等。上图只是一个一般过程。),订阅过程和后果(故障传输过程),让我们解释一下下面的详细信息,客户服务发现的基本过程。

  首先,让我们从输入阶级客户端项目开始

  在上一章中,我们解释了该方法。今天,我们需要查看该方法的特定逻辑。这是我们需要观察的入口

  在上面的特定方法中,将设置几轮重载方法的调用。默认值是在重载方法调用过程中设置的

  如果是订阅模式,请直接从缓存中获取服务信息,然后从中获取示例列表。订阅机制将自动将服务器实例信息与局部区域同步。该过程如下:

  在订阅过程的过程中,我们讨论了订阅的逻辑。接下来,让我们看一下订阅到底做什么。首先,我们已经知道该服务的订阅地点。我们只需要单击即可找到相应的.method。

  serviceInfo = clientproxy.subscribe(serviceName,groupName,clusters);

  以下是一种特定方法。这是客户端类型是namingclientproxydelegate。当实例化nacosMansingService时,该课程立即实例化

  在上面的代码中,我们可以看到我们在获取服务器列表时已经扩展了订阅逻辑。

  如下所示:

  在上面,我们解释了NACOS如何进行服务器发现以及订阅的入口和一般逻辑。接下来,让我们谈谈NACOS订阅机制的核心。首先是NACOS登记中心的服务示例服务示例6秒。如果检测实例更改,则会发布更改,订户执行相应的逻辑处理(更新缓存和实例信息)。主过程。

  正时任务

  实际上是一种实现服务发现方法,即在服务发现时执行订阅方法,然后通过计时任务绘制服务器信息正时。当我们发现它时,我们会发现有几种方法可以做。以下方法:

  让我们首先在这里看一下。该方法实际上是我们上面提到的方法。在这里,我们主要查询服务列表的信息。我们只能知道是查询还是订阅是相同的方法。在这里,我们不太描述太多。

  在这里,我们关注此方法中的定时调度方法。此方法在此方法中构建ServiceKey。它用于确定是否通过密钥重复它。

  延迟延迟一秒钟的执行:

  订阅机制的核心业务逻辑已包装在该方法中的定时任务中。

  定时任务执行后,默认间隔为6秒。当发生异常时,它将被扩展,但不会超过1分钟。此方法将比较当地是否有缓存以及是否过期。当它不存在或到期时,您将检查注册中心,获取最新示例,更新最后时间,处理服务信息并计算任务时间,即Endessence处的圆形执行过程

  在业务逻辑结束时,将计算下一个定时任务的执行时间,并通过延迟时间延迟执行。延迟时间默认为1000*6(6秒),然后启动下一个定时任务。当我们的程序异常时,执行时间呈钟表的钟表,最长的时间不超过一分钟

  在这一点上,我们已经解释了NACOS客户端设定的核心过程。NACOS客户端每6秒通过计时任务从注册中心获取示例列表。进行业务处理,然后在内存和本地缓存中更新实例。Next,让我们谈谈如何在获得最新示例列表后如何处理时间机制。

  当我们在第一步中调用该方法时,我们将订阅一个事件,并且定期定期获得实例列表后,呼叫方法将应用于ServiceInfo本地处理,其中包括事件处理。

  在订阅方法中,我们通过以下代码进行注册

  在上面的代码中,我们主要担心此监视是注册特定事件的逻辑。在以下代码中,它主要存储在地图结构中。

  关于ServiceInfo的处理,将在UpdatEtask中获取最新实例信息后处理最新实例信息。我们需要看到的是本地缓存方法

  首先,我们判断最新的ServiceInfo数据是否正确以及是否存在更改。如果数据格式正确并且更改,它将发布更改事件。

  NACO如何处理服务信息的更改?不用担心,我们会看不起。调用该方法后,将发布更改事件。让我们来看看。

  首先,事件跟踪的核心过程主要分为几个,并且事件的发行人根据事件的类型获取事件 - “发布者 - ”事件的详细显示:下面显示:

  在此源代码中,它实际上是由单个情况实现的。何时建立钥匙值对?实际上,当我们调用初始方法时,绑定它

  当我们从上述方法进入时,我们会发现他使用默认值来构建它,在代码块中,您会发现event -publisher default_publisher_factory by默认为

  从中,我们可以看到,事件名称与类事件的发布者之间的关系以及默认时间为DefaultPublisher。

  在这一点上,我们已经完成了NACOS订阅机制的上半部分,因为整体服务订阅的事件机制相对复杂,长度太长,因此将其分为两个部分。今天,我们主要解释客户服务发现的原理。以及在订阅机制和InstancesChangeEvent事件的过程中的计时器操作逻辑

  如果您对该文章有任何疑问,欢迎在下面留言,而小型农民会尽快见到您。

  如果您认为这篇文章对您有帮助,请记住喜欢它,您的支持是我创作的最大动力!

  原始:https://juejin.cn/post/7097601016731795464