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

怎样做外贸网站网站开发郑州

怎样做外贸网站,网站开发郑州,网站开发需求描述,seo云优化软件破解版当一台机器下线时,面临很多问题:如何将其从注册中心下线?如何清理释放资源?客户端拉取服务列表时也使用了本地缓存,如何及时更新本地缓存? 服务端机器的优雅下线需要使用ShutdownHook,这相当于添…

        当一台机器下线时,面临很多问题:如何将其从注册中心下线?如何清理释放资源?客户端拉取服务列表时也使用了本地缓存,如何及时更新本地缓存?

        服务端机器的优雅下线需要使用ShutdownHook,这相当于添加了一个关闭钩子,这个钩子是一个线程,它在JVM关闭时(即程序结束时)被调用,清理资源,优雅下机。

   public void clearAll() {log.info("addShutdownHook for clearAll");// 添加了一个关闭钩子,这个钩子是一个线程,它在JVM关闭时(即程序结束时)被调用,清理资源,优雅下机Runtime.getRuntime().addShutdownHook(new Thread(() -> {try {InetSocketAddress inetSocketAddress = new InetSocketAddress(InetAddress.getLocalHost().getHostAddress(), NettyRpcServer.PORT);CuratorUtils.clearRegistry(CuratorUtils.getZkClient(), inetSocketAddress);} catch (UnknownHostException ignored) {}// 操作完整、优雅,便于释放连接资源,便于自定义清理逻辑ThreadPoolFactoryUtil.shutDownAllThreadPool();}));}

          在钩子线程中需要编写从注册中心当中删除节点的逻辑,如下所示:

  // RPC Server端 本机所注册服务的缓存private static final Set<String> REGISTERED_PATH_SET = ConcurrentHashMap.newKeySet();public static void clearRegistry(CuratorFramework zkClient, InetSocketAddress inetSocketAddress) {REGISTERED_PATH_SET.stream().parallel().forEach(p -> {try {// 是本机在ZK注册的节点if (p.endsWith(inetSocketAddress.toString())) {// 根据路径名删除节点zkClient.delete().forPath(p);}} catch (Exception e) {log.error("clear registry for path [{}] fail", p);}});log.info("All registered services on the server are cleared:[{}]", REGISTERED_PATH_SET.toString());}

           在注册中心ZK当中删除节点之后,需要释放线程池资源:

  public static void shutDownAllThreadPool() {log.info("call shutDownAllThreadPool method");THREAD_POOLS.entrySet().parallelStream().forEach(entry -> {ExecutorService executorService = entry.getValue();// 停止接收新的任务,但已提交的任务会继续执行executorService.shutdown();log.info("shut down thread pool [{}] [{}]", entry.getKey(), executorService.isTerminated());try {// 等待线程池中的任务在指定的时间内完成。如果在指定时间内线程池未能终止,会抛出 InterruptedExceptionexecutorService.awaitTermination(10, TimeUnit.SECONDS);} catch (InterruptedException e) {log.error("Thread pool never terminated");// 指定时间内线程池未能终止,立即停止所有正在执行的任务executorService.shutdownNow();}});}

            自定义关闭线程池的逻辑可以更加优雅的实现线程池资源的释放。可以达到停止接受新的任务,继续在一定等待时间范围内执行已提交的任务,超出等待时间在强制终止线程池。

 

          

http://www.yayakq.cn/news/565619/

相关文章:

  • 凡科网站制作教程ui界面设计分析
  • 襄阳建设网站首页网站建设时间及简介
  • wordpress 整站移植专业网站设计第三方服务
  • 平凉城乡建设局网站摄影师个人网站怎么做
  • 网站建设 phpwordpress 编辑器标签
  • 如何黑网站长沙关键词优化平台
  • 怎么创建网站相册学动漫设计需要什么条件
  • 温泉酒店网站建设方案高端品牌护肤品有哪些
  • 怎么样购买网站空间河南省城市建设网站
  • 建设的电影网站总是无法连接河北省建设厅工程信息网站
  • 个体网站建设it外包公司联系电话
  • 网站开发公司可行报告网站建设客户相关问题
  • 模版网站商城南庄建网站
  • 韩国网站怎么打开甘孜州建设局门户网站
  • 如何做商业推广网站小智logo在线制作
  • seo证书考试网站网站开发的基本条件
  • 织梦网做网站品牌建设成效
  • 深建市住房和城乡建设局网站做h的动漫在线观看网站
  • 网站备案抽查网站移动端就是app吗
  • 网站开发系统搭建网站怎么加ico
  • 网站快速排名服务wix和wordpress哪个好
  • 打开一个网站在建设中晋中企业网站建设
  • 专做生存设计的网站重庆专业平台推广公司
  • 德州市住房和城乡建设部网站大连外贸网站制作
  • 网站的投票系统怎么做什么是推广员
  • 自己做网站不用WordPress网站建设合同概念
  • 道滘镇网站建设上海十大公司
  • 网站导航栏图标网站制作哪家最好
  • 中国建设网站用户名江门平台入口
  • 深互动平台网站官方网站数据如何做脚注