网站配图尺寸asp网站授权码如何做

张小明 2026/3/2 21:47:01
网站配图尺寸,asp网站授权码如何做,制作照片视频的软件,重庆蜡像制作遇到一个很诡异的问题#xff0c;我在启动多个配置相同zookeeper的Dubbo项目时#xff0c;其他项目都是正常启动#xff0c;唯独有一个项目在启动过程中#xff0c;Dubbo注册zookeeper协议时#xff0c;竟然出现了这样的异常提示—— Caused by: java.lang.IllegalStateE…遇到一个很诡异的问题我在启动多个配置相同zookeeper的Dubbo项目时其他项目都是正常启动唯独有一个项目在启动过程中Dubbo注册zookeeper协议时竟然出现了这样的异常提示——Caused by: java.lang.IllegalStateException: zookeeper not connected at org.apache.dubbo.remoting.zookeeper.curator.CuratorZookeeperClient.init(CuratorZookeeperClient.java:80) ... 79 common frames omitted我愣了一下原以为是zookeeper集群挂了然后检查了一下都正常啊奇怪的是其他系统也是正常连接为啥会有一台出现了这样的异常呢看了一下异常提示当我深入研究了一下出错的地方时才恍然明白出现这个异常究竟是为什么了。可谓是在源码面前一切都是裸泳。先来看异常提示出现的类方法CuratorZookeeperClient这个方法的作用是建立zookeeper客户端的连接类似http通信一般在建立通信前需要先建立三次握手连接同理在zookeeper客户端创建各类节点前同样需要先建立客户端连接到服务器上——public CuratorZookeeperClient(URL url) { super(url); try { int timeout url.getParameter(TIMEOUT_KEY, DEFAULT_CONNECTION_TIMEOUT_MS); int sessionExpireMs url.getParameter(ZK_SESSION_EXPIRE_KEY, DEFAULT_SESSION_TIMEOUT_MS); CuratorFrameworkFactory.Builder builder CuratorFrameworkFactory.builder() .connectString(url.getBackupAddress()) .retryPolicy(new RetryNTimes(1, 1000)) .connectionTimeoutMs(timeout) .sessionTimeoutMs(sessionExpireMs); String authority url.getAuthority(); if (authority ! null authority.length() 0) { builder builder.authorization(digest, authority.getBytes()); } client builder.build(); client.getConnectionStateListenable().addListener(new CuratorConnectionStateListener(url)); client.start(); boolean connected client.blockUntilConnected(timeout, TimeUnit.MILLISECONDS); if (!connected) { throw new IllegalStateException(zookeeper not connected); } } catch (Exception e) { throw new IllegalStateException(e.getMessage(), e); } }根据CuratorZookeeperClient方法可知出现zookeeper not connected异常提示是发生在这一段代码当中——if (!connected) { throw new IllegalStateException(zookeeper not connected); }connected表示连接状态当它的值为false时便会执行这段代码那么究竟是什么情况会导致它的值为false呢接下来让我们打一个断点一步一步解析这段代码。首先用作测试的dubbo和zookeeper配置如下——dubbo: application: name: testervice registry: address: zookeeper://120.77.217.245 # timeout: 20000 protocol: name: dubbo port: 20880解析来开始debug打断点CuratorZookeeperClient方法参数url主要包含以下信息——第一步、从url中获取超时时间timeout参数——int timeout url.getParameter(TIMEOUT_KEY, DEFAULT_CONNECTION_TIMEOUT_MS);这里的大概逻辑是如果yaml配置registry注册zookeeper部分参数当中含有 timeout话那么就返回配置当中定义的超时时间如果yaml没有进行配置那么就用默认的超时时间默认即常量DEFAULT_CONNECTION_TIMEOUT_MS值是5 * 1000也就是5秒这个参数其实就是本篇文章的核心。若自定义形式配置该参数形式如下timeout: 20000——dubbo: application: name: testervice registry: address: zookeeper://120.77.217.245 timeout: 20000第二步、获取客户端过期时间——int sessionExpireMs url.getParameter(ZK_SESSION_EXPIRE_KEY, DEFAULT_SESSION_TIMEOUT_MS);同理无自定义配置话则使用默认值DEFAULT_SESSION_TIMEOUT_MS 60 * 1000即6分钟第三步、创建一个设置过期时间为6分钟连接超时为5秒重试策略为每秒重试一次连接服务端为url.getBackupAddress()(注我这里得到的是120.77.217.245:9090即配置的zookeeper连接url)的CuratorFramework客户端实例——CuratorFrameworkFactory.Builder builder CuratorFrameworkFactory.builder() .connectString(url.getBackupAddress()) .retryPolicy(new RetryNTimes(1, 1000)) .connectionTimeoutMs(timeout) .sessionTimeoutMs(sessionExpireMs); client builder.build();第四步、添加连接状态的监控可以监控操作节点与连接情况——client.getConnectionStateListenable().addListener(new CuratorConnectionStateListener(url));第五步、开启客户端——client.start();最后一步监控客户端连接情况若能连接成功则证明创建客户端成功反之失败。可见若出现zookeeper not connected问题就在于客户端连接过程是失败的至于为何失败原理就在client.blockUntilConnected(timeout, TimeUnit.MILLISECONDS)代码里。boolean connected client.blockUntilConnected(timeout, TimeUnit.MILLISECONDS); if (!connected) { throw new IllegalStateException(zookeeper not connected); }进入到 client.blockUntilConnected(timeout, TimeUnit.MILLISECONDS)源码里这里的maxWaitTime即前边的timeout默认值是5秒大概分析一下下边代码——public synchronized boolean blockUntilConnected(int maxWaitTime, TimeUnit units) throws InterruptedException { //获取当前时间 long startTime System.currentTimeMillis(); //这里是true boolean hasMaxWait (units ! null); //maxWaitTimeMs等于5000毫秒即5秒 long maxWaitTimeMs hasMaxWait ? TimeUnit.MILLISECONDS.convert(maxWaitTime, units) : 0; while ( !isConnected() ) { //hasMaxWait为true if ( hasMaxWait ) { //倒数5秒 long waitTime maxWaitTimeMs - (System.currentTimeMillis() - startTime); //执行到这里已经过去5秒话就执行以下方法返回isConnected()值 if ( waitTime 0 ) { return isConnected(); } //还没到5秒话假如执行到这里还有3秒那么就会执行Object.wait(long timeout)方法即该线程阻塞3秒后再自动唤醒接着继续执行 wait(waitTime); } else { wait(); } } return isConnected(); }该方法的核心会等待maxWaitTime时间时间一到就会返回isConnected()值这里其实很好理解就是客户端发起连接后这里用一个while循环来等待指定的超时时间默认是5秒若5秒过了就返回isConnected()值而这里的isConnected()就是验证是否连接成功了那么这里就剩最后一个答案了isConnected()是什么public synchronized boolean isConnected(){ return (currentConnectionState ! null) currentConnectionState.isConnected(); }这里应该是判断客户端连接状态即在client.start()方法里会有一个状态若创建连接成功那么currentConnectionState.isConnected()就能得到true值这里更像是一个观察模式观察指定的连接超时时间内是否连接成功。根据debug发现未连接成功时值是null得到的即为false当我们把默认为5秒的连接超时设置为timeout: 20000等待连接过程发现连接成功了返回currentConnectionState的值为RECONNECTED。可见之前出现zookeeper not connected异常问题就是连接超时设置太短了currentConnectionState.isConnected()得到的是一个枚举值RECONNECTED返回的是true——CONNECTED { public boolean isConnected() { return true; } }, SUSPENDED { public boolean isConnected() { return false; } }, RECONNECTED { public boolean isConnected() { return true; } }, LOST { public boolean isConnected() { return false; } }, READ_ONLY { public boolean isConnected() { return true; } };当返回true话那么!connected就为false就不会执行以下异常提示了——if (!connected) { throw new IllegalStateException(zookeeper not connected); }根据上边分析可见启动Dubbo项目注册Zookeeper时提示zookeeper not connected异常是因为没有在配置里设置连接超时而是使用了默认的5秒导致5秒内没有成功连接就出现连接异常而无法成功连接当调长时间后就正常连接成功了同时也说明了这次本地连接zookeeper集群的时间超过了五秒。
版权声明:本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!

