您的位置:首页 > 健康 > 美食 > 海口cms模板建站_门户网站工作总结_企业邮箱查询_网络推广哪家好

海口cms模板建站_门户网站工作总结_企业邮箱查询_网络推广哪家好

2024/12/22 13:33:02 来源:https://blog.csdn.net/ystyaoshengting/article/details/142399638  浏览:    关键词:海口cms模板建站_门户网站工作总结_企业邮箱查询_网络推广哪家好
海口cms模板建站_门户网站工作总结_企业邮箱查询_网络推广哪家好

在 Nacos 中,NotifyCenterDefaultPublisherInstancesChangeNotifier 三者是用于事件通知机制的重要组成部分。它们相互协作来实现服务实例变更时的通知和发布。

NotifyCenter —— 事件通知中心

NotifyCenter 是 Nacos 中的事件通知中心,负责管理事件的订阅和发布。

它提供了事件的统一管理接口,并负责将事件从发布者传播到订阅者。所有的事件传递都是通过 NotifyCenter进行协调的。

它充当一个全局的事件调度中心,协调事件的发布和订阅行为。任何涉及到事件驱动的操作都需要经过 NotifyCenter

实现原理

  • NotifyCenter 维护了一个全局的事件处理器(Publisher)列表,用于处理不同类型的事件。
  • 当事件发生时,NotifyCenter 将事件传递给对应的 Publisher,而 Publisher 则将事件分发给相应的订阅者。
  • NotifyCenter 提供了事件发布、订阅、取消订阅等接口,使事件管理更加灵活。

常用方法

  • registerSubscriber(Subscriber subscriber):注册事件的订阅者
  • deregisterSubscriber(Subscriber subscriber):取消订阅者的注册
  • publishEvent(Event event):发布一个事件,将事件传给相应的订阅者

DefaultPublisher —— 事件发布者

DefaultPublisher 是 Nacos 中事件发布的具体实现类之一。它负责将事件发布给已经注册的事件监听器(订阅者),并确保事件能被正确消费。

实现原理

  • DefaultPublisher 通过内部的事件队列或线程池处理事件。当事件被推送到 DefaultPublisher 时,它会将事件放入队列中,并异步处理这些事件。
  • 它使用了基于线程池的模型,确保高并发情况下,事件发布不会阻塞调用方,并能有效处理大量的事件。
  • 当有事件监听器(订阅者)注册后,DefaultPublisher 将会将事件传递给这些监听器处理。

常用方法

  • init():初始化发布器,比如初始化线程池或资源池
  • publish(Event event):发布事件(将事件放到事件队列中,之后进行事件发布)
  • addSubscriber(Subscriber subscriber):增加事件订阅者
  • removeSubscriber(Subscriber subscriber):移除事件订阅者
  • notifySubscriber(Subscriber subscriber,Event event):通知事件订阅者具体事件

InstancesChangeNotifier —— 服务实例变更事件通知器

InstancesChangeNotifier 是专门用于通知 Nacos 中服务实例变更的类,它继承了 Subscriber,负责监听服务实例的变化事件。

每当 Nacos 的服务实例列表发生变化时,InstancesChangeNotifier 会被通知,InstancesChangeNotifier会回调具体的EventListener的onEvent方法。

实现原理

  • InstancesChangeNotifier内部维护了一个服务实例key和事件监听者的映射集合Map<String,ConcurrentHashSet<EventListener>> listenerMap,key为服务实例的key,value是该实例变更监听者集合。
  • InstancesChangeNotifier接收到实例变更事件后,会从事件中获取到服务实例key,然后在listenerMap获取到对应的监听者Listener,然后循环回调Listener的onEvent方法

常用方法

  • registerListener(String serviceName,String clusters,EventListener listener):注册服务实例变更事件监听者
  • deregisterListener(String serviceName,String clusters,EventListener listener):注销服务实例变更事件监听者
  • onEvent(Event event):当实例变更事件触发时的回调。

版权声明:

本网仅为发布的内容提供存储空间,不对发表、转载的内容提供任何形式的保证。凡本网注明“来源:XXX网络”的作品,均转载自其它媒体,著作权归作者所有,商业转载请联系作者获得授权,非商业转载请注明出处。

我们尊重并感谢每一位作者,均已注明文章来源和作者。如因作品内容、版权或其它问题,请及时与我们联系,联系邮箱:809451989@qq.com,投稿邮箱:809451989@qq.com