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

西安市建设局网站wordpress 全文

西安市建设局网站,wordpress 全文,高端建筑铝型材,网站建设策划案目录 一、Nacos客户端服务订阅的事件机制 1、监听事件的注册 2、ServiceInfo处理 serviceInfoHolder.processServiceInfo 一、Nacos客户端服务订阅的事件机制 Nacos客户端订阅的核心流程#xff1a;Nacos客户端通过一个定时任务#xff0c;每6秒从注册中心获取实例列表Nacos客户端通过一个定时任务每6秒从注册中心获取实例列表当发现实例发生变化时发布变更事件订阅者进行业务处理然后更新内存中和本地的缓存中的实例。 在第一步调用subscribe方法时会订阅一个EventListener事件。而在定时任务UpdateTask定时获取实例列表之后会调用ServiceInfoHolder.processServiceInfo方法对ServiceInfo进行本地处理这其中就包括和事件处理。 1、监听事件的注册 在subscribe方法中通过了下面的源码进行了监听事件的注册 public class NacosNamingService implements NamingService { ...Overridepublic void subscribe(String serviceName, String groupName, ListString clusters, EventListener listener)throws NacosException {if (null listener) {return;}String clusterString StringUtils.join(clusters, ,);changeNotifier.registerListener(groupName, serviceName, clusterString, listener);clientProxy.subscribe(serviceName, groupName, clusterString);} 在这其中我们主要要关注的就是changeNotifier.registerListener此监听就是进行具体事件注册逻辑的我们来看一下源码         可以看出事件的注册便是将EventListener存储在InstancesChangeNotifier的listenerMap属性当中了。同时这里的数据结构为ConcurrentHashMapkey为服务实例的信息的拼接value为监听事件的集合。 public class InstancesChangeNotifier extends SubscriberInstancesChangeEvent {private final String eventScope;private final MapString, ConcurrentHashSetEventListener listenerMap new ConcurrentHashMap(); ...public void registerListener(String groupName, String serviceName, String clusters, EventListener listener) {String key ServiceInfo.getKey(NamingUtils.getGroupedName(serviceName, groupName), clusters);ConcurrentHashSetEventListener eventListeners listenerMap.computeIfAbsent(key, keyInner - new ConcurrentHashSet());eventListeners.add(listener);} 2、ServiceInfo处理 上面的源码中已经完成了事件的注册现在就来追溯触发事件的来源UpdateTask中获取到最新的实例会进行本地化处理部分源码如下 // ServiceInfoUpdateServiceUpdateTaskrun() ServiceInfo serviceObj serviceInfoHolder.getServiceInfoMap().get(serviceKey); if (serviceObj null) {serviceObj namingClientProxy.queryInstancesOfService(serviceName, groupName, clusters, 0, false);// 本地缓存处理serviceInfoHolder.processServiceInfo(serviceObj);lastRefTime serviceObj.getLastRefTime();return; } serviceInfoHolder.processServiceInfo 这个逻辑简单来说判断新的ServiceInfo数据是否正确是否发生了变化。如果数据格式正确且发生变化那就发布一个InstancesChangeEvent事件同时将ServiceInfo写入本地缓存。 public class ServiceInfoHolder implements Closeable { ...public ServiceInfo processServiceInfo(ServiceInfo serviceInfo) {String serviceKey serviceInfo.getKey();if (serviceKey null) {return null;}ServiceInfo oldService serviceInfoMap.get(serviceInfo.getKey());if (isEmptyOrErrorPush(serviceInfo)) {//empty or error push, just ignorereturn oldService;}// 缓存服务信息serviceInfoMap.put(serviceInfo.getKey(), serviceInfo);// 判断注册的实例信息是否已变更boolean changed isChangedServiceInfo(oldService, serviceInfo);if (StringUtils.isBlank(serviceInfo.getJsonFromServer())) {serviceInfo.setJsonFromServer(JacksonUtils.toJson(serviceInfo));}// 监控服务监控缓存Map的大小MetricsMonitor.getServiceInfoMapSizeMonitor().set(serviceInfoMap.size());// 服务实例已更变if (changed) {NAMING_LOGGER.info(current ips:({}) service: {} - {}, serviceInfo.ipCount(), serviceInfo.getKey(),JacksonUtils.toJson(serviceInfo.getHosts()));// 添加实例变更事件会被订阅者执行NotifyCenter.publishEvent(new InstancesChangeEvent(notifierEventScope, serviceInfo.getName(), serviceInfo.getGroupName(),serviceInfo.getClusters(), serviceInfo.getHosts()));// 记录Service本地文件DiskCache.write(serviceInfo, cacheDir);}return serviceInfo;} 分析到这里我们发现其实这个重点应该在服务信息变更之后发布的InstancesChangeEvent事件这个事件是NotifyCenter进行发布的我们来追踪一下源码 Spring Cloud Alibaba - Nacos 干我们这行啥时候懈怠就意味着长进的停止长进的停止就意味着被淘汰只能往前冲直到凤凰涅槃的一天
http://www.pierceye.com/news/10718/

相关文章:

  • 北京通州网站制作公司响应式网页设计原理
  • 专业外贸网站制作贵州建设考试网站
  • 烟台网站建设威企汇互联见效付款火狐如何去掉2345网址导航
  • 网站建设初学软件摄影作品网站或app
  • 网站建设增长率seo主要优化
  • 郑州网站设计见效快微信怎么关闭小程序功能
  • 网站维护一般需要多久做小程序的公司
  • 什么网站模板网页设计的ppt展示
  • 做网站需要懂哪些语言定制钻戒
  • 网站被k文章修改可信网站 认证规则
  • vs 手机网站开发如何将软件上传到公开网站
  • flash网站建设教程视频网站管理系统
  • 中国建设协会网站首页网页制作和网站建设的区别
  • 图书馆网站建设情况汇报杭州网站定制开发哪家好
  • 深圳网站建设官网各大网站投稿方式
  • 钓鱼网站生成器床品图案设计网站
  • 美食网站开发计划网站集约化建设会议请示
  • 朝阳网站建设怎么样安徽工程建设信息网新网站
  • 太原做彩票网站公司中石油第六建设公司网站
  • 长沙建站找有为太极就治就网站能给企业带来什么
  • 西部数码成品网站在线看国内永久免费crm
  • 网站建设从哪几个情况去判品牌网站建设策划方案
  • 外贸行销网站做正规网站
  • 求网站网页设计图片叠加
  • 鲅鱼圈做网站wordpress菜单显示用户
  • 网站建站网站91955在线流程图网站怎么做
  • 建设部网站官网证书编号软文文案
  • 站酷网官方入口网页版设计网站公司咨询亿企邦
  • 网站开发项目运营经理岗位职责知名网站有哪些?
  • 电商网站建设行业现状凡科做网站在百度能看见吗