Kafka入门

kafka入门

kafka与消息引擎关系

Apache kafka 并不仅仅是消息引擎,同时也是一个分布式流处理平台

kafka设计之初旨在提供三个方面的特性:

  • 提供一套API实现生产者和消费者
  • 降低网络传输和磁盘存储开销
  • 实现高伸缩性架构

Kafka 社区于 0.10.0.0 版本正式推出了流处理组件 Kafka Streams,也正是从这个版本开始,Kafka 正式“变身”为分布式的流处理平台,而不仅仅是消息引擎系统了。今天 Apache Kafka 是和 Apache Storm、Apache Spark 和 Apache Flink 同等级的实时流处理平台

kafka与其他主流发数据流式计算框架相比优点

  • 更容易实现端到端的正确性(Correctness),流处理要最终替代它的“兄弟”批处理需要具备两点核心优势:要实现正确性和提供能够推导时间的具。实现正确性是流处理能够匹敌批处理的基石。所有的数据流转和计算都在 Kafka内部完成,故 Kafka 可以实现端到端的精确一次处理语义。

  • 对自己流式计算的定位。kafka将自己定位就是用于搭建实时流处理的客户端库,而非一个完整的功能系统。Apache kafka需要自己选择合适的工具灵活实现自己需要的各种功能,比如:集群调度,弹性部署

kafka的不同版本

  1. Apache Kafka

    优点:

    • 开发人数多,版本迭代快,社区活跃
    • 仅提供最基础的组件,对于简单场景足够,对系统有较大的的把控度

    缺点:

    • 仅提供基础核心组件,缺乏一些高级特性。如果需要与其他外部系统交互连接,需要自己编写代码
    • 没有提供任何监控框架或工具,需要借助第三方监控框架

    **总结:**仅仅需要一个消息引擎系统亦或是简单的流处理应用场景,同时需要对系

    统有较大把控度,那么我推荐你使用 Apache Kafka

  2. Confluent Kafka

    优点:

    • 提供免费版和企业版。免费版中相对Apache Kafka除了常规组件外,还有Schema注册中心(帮助集中管理 Kafka 消息格式以实现数据前向 / 后向兼容)和REST proxy(用开放 HTTP 接口的方式允许你通过网络访问 Kafka 的各种功能 )两大功能。
    • 免费版中提供了更多的连接器
    • 企业版除了免费版的功能外,还提供了跨数据中心备份和集群监控两大功能,这些都是Apache Kafka没有的

    缺点:

    • Confluent Kafka国内相关资料、技术支持比较少,在国内普及率比较低,可参考范例少

    **总结:**如果你需要用到 Kafka 的一些高级特性,那么推荐你使用 Confluent

    Kafka

  3. CDH/HDP Kafka

    优点:

    • 天然集成Apache Kafka,通过便捷化UI界面将Kafka的安装、运维、管理、监控全部统一在控制台。
    • 不需要复杂的命令即可操作Kafka。操作简单,节省运维成本

    缺点:

    • 对Apache Kafka的封装降低自己对Kafka集群的掌握程度
    • 滞后性。因为内部集成的是Apache Kafka,所以可能当Apache Kafka新版本发布时,CDH/HDP Kafka仍使用之前版本Apache Kafka。

    **总结:**如果你需要快速地搭建消息引擎系统,或者你需要搭建的是多框架构成的数据平 台且 Kafka 只是其中一个组件,那么我推荐你使用这些大数据云公司提供的 Kafka

    Kafka版本号

    不同版本号之间的Kafka还是有不少差异区别,在实际开发过程中并不总是选择最新版本即为最佳选择。所以需要了解下不同版本号之间的差异

    Kafka版本命名规则

    在下载的时候可以看到

    Scala 2.11 - kafka_2.11-2.2.1.tgz(asc,sha512)
    
    • Scala 2.11:是指编译Kafka源代码的Scala编译器版本。
    • kafka_2.11-2.2.1.tgz:真正版本号时2.2.1.
      • 第一个2表示大版本号(Major Version)
      • 中间的2表示小版本号或次版本号(Minor Version)
      • 最后一个1表示修改版本号(Patch),即打了几次布丁

    需要注意的是,Kafka版本号在1.0.0版本之后,宣布版本命名规则从原来的4位演进成为3位,但命名规则仍是:“大版本号-小版本号-Patch号”

    Kafka版本演进

    Kafka总共7个大版本,分别为:0.7、0.8、0.9、0.10、0.11、1.0和2.0,里面还包括许多次小版本和Patch版本。

    0.7

    最开始版本,只提供最基础的消息队列,没有副本机制,所以并不推荐使用

    0.8
    • 引入了副本机制,比较好的可以保证消息无丢失
    • 但是是在使用老版本的客户端API,即在使用生产者消费者时需要制定Zookeeper地址而非Broker地址,默认使用的是同步发送,所以吞吐量并不高。虽然可以设置为异步发送,但可能会造成消息丢失
    • 0.8.2.0引入了新版本的Producer API,需要制定Broker地址
    • 如果要是用0.8版本,至少升到0.8.2.2版本。该版本中老版消费者API比较稳定,但不要使用新版Producer API,bug比较多
    0.9
    • 增加了基础的安全认证 / 权限功能,同时使用 Java 重写了新版本消费者 API,另外还引入了 Kafka Connect 组件用于实现高性能的数据抽取
    • 新版本Producer API 在这个版本中算比较稳定了
    • 使用0.9版本时注意不要使用新版本 Consumer API ,bug比较多
    0.10.0.0
    • 引入了 Kafka Streams。从这个版本起,Kafka 正式升级成分布式流处理平台
    • 中自 0.10.2.2 版本起,新版本 Consumer API 算是比较稳定了
    • 如果要是用0.10版本,你至少升级到 0.10.2.2 然后使用新版本 Consumer API。0.10.2.2 修复了一个可能导致 Producer 性能降低的 Bug。
    0.11.0.0
    • 一个是提供幂等性 Producer API 以及事务(Transaction) API;另一个是对Kafka 消息格式做了重构
    • 如果要是用0.11版本,至少将你的环境升级到0.11.0.3,因为这个版本的消息引擎功能已经非常完善了
    1.0、2.0
    • 主要还是 Kafka Streams的各种改进,在消息引擎方面并未引入太多的重大功能特性
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值