kafka 简介、架构、安装

Kafka 简介

kafka 是一个分布式的、可分区的、可复制的消息发布和订阅系统,具有高性能和高吞吐率。

kafka 消息队列的特点如下:

1.消费者和生产者模式

2.FIFO先进进出的有序性

3.分布式

4.高吞吐率

5.消息被处理的状态是在 consumer 端维护的,而不是由 server 进行维护的。所以,失败的时候,还可以自动平衡。

理解上面的特点:

1.生产者和消费者,在 kafka 中只要是谁生产数据,谁就是生产者。谁要是消费数据,谁就是消费者。

2.先进先出(比如排队,先来的来办事情)。

3.分布式的,前面学到的 flume 也是分布式的,每个组件都可以扩展。kafka 所有的组件:broker(服务段集群)、producer(生产者集群)、concumer(消费者集群)都是分布式的。所以 kafka 的扩展性好、可靠性高。可以做到负载均衡和副本冗余。看下图:

4.高吞吐率。上面说到 kafka 的每个节点都可以分布式,所以他可以为消息的分布和订阅提供高吞吐量,单节点支持上千个客户端,百兆每秒的网络IO。

5.消息的状态在 consumer 端进行维护,保存在 zookeeper 中,但是老师提了一下保存在 kafaka 中。

6.持久化:持久化到磁盘而且性能好!kafak 本身采用零拷贝技术,不受速度的限制。

Kafka 消息队列常用场景

1.系统间的解耦。

2.峰值压力缓冲。

3.异步(并行)通信。

4.一些常规的消息系统。

Kafka 架构

producer(生产者),自己决定自己往哪一个 partition 写数据,这里的策略可以是轮询、hash 。

consumer(消费者),自己保存消费的消息的 offset ,消费者会按照顺序消费消息,也就是说 offset 按照线性向前驱动。可以认为 offset 是 partition 中 Message 的 id。

broker:Kafka集群的server服务。负责处理消息的读、写请求,存储消息。

topic:一个Topic可以认为是一类消息,每个topic将被分成多个partition(区),每个partition在存储层面是append log文件。任何发布到此partition的消息都会被直接追加到log文件的尾部,每条消息在文件中的位置称为offset(偏移量),offset为一个long型数字,它是唯一标记一条消息。它唯一的标记一条消息。kafka并没有提供其他额外的索引机制来存储offset,因为在kafka中几乎不允许对消息进行“随机读写”。

一个topic分成多个partition。 每个partition内部消息强有序,其中每个消息都有一个序号叫offset。一个partition之对应一个broker,一个broker可以有多个partition。消息不经过内存缓冲,直接写入文件。根据时间策略删除,而不是消费完就删除

partitions的设计目的有多个.最根本原因是kafka基于文件存储.通过分区,可以将日志内容分散到多个server上,来避免文件尺寸达到单机磁盘的上限,每个partiton都会被当前server(kafka实例)保存;可以将一个topic切分多任意多个partitions,来消息保存/消费的效率.此外越多的partitions意味着可以容纳更多的consumer,有效提升并发消费的能力。

安装部署

1.选择2.10版本的kafka,因为scala2.10版本的兼容性比较好。

2.config/server.properties配置broker.id从0开始,后面其他节点配置1,2,3,4等等。

3.事先启动zookeeper集群,这里配置zookeeper集群的地址。

4.启动:

可以把上述命令写到一个脚本中,vim start-kafka.sh ,之后启动只需要运行脚本即可。

5.把配置好的安装包,分发到其他节点上。注意修改 broker.id

kafka 简介、架构、安装部署

如果对您有帮助,欢迎点赞、关注、转发。

  • 发表于:
  • 原文链接https://kuaibao.qq.com/s/20181126G1R61D00?refer=cp_1026
  • 腾讯「云+社区」是腾讯内容开放平台帐号(企鹅号)传播渠道之一,根据《腾讯内容开放平台服务协议》转载发布内容。
  • 如有侵权,请联系 yunjia_community@tencent.com 删除。

扫码关注云+社区

领取腾讯云代金券