kafka源码解析1:Cluster集群信息
概述
KafkaProducer运行过程中需要用到集群元信息,这部分信息存在Cluster中
Node,TopicPartition和PartitionInfo
Cluster集群元信息由三种类型的对象组合Node, TopicPartition, PartitionInfo
- Node源码 Node表示集群里的一个节点
- TopicPartition源码 TopicPartition表示Topic的一个分区
- PartitionInfo源码 PartitionInfo表示一个分区的详细信息
Immutability模式
仔细阅读源码可见,三种类内部成员变量都声明为final变量,这里用了一种Immutability的并发设计模式
Immutability的并发设计模式:对象一旦被创建之后,状态就不发生变化了,即成员变量不能修改,用不可变来代替加锁(因为不可变所以无需加锁),从而解决多线程下的并发问题。
Immutability模式的实现
将一个类所有的属性都设置成 final 的,并且只允许存在只读方法,那么这个类基本上就具备不可变性了。更严格的做法是这个类本身也是 final 的,也就是不允许继承。因为子类可以覆盖父类的方法,有可能改变不可变性,所以推荐你在实际工作中,使用这种更严格的做法。
实现不可变模式快速总结
- final类
- final属性
- 方法只读
思考
- PartitionInfo类能保证不可变么?
Immutability模式扩展【文章引用】
Immutability模式扩展
相关推荐
Kafka 2020-09-18
yanghuashuiyue 2020-11-14
liuxingen 2020-11-13
wangying 2020-11-13
王谦 2020-11-03
huangwei00 2020-10-14
shenzhenzsw 2020-10-09
guicaizhou 2020-09-30
jiaomrswang 2020-09-23
jyj0 2020-09-21
guicaizhou 2020-09-15
hannuotayouxi 2020-08-20
amwayy 2020-08-03
yangyutong00 2020-08-01
weikaixxxxxx 2020-08-01
PoppyEvan 2020-08-01
guicaizhou 2020-08-01
PoppyEvan 2020-07-29