《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.带宽
带宽容易产生瓶颈,考虑冗余。
网友评论