Dubbo 在 zk上创建的节点

dubbo泛化引发的生产故障之dubbo隐藏的坑# 上个月公司zk集群发生了一次故障,然后要求所有项目组自检有无使用Dubbo编程式/泛化调用,强制使用@Reference生成Consumer。具体原因是线上某服务访问量在短时间大量访问zk并创建了240万+的节点,导致zk所有节点陆续崩溃导致,多个应用因无法连接到zk报错。原因是听说泛化调用时候,provider没启动,导致每次请求都在zk创建消费节点。 由于是和自己关联性不大的项目组,了解的并不是很清楚,但是想搞明白这个事情,因此就进行了如下实验: 试验1:泛化不使用缓存 dubbo泛化写法 p 阅读详情

文章目录


拾遗

一共有四个configurators、providers、routers、consumers
在provider中已经创建了providers

@Override
    public void create(String path, boolean ephemeral) {
        if (!ephemeral) {
            if (checkExists(path)) {
                return;
            }
        }
        int i = path.lastIndexOf('/');
        //把前面的线创建好   dubbo/com.xx.xx/providers
        if (i > 0) {
            create(path.substring(0, i), false);
        }
        if (ephemeral) {
            //创建一个临时节点
            createEphemeral(path);
        } else {
            createPersistent(path);
        }
    }

先递归创建前面的,然后最后创建一个 toUrlPath(url)

但是provider已经创建了,在consuer的zookeeperRegistry中doSubscribe中遍历三个category(configurators、providers、routers)的时候,又创建了三个节点,其中包括了provider创建的providers,不会覆盖吗?

zkClient.create(path, false);

zookeeperClient中只有一个curator的扩展点,所以用的是curator的api,在curator中

持久化节点创建后,就一直存在,除非有删除操作主动来删除这个节点,持久化节点不会因为创建该节点的客户端会话失效而消失。如果重复创建,客户端会抛出NodeExistsException异常。
链接

重复创建会抛出:NodeExistsException
而zkClient.create(path, false);中传入的是false,即创建持久化节点,而不是临时节点
createPersistent(path);中:

    @Override
    public void createPersistent(String path) {
        try {
            client.create().forPath(path);
        } catch (NodeExistsException e) {
        //    如果已经有了,这里不处理
        } catch (Exception e) {
            throw new IllegalStateException(e.getMessage(), e);
        }
    }

如果已经存在了就不做处理。

总结

provider创建了providers
consumer在订阅的时候创建了configurators、routers,也会尝试创建providers,但是什么也没做。
consumer节点还没有找到

dubbo-客户端服务消费proxy创建源码分析 入口: ReferenceBean: 服务注册用@reference 引入服务 本质: 创建对应的动态代理 invoker,调用代理类的本质,是通过socket来获取zk注册中心上的节点信息,发起远程调用 源码: 阅读详情

相关推荐

ADS 2024 Circuit Envelope 仿真:3步配置调制源,分析5G NR EVM与ACPR

本文详细介绍了ADS 2024 Circuit Envelope仿真技术在5G NR调制源配置与关键指标分析中的应用。通过3步配置调制源,工程师可以高效评估EVM与ACPR等关键指标,特别适用于功放设计中的非线性效应诊断。文章还提供了优化仿真设置和精确提取EVM、ACPR的实用方法,助力5G射频前端设计。

weixin_28559803的博客 379

Android studio 3.2导入ADT Bundle项目源码以及用genymotion运行

这篇博客没什么可以看的,主要是为了记录一下我导入项目的过程,忘记的时候能可以回来看一下,因此步骤从简,原因省略,直接放图,有需要的朋友可以参考。 导入项目: 改名。Next Finish 报错 改配置文件 第一种方法:磁盘文件改,build.gradle ...

wqw_pakchoi的博客 480

CC2340R5-OAD升级实战:从配置到调试的全流程解析

本文详细解析CC2340R5芯片的OAD(空中升级)全流程,涵盖环境配置、MCU-BOOT、OAD-BL和OAD-APP程序开发,以及内存布局和调试技巧。通过实战案例展示如何实现蓝牙设备的远程固件升级,提升开发效率和产品可维护性。

