OK,7月16日到今天,已经40多天了,果然是一场马拉松,good luck!
- Zookeeper管理kafka的哪些元数据信息,看书《从PAXOS到Zookeeper分布式一致性原理与实践》
- 管理broker集群:brokers的父节点/brokers/ids,一个broker启动在其下创建子节点/brokers/ids/[0..N],所以一个broker由唯一的id标识,(可以随意修改id和物理主机的映射,不影响服务。就像:使用域名而非IP地址标识一个服务、一个资源)
- broker对应的为临时节点:broker宕机,节点被删除,通过watch机制可被感知;
- Topic注册:节点/brokers/topics/[topic],记录broker与topic分区的对应关系。临时节点
- 生产者负载均衡:生产者可以对zk上的“broker的新增与减少”、“topic的新增与减少”、“broker与topic关联关系的变化”等事件注册watch监听,实现动态负载均衡;不是很理解;
- 消费者负载均衡:一个partition分区同时只能被一个group内的一个消费者消费,zk会记录consumer与partition的对应关系。eg:/consumer/[group_id]/owners/[topic]/[broker_id-partition_id],[broker_id-partition_id]标示一个分区,节点内容就是消费该分区的consumer_id
- offset:/consumer/[group_id]/offsets/[topic]/[broker_id-partition_id],节点内容就是offset值;
- 消费者注册:一个新的consumer加入,就在group下创建一个临时节点:/consumers/[group_id]/ids/[consumer_id],内容记录自己订阅的topic。
- consumer监听:
- 每个consumer在父节点/consumers/[group_id]/ids上注册子节点列表变化的watch,一旦变化,触发rebalance;
- 监听/brokers/ids/,有broker宕机,也会引发rebalance
- zk权限ACL。没有详细了解;
- java.lang.OutOfMemoryError: unable to create new native thread异常的原因:
- java OutOfMemory的一种;
- OutOfMemory有:
- StackOverFlowError,栈深度太深,可能代码中出现死递归,动态扩展栈时,内存空间不足,会抛出outofmemery;
- JavaHeapSpace堆溢出,可能是配置的堆太小,调整参数值即可,也可能存在内存泄漏;
- PermGenSpace永久代也就是方法区溢出了,可能因为加载了太多的类,可参考http://www.cnblogs.com/xwdreamer/archive/2011/11/21/2296930.html;
- unable to create new native thread:可能是创建的线程数超过了操作系统的限制,类似于用户的文件描述符用完了;每个线程都有自己独立的虚拟机栈,需要占用内存空间,若给堆分配的heapspace很大,线程数多时,导致内存溢出;参考:http://sesame.iteye.com/blog/622670 http://www.blogjava.net/ldd600/archive/2009/09/25/296397.html https://plumbr.eu/outofmemoryerror/unable-to-create-new-native-thread
- 运行的程序出现频繁的Full gc,定位原因:
- 首先讲清楚什么情况下触发full gc,之后说明可以用jmap、jstat、jhat等命令分析,查看gc的详细信息;
- 参考:http://blog.youkuaiyun.com/chenleixing/article/details/46706039
- http://blog.youkuaiyun.com/gugemichael/article/details/22819851
- http://my.oschina.net/goldwave/blog/168516
- Kakfa的高性能是如何实现的:可参考翻译的kafka官网文档说明:http://blog.youkuaiyun.com/anjing900812/article/details/51758915
- flume使用memory channel,容易丢数据,使用file channel性能、吞吐量不好,有没有一种折中的方案?单台flume做日志采集,存在单点故障,如何进行容错机制的设计?
- 观察者模式,写代码;
- java nio:找大神推荐书,开始学习。。。