zk服务器异常报警和线程服务关闭机制

这篇文章主要讲解了“zk服务器异常报警和线程服务关闭机制”,文中的讲解内容简单清晰,易于学习与理解,下面请大家跟着小编的思路慢慢深入,一起来研究和学习“zk服务器异常报警和线程服务关闭机制”吧!

10年的武陵网站建设经验,针对设计、前端、开发、售后、文案、推广等六对一服务,响应快,48小时及时工作处理。成都全网营销的优势是能够根据用户设备显示端的尺寸不同,自动调整武陵建站的显示方式,使网站能够适用不同显示终端,在浏览器中调整网站的宽度,无论在任何一种浏览器上浏览网站,都能展现优雅布局与设计,从而大程度地提升浏览体验。创新互联公司从事“武陵网站设计”,“武陵网站推广”以来,每个客户项目都认真落实执行。

主要查看ZooKeeperServer

监听与服务器关系类图

zk服务器异常报警和线程服务关闭机制

疑问:重要线程关闭或中断的时候?这个监听器在什么时候被调用呢?

接口 ZooKeeperServerListener

void notifyStopping(String threadName, int errorCode);

实现类ZooKeeperServerListenerImpl

@Override

public void notifyStopping(String threadName, int exitCode) {

LOG.info("Thread {} exits, error code {}", threadName, exitCode);

zkServer.setState(State.ERROR);

}

报警危机线程ZooKeeperCriticalThread继承了ZooKeeperThread

重新实现了父类方法,调用监听通知方法,改变服务状态

@Override protected void handleException(String threadName, Throwable e) { LOG.error("Severe unrecoverable error, from thread : {}", threadName, e); listener.notifyStopping(threadName, ExitCode.UNEXPECTED_ERROR.getValue()); ServerMetrics.getMetrics().UNRECOVERABLE_ERROR_COUNT.add(1); }

处理器实现ZooKeeperServerShutdownHandler

private final CountDownLatch shutdownLatch;

void handle(State state) { if (state == State.ERROR || state == State.SHUTDOWN) { shutdownLatch.countDown(); } }

把shutdownLatch减去1

1异常处理流程

SessionTrackerImpl 运行中如果遇到异常

catch (InterruptedException e) {

handleException(this.getName(), e);

}

2调用继承类的方法handleException

3方法中调用监听类ZooKeeperServerListener的.notifyStopping通知方法

4通知接口实现ZooKeeperServerListenerImpl具体指定处理

设置服务状态为zkServer.setState(State.ERROR);

5调用zkServer.setState方法,内部调用ZooKeeperServerShutdownHandler处理器方法

6处理器中调用handle方法

void handle(State state) {

if (state == State.ERROR || state == State.SHUTDOWN) {

shutdownLatch.countDown();

}

}

6 计数器关闭ZooKeeperServerMain中注册了关闭服务处理器

// Registers shutdown handler which will be used to know the

// server error or shutdown state changes.

final CountDownLatch shutdownLatch = new CountDownLatch(1);

zkServer.registerServerShutdownHandler(new ZooKeeperServerShutdownHandler(shutdownLatch));

...

containerManager.start();

// Watch status of ZooKeeper server. It will do a graceful shutdown

// if the server is not running or hits an internal error.

shutdownLatch.await();

感谢各位的阅读,以上就是“zk服务器异常报警和线程服务关闭机制”的内容了,经过本文的学习后,相信大家对zk服务器异常报警和线程服务关闭机制这一问题有了更深刻的体会,具体使用情况还需要大家实践验证。这里是创新互联,小编将为大家推送更多相关知识点的文章,欢迎关注!


当前文章:zk服务器异常报警和线程服务关闭机制
新闻来源:http://cdiso.cn/article/jjccic.html

其他资讯