![](https://img-blog.csdnimg.cn/20190927151053287.png?x-oss-process=image/resize,m_fixed,h_224,w_224)
Kafka
kafka 设计与实现分析
Rover Ramble
这个作者很懒,什么都没留下…
展开
-
kafka源码阅读-Controller(四)Replica状态机
分区状态机有四种状态,replica状态机有七种状态,较为复杂。ReplicaStateMachine这个类代表副本集的状态机。它定义了一个副本所在的状态,以及将副本移动到另一个合法的状态的变迁。不同的状态如下:NewReplica: Controller可以在分配分区时创建新副本。在这个状态,一个副本只能请求成为follower。有效的前置状态是NonExistentReplica。OnlineReplica: replica一旦被启动,并且作为分配了partition的副本集的一部分,该副本就进原创 2020-06-13 10:13:17 · 376 阅读 · 0 评论 -
Kafka源码阅读-Controller(三)Partition状态机
再看onControllerFailover(),先调用partitionStateMachine和replicaStateMachine的registerListeners(),随后启动了replica状态机和partition状态机: def onControllerFailover() { if(isRunning) { ...... partitionStateMachine.registerListeners() replicaStateMachin原创 2020-06-11 01:08:49 · 331 阅读 · 0 评论 -
Kafka源码阅读-Controller(二)管理brokers
上一篇kafka源码(一)correspond to/explain Kafka设计解析(二) 中的3.2、3.3。以前一直用kafka 0.8.2.x,那时候redis开始风靡,hadoop方兴未艾,一晃四五年过去了,终于老得可以读读源码。不得不说Kafka的代码风格比spark好多了。毕竟spark太庞大,相对来说kafka小而美吧。可能出于性能的考虑,以及ZooKeeper的机制,kafka大部分都是异步回调的事件机制。类似epoll对IO的处理。源码中几乎对每个回调函数都注释了该方法什么情况下原创 2020-06-07 17:33:08 · 238 阅读 · 0 评论 -
Kafka源码阅读-Controller(一)
引用 Kafka Controller Internals:In a Kafka cluster, one of the brokers serves as the controller, which is responsible for managing the states ofpartitions and replicas and for performing administrative tasks like reassigning partitions.集群中的broker尝试在Zook原创 2020-06-05 18:46:04 · 248 阅读 · 0 评论 -
kafka设计解析(二)
1. kafka在zk中的存储结构http://www.cnblogs.com/byrhuangqiang/p/6367037.html/broker/ids/[0…N]broker 注册信息。 其中[0…N]表示broker id(broker id唯一,不可以重复)/broker/topics/[topic]/partitions/[0…N]Broker Topic 注册。...原创 2020-05-06 22:37:05 · 238 阅读 · 0 评论 -
kafka设计解析(一)
目前生产环境中,使用较多的消息队列有ActiveMQ、RabbitMQ、ZeroMQ、Kafka、MetaMQ、RocketMQ等。消息系统的作用:异步处理、应用解耦、流量削峰和消息通讯异步处理 用户注册后,异步发送邮件和注册短信。 缩短响应时间,提高吞吐量。应用解耦 消息队列把数据进行持久化直到它们已经被完全处理,通过这一方式规避了数据丢失风险,两端互不影响。流量削峰 通过队列暂存或...原创 2020-05-06 22:33:23 · 385 阅读 · 0 评论