• 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生命周期不同,事务的消息可能会出现重启后被删除的情况。

     

  • 相关阅读:
    Convert、Parse、TryParse、(int)区别及可能引发性能问题
    重写、覆盖、重载、多态几个概念的区别分析
    计算机系统的硬件组成(转)
    如何选择Html.RenderPartial和Html.RenderAction
    位运算(转)
    Java程序员面试中的多线程问题
    请转到控制面板来配置或安装系统组件
    开篇
    DropDownList 不能有多个项被选定!
    有关rollup和cube的使用方法讨论
  • 原文地址:https://www.cnblogs.com/wnwn/p/12396351.html
Copyright © 2020-2023  润新知