美文网首页
Kafka学习笔记

Kafka学习笔记

作者: Andytl的世界 | 来源:发表于2020-01-13 07:52 被阅读0次

    《kafka快速学习入门与实践》

    第一讲,Kafka术语

    知乎上文章简单解释了为什么要用消息中间件,为了解耦消息(数据)的生产和消费。kafka是分布式消息引擎,提供一套完备的消息发布与订阅解决方案。

    发布订阅的对象是主题(Topic)。

    向主题发布消息的客户端应用程序称为生产者(Producer)。

    订阅这些主题消息的客户端应用程序就被称为消费者(Consumer)。

    一个 Kafka 集群由多个Broker 组成,Broker 负责接收和处理客户端发送过来的请求,以及对消息进行持久化。

    实现高可用的另一个手段就是备份机制(Replication)。备份的思想很简单,就是把相同的数据拷贝到多台机器上,而这些相同的数据拷贝在 Kafka 中被称为副本(Replica)。

    Kafka 定义了两类副本:领导者副本(Leader Replica)和追随者副本(Follower Replica)。前者对外提供服务,这里的对外指的是与客户端程序进行交互;而后者只是被动地追随领导者副本而已,不能与外界进行交互。

    有了副本机制可以保证数据的持久化或消息不丢失,但没有解决伸缩性的问题,通过把数据分割成多份保存在不同的 Broker 上,实现分区(Partitioning)。

    Kafka Broker 是如何持久化数据的。总的来说,Kafka 使用消息日志(Log)来保存数据,一个日志就是磁盘上一个只能追加写(Append-only)消息的物理文件。

    两种消息模型,即点对点模型(Peer to Peer,P2P)和发布订阅模型。这里面的点对点指的是同一条消息只能被下游的一个消费者消费,其他消费者则不能染指。 Kafka 中实现这种 P2P 模型的方法就是引入了消费者组(Consumer Group)。所谓的消费者组,指的是多个消费者实例共同组成一个组来消费一组主题。这组主题中的每个分区都只会被组内的一个消费者实例消费,其他消费者实例不能消费它。

    《Kafka快速入门与实践》

    第二讲,Kafka版本

    Kafka已经不再单纯是消息引擎,有些版本还添加了流处理功能。要了解Kafka的版本,可以类比参考linux的发行版本,CentOS、Ubantu、RedHat等。主流的Kafka版本有,Apache Kafka,Confluent Kafka,CDH Kafka。

    1.Apache Kafka

    最正宗的开源Kafka,其他版本是以这个版本为基础的。社区活跃度很高,问题能及时解决,但只有Kafka的基础功能。

    2.Confluent Kafka

    提供了Apache Kafka没有的高级特性,但使用人数少,资料少。

    3.CDH Kafka

    CDH中封装了Apache Kafka,操作通过UI界面,方便易用。但是封装后对底层缺乏掌控。有滞后性,要跟随CDH版本升级来升级Kafka。

    《Kafka快速入门与实践》

    第三讲,部署规划

    只有单台机器构成的 Kafka 伪集群只能用于日常测试之用,根本无法满足实际的线上生产需求。而真正的线上环境需要仔细地考量各种因素,结合自身的业务需求而制定。

    1.操作系统

    考虑到IO模型,数据传输效率,生产环境使用Linux。Windows一般用来测试。

    2.磁盘

    Kafka对磁盘是顺序读写,规避了机械硬盘随机读写慢的缺点采用机械硬盘就可以满足。Kafka已经有备份机制,磁盘的RAID不重要。

    3.磁盘容量

    需要考虑消息数、留存时间、消息大小、备份数、压缩比

    4.带宽

    带宽容易产生瓶颈,考虑冗余。

    相关文章

      网友评论

          本文标题:Kafka学习笔记

          本文链接:https://www.haomeiwen.com/subject/jvhgactx.html