silver的专栏 1063

dubbo的配置以及节点类型和从生产者到消费者的执行流程

【什么是 dubbo】 Dubbo 是阿里巴巴开发用来用来治理服务中间件。 就是资源调度和治理中心的管理工具。 【ZooKeeper 节点类型】 ZooKeeper 节点是有生命周期的,这取决于节点的类型。 在 ZooKeeper 中,节点类型可以分为 持久节点(PERSISTENT ) 是指在节点创建后,就一直存在,直到有删除操作来主动清除这个节点 临时节点(EPHEMER...

Coding Earth Engine 3957

5.44GHz超高精度!STM32G474的HRTIM时钟配置避坑指南

本文深入解析STM32G474内置高分辨率定时器的时钟配置要点,帮助工程师避开常见陷阱。文章详细阐述了从系统时钟到5.44GHz等效时基的路径,重点分析了预分频器乘法器、周期计算溢出、影子寄存器同步等关键配置,并结合实测波形对比,确保HRTIM在电机控制、数字电源等精密应用中发挥极限性能。

book8的博客 522

[附源码]计算机毕业设计JAVA网上花店系统

附源码]计算机毕业设计JAVA网上花店系统项目运行环境配置:(Webstorm也行)+ Eclispe(IntelliJ IDEA,Eclispe,MyEclispe,Sts都支持)。项目技术:等等组成,B/S模式 + Maven管理等等。环境需要1.运行环境:最好是java jdk 1.8,我们在这个平台上运行的。其他版本理论上也可以。2.IDE环境:IDEA,Eclipse,Myeclipse都可以。推荐IDEA;3.tomcat。

ssm毕设程序设计 2442

Dubbo注册中心之ZK原理概述

无论采用那种组件作为注册中心,多多少少有数据结构的不一致的问题。所以dubbo-registry-api包也只能给一个总体的框架和流程,数据结构和实现往往需要具体问题具体分析。这块我们跟随书来学一下ZK和redis的原理。1、Zookeeper原理概述我们知道ZK是树状的结构的注册中心,用ZK做分布式锁也是判断叶子节点存在与否的过程。之前我们也讲过,ZK节点有好多中类型,...

tianjingle 2300

基于STM32F103C8T6单片机设计CAN接口8路继电器控制板硬件(原理图+PCB)+软件源码

基于STM32F103C8T6单片机设计CAN接口8路继电器控制板硬件(原理图+PCB)+软件源码,仅供学习及设计参考。

GJZGRB的博客 1415

Dubbo-服务提供者向Zookeeper注册了什么

服务提供者 在启动时会调用ZookeeperRegistry#中 @Override public void doRegister(URL url) { try { //创建节点 zkClient.create(toUrlPath(url), url.getParameter(DYNAMIC_KEY, true)); } catch (Throwable e) { throw new RpcExcept

小城我家 961

风控要略-互联网业务反欺诈之路(一)

当前中国互联网安全产业答题可以分为基础安全和业务安全两个领域。从互联网诞生至2014年,互联网安全行业关注的热点基本都聚焦在网络安全、系统安全和应用安全这个三大基础安全领域上,“DDOS“(分布式拒绝服务攻击)1、“漏洞“、“拖库“2和“挂马“3等大家耳熟能详的术语也是从这些领域中衍生出来的。2014年前后,随着互联网业务的爆炸式发展,黑产团伙开始从“攻击渗透系统“的传统套路进化到“利用业务风控确实进行大规模牟利“的模式,并且逐渐形成规模庞大、分工明确的黑色产业链。

Despacito1006的博客 1010

Android13无重力感应系统修改触摸屏跟随屏幕显示旋转方向旋转

