kafka→分布式消息队列
一、 kafka 简介
1.消息队列
- Message Queue 消息传送系统提供传送服务。消息传送依赖于大量支持 组件,这些组件负责处理连接服务、消息的路由和传送、持久性、安全 性以及日志记录。消息服务器可以使用一个或多个代理实例
- 可以将短时间高并发产生的事务消息存储在消息队列中,从而削平高峰 期的并发事务,改善网站系统的性能
- 合理地使用消息队列,可以有效地抵御促销活动刚开始就开始大量涌入 的订单对系统造成的冲击
- 排序保证:即,满足队列的 FIFO,先入先出策略
- 异步通信:很多场景下,不会立即处理消息,可以在 MQ 中存储 message, 并在某一时刻再进行处理
2. 消息队列分类
- 点对点:消息生产者生产消息发送到 queue 中,然后消息消费者从 queue 中取出并且消费消息。消息被消费以后,queue 中不再有存储,所以消 息消费者不可能消费到已经被消费的消息。Queue 支持存在多个消费者, 但是对一个消息而言,只会有一个消费者可以消费
- 发布/订阅:消息生产者(发布)将消息发布到 topic 中,同时有多个消 息消费者(订阅)消费该消息。和点对点方式不同,发布到 topic 的消 息会被所有订阅者消费
3. kafka 是什么?
- 最初由 LinkedIn 公司开发,使用 Scala 语言编写,之后成为 Apache 项目的一部分。
- 是一个分布式的,可划分的,多订阅者,冗余备份的持久性的服务。
- 同时为发布和订阅提供高吞吐量。每秒可以生产约 25 万消息(50 MB), 每秒处理 55 万消息(110 MB)。
4. kafka 的优点?
- 降低系统组网复杂度。
- 降低编程复杂度,各个子系统不再是相互协商接口,各个子系统类似插
- 口插在插座上,Kafka 承担高速数据总线的作用。
- 分布式系统,易于向外扩展。所有的 producer、broker 和 consumer 都 会有多个,均为分布式的。无需停机即可扩展机器。 可进行持久化操作。将消息持久化到磁盘,可以防止数据丢失。
5. kafka 核心概念
- 消息的发布(publish)称做 producer
- 消息的订阅(subscribe)称做 consumer
- 中间的存储阵列称做 broker
- 多个 broker 协同合作,producer、consumer 和 broker 三者之间通过 zookeeper 来协调请求和转发
- 主题(Topic)
- 由用户定义并配置在 Kafka 服务器
- 用于建立生产者和消息者之间的订阅关系
- 生产者发送消息到指定的 Topic 下,消息者从这个 Topic 下消费消 息
- 消息分区(Partition)
- 一个 Topic 下面会分为很多分区
- 消费者分组(Group)
- 用于归组同类消费者
- 偏移量(Offset)
6. kafka 的应用场景
- 处理活跃的流式数据
- 同时处理在线应用(消息)和离线应用(数据文件,日志)
- 系统中的数据流转
- 要结合 zookeeper 使用
7. 其他消息队列介绍
- RabbitMQ:支持的协议多,非常重量级消息队列,对路由(Routing),负 载均衡(Load balance)或者数据持久化都有很好的支持。
- ZeroMQ:号称最快的消息队列系统,尤其针对大吞吐量的需求场景,擅 长的高级/复杂的队列,但是技术也复杂,并且只提供非持久性的队列。
- ActiveMQ:Apache 下的一个子项,类似 ZeroMQ,能够以代理人和点对点 的技术实现队列。
- Redis:是一个 key-Value 的 NOSql 数据库,但也支持 MQ 功能,数据量 较小,性能优于 RabbitMQ,数据超过 10K 就慢的无法忍受。
8. kafka 版本下载
- http://kafka.apache.org/downloads
- 下载最新版本稳定版的安装包,如下图所示。
二、 kafka 搭建
1.准备工作
前提:zk集群正常启动,有JDK环境
2.安装
(1)上传并解压tar包到 /usr/lcaol
(2)创建要用的目录
(3)修改配置文件
(4)将配置好的kafka传到其他节点
(5)修改node02和node03节点的kafka的配置
(6)node01的bin目录下,运行启动
(7)后台运行kafka,1>/dev/null 2>&1 &是将命令产生的输入和错误,都输入到空设备,什么都不输出
(8)窗口占用,crtl+C停止服务,后台运行,bin目录下执行文件停止
(9)创建一个名为test的topic
(10)查看topic
(11)列出所有的topic
(12)在node01模拟生产者,测试生产消息
(13)在node02模拟消费者,测试消费
(14)node01生产者中输入信息,node02消费者中能收到信息,进行消费
三.核心概念
Producer:消息发布 publish消息
Consumer:消息的订阅,subsribe
Broker:中间的存储阵列
多个broker协同合作,Producer去生产数据,Consumer去消费数据,broker充当一个桥梁的作用,三者之间必须通过zookeeper来协调请求和转发