zoukankan      html  css  js  c++  java
  • kafka各个版本特点介绍和总结

    kafka各个版本特点介绍和总结

    1.1 kafka的功能特点:

    • 分布式消息队列

       消息队列的数据模型, 形成流式数据。
       提供Pub/Sub方式的海量消息处理。以高容错的方式存储海量数据流。保证数据流的顺序。
       消费者:一份消息可多个消费者都处理,也可以只由一个消费者处理
      
    • 线性扩展,高可用

      分布式系统,易于向外扩展。所有的producer、broker和consumer都会有多个,均为分布式的。无需停机即可扩展机器。
      动态的增加一个topic的partition文件数量,就可以线性扩展一个topic的处理能力。
      
    • 以高容错的方式存储海量数据流。

      每个topic包含多个partition,partiton又有多个副本,均匀的分布在多个机器上。
      
    • 高吞吐量:生成和消费速度非常快

      	1. kafka server 生成日志的速度可以接近磁盘的只写速度(几十兆 ~ 百兆)。
      	   kafka的实现思想是文件直写(直接使用linux 文件系统的cache)的commit log. 速度非常的快. 
      	   如果消息大小为百字节级别的话,那么也就是说单机写入可以达到几十W/S。
      	2. 磁盘顺序读写
      	3. 采用linux Zero-Copy提高消息发送到consumer的性能。减少IO操作步骤;可以提高60%的数据发送性能。
      

    1.2 kafka的使用场景:

    kafka的使用场景,即kafka的用途。

    • 数据总线(数据管道)

      Kafka主要用途是数据集成,或者说是流数据集成,以Pub/Sub形式的消息总线形式提供。Kafka可以让合适的数据以合适的形式出现在合适的地方。
        1. 降低系统组网复杂度。
        2. 降低编程复杂度,各个子系统不在是相互协商接口,各个子系统类似插口插在插座上,Kafka承担高速数据总线的作用。
    

    日志收集,用户行为数据,运维监控数据收集,都可以适合该场景。

    • 海量数据 发布/订阅的消息队列

    • 实时计算的流式数据源(storm,spark-streaming)

    • 离线计算的数据源

      1. kafka的数据文件作为离线计算的数据源。 
      2. 消费kafka的数据,存储到离线平台HDFS等。
      

    1.3 kafka的大的版本升级

    kafka 从0.7 ,0.8.x, 0.9.x 0.10.0.X ,1.0.0 的主要演进:

    • 1.0.0 ~1.1.0 的重大升级 (2017.11.1)

      1. 更好地支持磁盘容错,更优雅地处理磁盘错误.
      2. Streams API 在 1.0.0 版本里继续演进.
      3. 支持 Java 9
      4. 提升了生产者的吞吐量。
      5. kafka 第一个正式版。
      
    • 在0.11.x的重大变化(2017.6.28)

      1. kafka Streams 支持 Exactly-Once Semantics
      
    • 在0.10.x的重大变化(2016.5.22)

        1. 从0.10.0.0开始,增加一个新的客户端Kafka Streams客户端API。
           用于流式处理存储在kafka topic的数据。这个新客户端仅支持0.10.x或更高的版本。
        2. 旧的的Scala的生产者已经弃用。使用者尽快使用最新的Java客户端,新的消费者API已标记为稳定。
        3. 消息包含了一个时间戳字段和压缩后消息的关系offset。
        5. 新的Java消费者现在允许用户通过分区上的时间戳来搜索offset。
        6. 启用了kafka的权限。
        7. kafka集群的broker id 支持自动生成了(cluster_id)。
        8. kafka broker 的服务协议有增加。
        9. 日志保留时间不再基于日志段的最后修改时间。相反,它将基于日志段中消息的最大时间戳。
        10.日志滚动时间不再取决于日志段的创建时间。而是基于消息中的时间戳.
        影响:
        1. 客户端需要升级到0.10.0.0,避免造成,消息格式转换,造成系统负载升高。
        2. 由于kafka功能的扩充,消息格式更改,kafka的吞吐性能有稍微的下降。
           (如果集群的能力与网络接近,可能会超过网卡,并看到由于过载的故障和性能问题。)
        3. 总体上将kafka 0.10.x变的更加稳健,功能也更加完善。
    
    • 0.9.x的重大变化(2015.11.23)
        1. Java 1.6不再支持。
        2. Scala 2.9不再支持。
        3. 变更topic配置管理开始单独处理。
        4. 启用新的kafka性能测试工具。
        5. broker协议版本升级,升级需要重启服务。
        6. 分区的leader和副本的同步机制发生了变化。
        7. kafka client的源码包结构有所变化。
        8. 日志清理和压缩的机制发生了变化。	
        9. Kafka Connect这个功能模块
        10. 安全特性的第一次加入:客户端连接borker使用SSL或SASL进行验证。
        11. Comsumer API不再有high-level、low-level之分。
    
    0.9版本的kafka 由于变化和改动较多,很不稳定,在生产环境中很少使用。
    
    • 从0.8.0升级到0.8.2( 2013,7 ~ 2015.2 )
    服务端 最稳定的版本,性能最好;但客户端还不是很完善。
    客户端api不兼容以前的版本。
    
    • 从0.7版本( 2012年以前 )
    比较老的版本。
    
  • 相关阅读:
    zookeeper + dubbo 搭建
    java 测试 powermock 使用
    设计模式(结构型模式) 之 装饰器模式
    设计模式(创建型模式)工厂模式
    设计模式(结构型模式) 之 桥接模式
    django基础(转载)
    Django之ORM学习
    Django之form组件的学习
    Django之中间件学习
    Django之model 详解
  • 原文地址:https://www.cnblogs.com/honeybee/p/8821035.html
Copyright © 2011-2022 走看看