在zookeeper
中,我们可以监控特定的znode
节点,当节点发生变化时,便会给监控方发送事件通知。这有点类似于发布-订阅模式,拿Redis
来说,当我们发布新消息时,Redis
便会通知订阅者。
从设计模式上来说,事件通知属于观察者模式。当被观察者发生某种变化时,通知观察者,观察者对通知作出处理。
在业务上,将事件通知独立成一个微服务:事件中心,目的是解耦业务。本质上,kafka
能做什么,事件中心就能做什么。记得看过一句话,大概的意思的是:任何问题,都能通过抽象一个中间服务层来解决。
实现一个事件中心,主要包括两部分:
- 创建事件
- 订阅事件
拿客户端冷启动的事件为例,我们可能需要在用户打开APP
的时候,做一些特殊的业务逻辑(这种情况应该挺常见的)。事件中心的业务处理流程包括:
- 在事件中心创建一个客户端冷启动的标识
- 业务在后台订阅这个标识,并配置一个请求地址,用于接受回调通知
- 客户端冷启动时,通知事件中心,事件中心触发回调通知
事件中心充当了代理的角色,因为有了事件中心作为中间层,发布事件的逻辑和消费事件的逻辑可以并行开发,同时,如果有别的业务也需要关注客户端冷启动事件,在事件中心订阅这个事件就可以了。
来源:oschina
链接:https://my.oschina.net/u/3017278/blog/3207906