关于轻量级分布式事件通知的思考

  • 有些业务场景,我们需要发出一个事件,通知到每一个进程。
    比如数据变更,通知每个进程更新本地缓存。

  • 使用MQ的话,以NSQ为例,将channel名设置为ip,那么每个进程都会收到这个事件;但是目前现在是k8s的时代,使用k8s部署进程,那么会导致某些旧ip的channel仍然存在,从而造成事件堆积。

  • redis虽然支持事件,但是微服务时代,不太建议每个业务的微服务都连同一个redis(同业务内的通知可以考虑);使用一个公共的zk获取是一个可以考虑的方案,各服务启动时watch相应的节点即可。