当前位置:职场发展 > 我不知道如何优雅地关闭,我的在线服务也被关闭了,我应该怎么办?

我不知道如何优雅地关闭,我的在线服务也被关闭了,我应该怎么办?

  • 发布:2023-09-30 04:11

公司项目已向领事注册。当发布微服务时,调用者总会有一定概率的调用失败。我一开始很疑惑,后来咨询了资深同事才知道:原来是服务下线的时候没有优雅停止,没有去consul到下线然后停止。结果,呼叫者获得了旧的呼叫地址,从而导致呼叫被拨打。失败!看来,优雅关闭仍然是一个不可忽视的重要知识点。今天我们就来讨论一下吧!

什么是优雅关机?

linux的世界里,一切都是资源。当我们启动 JVM 时,我们会加载许多资源。当我们关闭JVM时,JVM只会释放内存资源,其他资源不会释放,比如网络连接、文件句柄等。

Linux 的网络连接和文件句柄数量有限。如果我们不及时释放它们,久而久之就会引发一些奇怪的问题。那么当JVM关闭时如何释放这些资源呢?答案是:使用java提供的ShutdownHook接口。我们所谓的优雅关闭,就是利用Java提供的ShutdownHook接口来注册一个钩子,让JVM在关闭之前执行钩子函数的代码,并让它关闭相应的资源。

适用场景

在学习如何使用优雅关闭之前,我们需要弄清楚优雅关闭适用于哪些场景。那么我们首先需要弄清楚JVM关闭的几种情况。 JVM关闭情况可分为3类11种情况,如下图所示:

来源:陈书义/书哥谈编程


后端专属技术组

打造高质量的技术交流社区。欢迎从事编程开发、技术招聘的HR人员加入。也欢迎大家分享自己公司的内部推荐信息,互相帮助,共同进步!

相关文章

最新资讯