wordpress 搜索 下一个关键词优化排名要多少钱

NFS管理与优化全解析 1. TCP在NFS中的优势 TCP会将负载分割成与以太网数据包大小相当的段。如果其中一个段丢失,NFS无需重新传输整个操作,因为TCP本身会处理段的重传。此外,TCP还能控制传输速率,以更充分地利用网络资源,同时考虑接收方处理数据包的能力。这通过一个简单…

张小明 2026/1/8 0:59:24 网站建设

怎样快速提升网站权重如何自创游戏

(200分)- 信号发射和接收(Java & JS & Python)题目描述有一个二维的天线矩阵,每根天线可以向其他天线发射信号,也能接收其他天线的信号,为了简化起见,我们约定每根天线只能向东和向南发射信号&…

张小明 2026/1/8 0:57:46 网站建设

网站开发如何修改域名镇安县住房和城乡建设部网站

React日历组件移动端触摸优化实战指南 【免费下载链接】react-big-calendar 项目地址: https://gitcode.com/gh_mirrors/rea/react-big-calendar 还在为移动端使用React日历组件时的卡顿和响应延迟而烦恼吗?🤔 作为一款优秀的React日历组件&…

张小明 2026/1/8 0:57:45 网站建设

贵阳做网站建设最好的是哪家谷歌seo和sem

1 测试覆盖率的核心价值 测试覆盖率是衡量测试完整性的重要指标,它反映了测试用例对软件需求、代码结构及业务流程的覆盖程度。在敏捷开发与持续集成的现代开发模式下,缺乏足够的测试覆盖率如同在黑暗中航行——可能暂时顺利,但随时面临触礁…

张小明 2026/1/8 0:57:43 网站建设

做网站用什么字体多用户电商系统开发

还在为黑苹果系统的复杂配置而烦恼吗?Hackintool作为黑苹果社区的多功能工具,能够帮你轻松应对各种系统优化挑战。无论你是初次接触黑苹果的新手,还是想要深度调优系统的资深用户,这款工具都能提供全方位的技术支持。 【免费下载链…

张小明 2026/1/8 0:57:47 网站建设

电商网站seo公司沈阳网站开发工程师招聘网

3步搞定DataEase一键部署:开源数据可视化工具的极简安装指南 【免费下载链接】dataease DataEase: 是一个开源的数据可视化分析工具,支持多种数据源以及丰富的图表类型。适合数据分析师和数据科学家快速创建数据可视化报表。 项目地址: https://gitcod…

张小明 2026/1/8 0:57:48 网站建设