zoukankan      html  css  js  c++  java
  • kafka-高效读写数据+zookeeper作用+事务

    kafka高效写数据

      1.顺序写磁盘

        kafka的producer生产数据,要写入到log文件中,写的过程是一直追加到文件末端,为顺序写,官网有数据表明,同样的磁盘,顺序写能到600M/s,而随机写只有100M/s,这与磁盘的机械机构有关,顺序写之所以快,是因为其省去了大量磁盘寻址的时间;

      2.零复制技术

        

    zookeeper在kafka中的作用

      kafka集群中有一个broker会被选举为controller,负责管理集群broker的上下线,所有的topic的分区副本分配和leader选举等工作;

      controller的管理工作都是依赖于zookeeper的;

      leader选举过程:

        

    事务

      kafka从0.11版本开始引入事务支持,事务可以保证kafka在 Exactly Once语义的基础上,生产和消费可以跨分区和会话,要么眼全部成功,要么全部失败;

      producer事务 

        为了实现跨分区跨会话的事务,需要引入一个全局唯一的TransactionID,并将producer获取的PID和TransactionID绑定。这样当producer重启就可以通过正在进行的TransactionID获得原来的PID。

        为了管理TransactionID,kafka引入了一个新的组件Transaction Coordinator。producer就是通过和Transaction Coordinator交互获得TransactionID对应的任务状态。Transaction Coordinator还负责将事务所有写入kafka的一个内部topic,这样即使整个服务器重启,由于事务状态得到保存,进行中的事务状态可以得到恢复,从而继续运行。

      consumer事务

        上述事务机制主要是producer方面考虑,对于consumer而言,事务的保证就会相对较弱看,尤其是无法保证commit的信息被精确消息,这是由于consumer可以通过offset访问任意信息,而且不同的SegmentFile生命周期不同,事务的消息可能会出现重启后被删除的情况。

     

  • 相关阅读:
    Java集合之ArrayList
    深入理解Java中的String
    Spring系列之AOP实现的两种方式
    设计模式之代理模式
    使用 Composer 为 ThinkPHP(3.2.3)框架添加和管理组件
    滚动页面, 顶部导航栏固定效果
    nginx同一iP多域名配置方法
    nginx 服务器重启命令,关闭
    CentOS Linux服务器安全设置
    CentOS7安装iptables防火墙
  • 原文地址:https://www.cnblogs.com/wnwn/p/12396351.html
Copyright © 2011-2022 走看看