ZooKeeper 3.4.10 集群深度剖析(下)—— Leader 选举、数据同步、Java 客户端与运维实践
上篇讲透了 ZAB 协议,中篇深入了数据模型、Session 和 Watcher。下篇聚焦四个团队高频话题:Leader 选举到底怎么选、数据同步的三种策略、Java 客户端底层 NIO 通信的每一步、以及生产环境的运维最佳实践。 七、Leader 选举 ——...
ZooKeeper 3.4.10 集群深度剖析(中)—— 数据模型、Session 与 Watcher
上篇我们建立了 ZK 集群的全局视角,深入理解了 ZAB 协议这个”灵魂”。中篇聚焦 ZK 对开发者最直接的三块:数据模型(你存的是什么)、Session 机制(客户端与服务端的纽带)和 Watcher 机制(变更通知的核心)。 四、数据模型与 API...
ZooKeeper 3.4.10 集群深度剖析(上)—— ZAB 协议与核心架构
ZooKeeper 作为分布式系统的”协调中枢”,在企业内部几乎无处不在——配置中心、服务发现、分布式锁、Leader 选举、消息队列……这些场景背后都离不开 ZK。但很多中间件团队成员对 ZK 的理解停留在”会调 API”层面,对内部的 ZAB 协议、Session 机制、Leader 选举等核心原理缺乏系统认知。 本文以...
看书读感-《U型思考》
序 本质思考力决定未来 人遇到问题的时候,一般有2种思考方式: 直线思考,在现象层面直接寻求解决方案 U型思考,不是在现象层面求解,而是挖掘问题背后的本质,在本质层面找到根本性解决法,最终再回到现实解决问题 第一章 U型思考为什么 未知的未知、未知之墙、元思维、跨越未知之墙 第一节 未知三模型 已知的已知、已知的未知、未知的未知 第二节...
RocketMQ-优雅启停
经常使用RocketMQ,在Spring项目中使用Consumer时候,一般在bean初始化的时候,就执行Consumer.start,导致项目中其他bean还没初始化完成就消费MQ消息,存在后续bean初始化失败后,消费处理失败丢失的情况,如何做到优雅启停呢,可以参考RocketMQ-springboot-starter的实现。 如下DefaultRocketMQListenerContainer实现了多个接口: public class DefaultRocketMQListenerContainer implements InitializingBean, RocketMQListenerContainer, SmartLifecycle, ApplicationContextAware...