高并发系列之——MQ消息中间件Kafka
1.前言
1.1 包路径和源码
基于发布订阅的分布式消息系统,使用scala语言编写。
特点:采用分区机制,每个分区可以放到不同的服务器上,提高了吞吐率,同时基于磁盘存储,以及副本机制可以确保不丢失;流计算机制实现实时统计。
1.2 适用场景:TB级以上的数据
淘宝,美团,电影票,订单之类
1.3 数据量
1.4 发送消息手段
单播:当所有的Consumer都归属于一个Consumer Group时,可以指定。
广播:有多个Consumer Group时,则每个Consumer Group中都可以接收到同样的消息。
1.5 认证协议:SASL_PLAINTEXT
2.时序图
一个kafka服务器称作一个broker,多个broker组成一个集群,其中有一个broker为首领。
3.关键配置项
补充:kafka适用于linux环境中,解压并配置环境变量KAFKA_HOME,修改配置项即可使用。
3.1 Zookeeper配置项:zookeeper.properties
3.2 消费者配置项:consumer.properties
3.3 生产者配置项:producer.properties
3.4 Kafka配置项:server.properties
主要配置项
broker.id log.dirs zookeeper.connect
4.生产者实现步骤KafkaProducer
- 读取生产者配置项
- 实例化ProducerConfig,并设置属性
- 实例化KeyedMessage,构造消息
- 实例化Producer,并send消息
5.消费者实现步骤KafkaConsumer
- 读取kafka配置文件中zookeeper链接字符串
- 实例化ConsumerConfig,并设置属性
- 创建Kafka连接器
- 通过topic获取数据流
- 关闭kafka链接
6.扩展
6.1 消息是什么?
一组消息就是一个数据单元,由字节数组成。消息由键值对构成,其中key可以为空。
可以分批次发送消息,格式为json或是xml。
6.2 消息如何存储?
通过主题分类,一个主题有若干分区,先进先出顺序读取。
6.3 用什么维护broker信息?