在实际产品中设计时会移除重力传感器。当设备缺少重力传感器时,系统无法使用该传感器提供的方向数据来确定屏幕旋转的方向。Android 系统中由于移除重力传感器导致的默认显示方向旋转引起触摸屏与屏幕显示不一致问题,主要是由于缺乏方向检测和触摸坐标的正确转换。通过使用替代传感器(如陀螺仪)、手动配置方向、调整触摸事件坐标和 UI 布局,可以解决这个问题。开发者需要确保在设备没有重力传感器的情况下,能够通过其他方法推测方向,并确保触摸事件和 UI 动作能够正确响应设备的旋转。

weixin_35723192的博客 802

Dubbo-注册中心

前言 本文对 Dubbo 注册中心的工作流程等进行介绍,主要关注下面3个问题。 注册中心的工作流程; Zookeeper; Dubbo 注册中心的缓存机制; 注册中心的工作流程 注册中心对于 Dubbo 而言,是对服务提供者和服务消费者的整体把控,最后的服务调用是直接发生在消费者和提供者之间的,但是如何找到提供者,如果能动性更强的选择服务,都是需要注册中心实现的。总的而言,注册中心具备以下几个...

jerryq的博客 669

MicroCap声学仿真介绍(一)

5-频率上下限选择,需要注意的是,第一个数字是上限,第二个数字是下限,如果填反了,会有报错提示;下三角可以选择“Auto”、“linear”、“log”和“list”,设置的是频率点之间的距离和频率点的数量。Component是用来选择部件的模块,如上图所示,声学仿真常用到的是“Electroacoustic Macros AC”、“Electroacoustic Macros TR”、“NXP Transducers”以及“NXP HD components”。3是声学部件,是声学仿真中常用的部件。

山无忧的博客 5084

zk临时节点失效时间_dubbo学习(六)服务发布dubbo服务在zk的创建、订阅

一、服务端provider发布流程回顾 根据dubbo启动日志,provider的发布动作为以下几个步骤:(1)暴露本地服务Export dubbo service com.ywl.dubbo.TestApi to local registry, dubbo version: 2.0.0, current host: 127.0.0.1。(2)暴露远程服务Export dubbo ...

weixin_30075405的博客 894

数学建模模型总结

这是本人在两年内准备参加数学建模竞赛搜集到的模型资料,已经经过了本人的筛选和整理,希望能够对准备参加数学建模竞赛的学弟学妹们提供一些帮助!

LinePhone3.2.7(android端最新版本) sip客户端

SIP客户端For android:LinePhone3.2.7(最新版本),官网地址:http://www.linphone.org/

dubbo泛化调用导致zk中同一个消费者节点数递增

