作者回复: 嗯嗯,是的。fencing机制很重要的,应该要提一下的
作者回复: 嗯,看到这个KIP了,最近很火,有人还翻译出来了。事实上这个KIP只是在讨论阶段,目前还没有被accept
作者回复: 嗯,做一组controller,基于Raft算法组成quorum
作者回复: Controller有个context,里面缓存了很多数据。以前的设计是多个线程会同时访问这些数据,比如topic删除线程、controller线程等。
作者回复: 里面没有子节点,但是该节点本身有内容啊。
作者回复: znode的ephemeralOwner不为0的就是临时节点
作者回复: 可以试试在reassign的过程中删除topic
作者回复: 据我所知没有性能方面的报告出来。改进最大的收益来自于可理解性和可维护性方面的提升
作者回复: 异步发送元数据来保持一致性。最权威的数据保存在Zk上。当controller挂掉之后,Zk上的临时节点/controller消失,所有存活broker都会感知到这一变化,于是抢注/controller,谁抢上谁就是新的controller
作者回复: 一般不共享内存,甚至什么都不共享, 这就是所谓的Shard-Nothing架构
作者回复: 1. 执行reassign命令总提示分区在reassign中,或者ZooKeeper中的/admin/reassign_partitions下相应节点未被删除
2. 不会丢失数据,如果真丢失了,果断开jira,因为这是一个严重的bug:)
作者回复: 每次变更都会更新zookeeper
作者回复: 客户端会先去找controller所在节点,然后直接给它发送请求
作者回复: 不会的