kafka
1.Kafka介绍
问题:随着后端流程越来越多,每步流程都需要额外的耗费很多时间,从而会导致用户更长的等待延迟。
2.2 用户注册的并行执行
2.3 用户注册的最终一致
3.kafka与传统消息系统的区别
3.1在架构模型方面
RabbitMQ遵循AMQP协议,RabbitMQ的broker由Exchange,Binding,queue组成,其中exchange和binding组成了消息的路由键;客户端Producer通过连接channel和server进行通信,Consumer从queue获取消息进行消费(长连接,queue有消息会推送到consumer端,consumer循环从输入流读取数据)。rabbitMQ以broker为中心;有消息的确认机制。
kafka遵从一般的MQ结构,producer,broker,consumer,以consumer为中心,消息的消费信息保存的客户端consumer上,consumer根据消费的点,从broker上批量pull数据;无消息确认机制。
3.2在吞吐量
kafka具有高的吞吐量,内部采用消息的批量处理,zero-copy机制,数据的存储和获取是本地磁盘顺序批量操作,具有O(1)的复杂度,消息处理的效率很高。
rabbitMQ在吞吐量方面稍逊于kafka,他们的出发点不一样,rabbitMQ支持对消息的可靠的传递,支持事务,不支持批量的操作;基于存储的可靠性的要求存储可以采用内存或者硬盘。
3.3在可用性方面
rabbitMQ支持miror的queue,主queue失效,miror queue接管。
kafka的broker支持主备模式。
3.4在集群负载均衡方面
kafka采用zookeeper对集群中的broker、consumer进行管理,可以注册topic到zookeeper上;通过zookeeper的协调机制,producer保存对应topic的broker信息,可以随机或者轮询发送到broker上;并且producer可以基于语义指定分片,消息发送到broker的某分片上。
4.kafka的架构模型
基于producer consumer topic broker 等的一个基本架构
segment
1、 每个segment中存储多条消息,消息id由其逻辑位置决定,即从消息id可直接定位到消息的存储位置,避免id到位置的额外映射。
2、当某个segment上的消息条数达到配置值或消息发布时间超过阈值时,segment上的消息会被flush到磁盘,只有flush到磁盘上的消息订阅者才能订阅到
3、segment达到一定的大小(可以通过配置文件设定,默认1G)后将不会再往该segment写数据,broker会创建新的segment。
offset
offset是每条消息的偏移量。
segment日志文件中保存了一系列”log entries”(日志条目),每个log entry格式为”4个字节的数字N表示消息的长度” + “N个字节的消息内容”;
每个日志文件都有一个offset来唯一的标记一条消息,offset的值为8个字节的数字,表示此消息在此partition中所处的起始位置.
每个partition在物理存储层面,有多个log file组成(称为segment).
segmentfile的命名为”最小offset”.log.例如”00000000000.log”;其中”最小offset”表示此segment中起始消息的offset.
5.kafka的安装
5.1三台机器安装zookeeper
注意:安装zookeeper之前一定要确保三台机器时钟同步
/1 * * * /usr/sbin/ntpdate us.pool.ntp.org;
三台机器配置文件修改
node01 机器myid内容为1
node02机器myid内容为
node03机器myid内容为3
三台机器启动zookeeper
5.2 三台机器安装kafka集群
5.2.1 下载kafka安装压缩包
http://archive.apache.org/dist/kafka/
5.2.2 上传压缩包并解压
这里统一使用 kafka_2.11-1.0.0.tgz 这个版本
5.2.3 修改kafka配置文件
- 第一台机器修改kafka配置文件server.properties
- 第二台机器修改kafka配置文件server.properties
- 第三台机器修改kafka配置文件server.properties
5.2.4启动kafka集群
三台机器启动kafka服务
6.kafka的命令行的管理使用
- 创建topic
- 模拟生产者
- 模拟消费者
7.kafka的API
- 第一步:导入kafka的开发jar包
- Kafka生产者
声明:本站部分文章及图片源自用户投稿,如本站任何资料有侵权请您尽早请联系jinwei@zod.com.cn进行处理,非常感谢!