dubbo2.6.8 泛化调用导致zk中同一个消费者节点数递增 泛化调用时,如果检查服务是否存在,服务不存在就会抛出异常,但是在此之前consumer节点已经创建,这样只要大量泛化调用这个不存在的服务,就会导致ZK上的consumer节点越来越多,给ZK造成性能!](https://img-blog.csdnimg.cn/20201215171700281.png?x-oss-process=image/watermark,type_ZmFuZ3poZW5naGVpdGk,shadow_10,text_aH

yonhu123java的博客 302

温度PID控制PLC程序

温度PID稳定控制程序,适用于欧姆龙PLC,对其他PLC也具有很大参考价值

dubbo-admin使用新版本和dubbo的2.7版本发现没有元数据的原因

元数据配置需要好几个部分都配置 首先是admin方面需要配置一个dubbo.properties节点 然后其他的服务端需要配置dubbo-config 在dubbo-admin控制台程序中已经有了元数据中心的配置了 然后需要加入创建ZK元数据中心节点的代码 或者手动在zk客户端添加 @PostConstruct public void init() throws E...

看不见鲸鱼的鼻子的博客 8367

OV9734 DATASHEET,完整规格书

OV9734完整规格书,包括电气参数,尺寸规格,寄存器配置表等

ZooKeeper会话超时(dubbo自动剔除坏节点原理)

dubbo的provider结点如果挂了,自动剔除原理:zk的临时节点,会话保持原理。 在ZK中,很多数据和状态都是和会话绑定的,一旦会话失效,那么ZK就开始清除和这个会话有关的信息,包括这个会话创建的临时节点和注册的所有Watcher。 1、会话概述 在ZooKeeper中,客户端和服务端建立连接后,会话随之建立,生成一个全局唯一的会话ID(Session ID)。服务器和客户端之间维持的...

东境物语 7155

Zookeeper[没有概念,就是纯介绍和操作]

Zookeeper节点类型,节点关系,原生命令操作,以及java客户端操作Zookeeper节点数据。

weixin_35722483的博客 3794

dubbo 服务导出

NettyServer启动(注意这里要区分NettyClient) handler包装过程 默认AllDipacher AllChannelHandler FixThreadPool protected ChannelHandler wrapInternal(ChannelHandler handler, URL url) { return new MultiMessageHandler( ...

qq_24510225的博客 334

dubbo-服务注册过程源码

看源码其实我觉得主要有这几个好处,一个呢提高自己看代码的能力,这个挺重要的,有的时候你接手一个项目,可能就需要去看其他人的代码了,再一个能加深自己的印象,不容易忘记吧,其他的你说学习dubbo框架里的一些设计模式啊,一些架构什么的,还没到那个层次,这里面可以看到spring的监听者模式,就被dubbo用上了,通过监听时间完成了服务的注册,包括双重检查锁(DCL),这个过程中也有体现,也可以让自己看到学的其他的知识点在这里体现,发现了也算是个乐趣吧。不多说跟过去之后,如图。

Liuxw666666的博客 284

Node ZooKeeper 服务发现获取服务节点信息并发送请求

公司服务治理需通过 ZK 来做服务发现,Java都被集成,有封装好的包,直接注释器调用即可。Node还需自己手搓。

张兴华的博客 1319

zookeeper系列1:单机版安装

在用dubbo做开发的时候,一般都选用zookeeper作为服务注册中心。开发过程中,一般运维同事都会在公司的开发或者测试服务器上部署一个zk集群供大家开发测试用。但有时候,网络不同或者不在公司的局域网内时,会导致连不上zk,这样开发就会比较麻烦。 我一般的做法,是在自己本地,搭建一个单机版的zk,在本地进行开发测试,等到需要时候,再将zk的地址切换到公司的zk上。 下面简单说一下zk的单节点...

licwzy的博客 254

Zookeeper学习笔记

Zookeeper学习 ZooKeeper(动物园管理者)简称ZK,一个分布式的,开放源码的分布式应用程序协调服务,是Google的Chubby一个开源的实现,是Hadoop和Hbase的重要组件。ZooKeeper使用Java 所编写,但是支持Java和C两种编程语言。 协调服务 dubbo框架 springcloud框架 zk 注册中心 Hadoop Hbase组件﹐集群架构﹑ zk集群管理者 zk实现分布式锁 内存数据模型 模型结构 2.模型的特点 每个子目录如/node

zhangan_的博客 543

dubbo的zookeeper连接、创建节点、订阅

接着上一篇的dubbo的服务发布 上一篇讲完dubbo的远程服务发布之后,到了org.apache.dubbo.registry.integration.RegistryProtocol#export的doLocalExport(originInvoker, providerUrl)调用之后,本篇看一下dubbo在远程服务发布完成之后对zookeeper的连接等操作 一. 创建zk连接 首先进入org.apache.dubbo.registry.integration.RegistryProtocol#g

景川的博客 3408

docker swarm 指定ip_[docker]使用swarm搭建分布式应用

阅读本文前应简单了解dubbo、springboot、redis、zookeeper以及单机上操作docker的相关知识。欲部署的应用的架构图:其中hello-web的8080端口对外提供访问,且本身是provider工程的消费者,redis用于作缓存服务,两个provider工程实例是dubbo调用的生产者,zk做注册中心。hello-web为springboot项目,只有一个controlle...

weixin_26895511的博客 1252
上一篇: Dubbo provider export 的 invoker到底是什么?
下一篇: Spring factoryBeanInstanceCache在哪里进行put?
大太阳na
大太阳na 领域专家: 后端开发技术领域 领域专家: 后端开发技术领域
博客等级 码龄9年 15万+粉丝 39原创
评论 1
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值