小记--------kafka高效读写数据、kafka高效读写及zookeeper在kafka中的作用

kafka高效读写数据
1.顺序写磁盘
    kakfa的producer生产数据,要写入log文件中,写的过程是一直追加到文件末端为顺序写,顺序写能达到600M/s。而随机写只有100K/s,顺序写之所以快,是因为其省去了大量磁头寻址时间
 
2.零复制技术
    正常操作将一个目录下的文件移动到另一个目录下, 首先通过系统空间读取到文件,在传输到用户空间(也就是我们的代码层面),在写入到系统空间,最后移动到另一个目录下。
    而kafka架构是直接跳过用户空间,在系统空间进行操作。因此高效的读写效率
 
Zookeeper在kafka中的作用
    kafka集群中有一个broker会被选举为Controller,负责管理集群broker的上下线,所有topic的分区副本分配和leader选举(争抢资源,哪个broker抢到,就会被选举为Controller)等工作。
    Controller的管理工作都是依赖于Zookeeper。Controller的作用就是在Zookeeper中写消息,其他作用与普通的broker是一样的。
 
Kafka事务
    kafka事务可以保证kafka在Exactly Once语义的基础上,生产和消费可以跨分区和回话,要么全部成功,要么全部失败
 
producer事务
    为了实现跨分区跨会话的事务,需要引入一个全局唯一的TransactionID,并将Producer获得的PID和TransactionID绑定,这样当Producer重启后就可以通过正在进行的TransactionID获得原来的PID,
    为了管理Transaction, kafka引入一个新的组件Transaction Coordinator,Producer就是通过和Transaction Coordinator交互获得TransactionID对应的任务状态,Transaction Coordinator还负责将事务所有写入kafka的一个内部Topic,这样即使整个服务重启,由于事务状态得到保存,进行中的事务状态可以得到回复,从而继续进行。
 
posted @ 2020-05-08 00:38  二黑诶  阅读(312)  评论(0编辑  收藏  举报