kafka

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进行处理,非常感谢!

上一篇 2018年3月13日
下一篇 2018年3月13日

相关推荐