disruptor容灾方案
如何判断主节点是否挂掉
1、Redis 心跳失联
- 1.1、Redis 心跳是指:系统中的主服务(如撮合引擎)周期性地向 Redis 写入时间戳,表明“我还活着”。
- 1.2、其他服务(例如灾备节点)会定期读取这个 key,比如每 5 秒查看一次,然后计算一下,如果大于5秒表示主服务挂掉了。
2、Kafka Lag 太大
3、服务注册中心宕机标记
容灾方案容灾方案
1、多个disruptor的撮合实例做主备方案。
2、多个disruptor的撮合实例同时监听同一个kafka主题。
3、多个撮合实例通过分布式锁(Redis、Zookeeper、Etcd)保证同时只能有一个实例消费kafka的数据,锁可以设置过期时间,避免死锁,成功抢占的节点每隔 5 秒续约锁。
- 3.1、每分钟或固定时间快照一次撮合实例内存中的数据。
- 3.2、每次消费数据后手动将offset保存到redis中。
4、所有节点定时尝试去获取锁。
5、当主节点挂掉之后,其他副节点抢到锁之后,先从redis中获取快照数据,然后继续消费kafka主题数据。