前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >motan-1:优雅关闭

motan-1:优雅关闭

作者头像
千里行走
发布2019-07-03 18:02:03
6730
发布2019-07-03 18:02:03
举报
文章被收录于专栏:千里行走

(1).官方demo代码

1.Motan支持在Consul、ZooKeeper集群环境下优雅的关闭节点,当需要关闭或重启节点时,可以先将待上线节点从集群中摘除,避免直接关闭影响正常请求。

2.待关闭节点需要调用以下代码,建议通过servlet或业务的管理模块进行该调用。

MotanSwitcherUtil.setSwitcherValue(MotanConstants.REGISTRY_HEARTBEAT_SWITCHER, false)

(2).我们的代码

(3).问题与解决

1.问题

在web项目中没有在contextDestroyed的监听中调用motan的销毁反注册钩子,导致motan服务已经下线,但是zk中依然保留服务的注册信息,客户端不能及时感知到服务的下线,导致下线后依然打过来大量的请求,造成客户端阻塞或者报错。

2.解决方案

(4) .源码解析

1.开关及监听

官方推荐我们优雅关闭是推荐这句代码

代码语言:javascript
复制
MotanSwitcherUtil.setSwitcherValue(MotanConstants.REGISTRY_HEARTBEAT_SWITCHER, false);

我们来看下Motan向MotanConstants.REGISTRY_HEARTBEAT_SWITCHER这个开关项注册了什么监听:

可见在Registry的抽象类中注册了这个开关的监听,当开关值变化后处理相应的动作,如果关闭,则触发unavailable方法,这个方法会注销所有的服务(在registry中删除所有的节点)。

2.这里我们以zookeeper的实现为例

监听触发后会注销所有的服务。

(5) .参考资料

1. motan source code:

https://github.com/weibocom/motan

本文参与 腾讯云自媒体同步曝光计划,分享自微信公众号。
原始发表:2019-05-27,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 千里行走 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • (1).官方demo代码
  • (2).我们的代码
  • (3).问题与解决
  • (4) .源码解析
  • (5) .参考资料
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档