Kafka
- 为什么需要消息队列(MQ)
- 使用消息队列的好处
- (1)解耦
- (2)可恢复性
- (3)缓冲
- (4)灵活性 & 峰值处理能力
- (5)异步通信
- 消息队列的两种模式
- (1)点对点模式
- (2)发布/订阅模式
- Kafka 定义
- Kafka 的特性
- ●高吞吐量、低延迟
- ●可扩展性
- ●持久性、可靠性
- ●容错性
- ●高并发
- kafka架构
- filebeat+kafka数据流向
为什么需要消息队列(MQ)
主要原因是由于在高并发环境下,同步请求来不及处理,请求往往会发生阻塞。
我们使用消息队列,通过异步处理请求,从而缓解系统的压力。消息队列常应用于异步处理,流量削峰,应用解耦,消息通讯等场景。
当前比较常见的 MQ 中间件有 ActiveMQ、RabbitMQ、RocketMQ、Kafka 等。
使用消息队列的好处
(1)解耦
允许你独立的扩展或修改两边的处理过程,只要确保它们遵守同样的接口约束。
(2)可恢复性
系统的一部分组件失效时,不会影响到整个系统。消息队列降低了进程间的耦合度,所以即使一个处理消息的进程挂掉,加入队列中的消息仍然可以在系统恢复后被处理。
(3)缓冲
有助于控制和优化数据流经过系统的速度,解决生产消息和消费消息的处理速度不一致的情况。
(4)灵活性 & 峰值处理能力
在访问量剧增的情况下,应用仍然需要继续发挥作用,但是这样的突发流量并不常见。如果为以能处理这类峰值访问为标准来投入资源随时待命无疑是巨大的浪费。使用消息队列能够使关键组件顶住突发的访问压力,而不会因为突发的超负荷的请求而完全崩溃。
(5)异步通信
很多时候,用户不想也不需要立即处理消息。消息队列提供了异步处理机制,允许用户把一个消息放入队列,但并不立即处理它。想向队列中放入多少消息就放多少,然后在需要的时候再去处理它们。
消息队列的两种模式
(1)点对点模式
(一对一,消费者主动拉取数据,消息收到后消息清除)
(2)发布/订阅模式
(一对多,又叫观察者模式,消费者消费数据之后不会清除消息)
发布/订阅模式是定义对象间一种一对多的依赖关系,使得每当一个对象(目标对象)的状态发生改变,则所有依赖于它的对象(观察者对象)都会得到通知并自动更新。
Kafka 定义
Kafka 是一个分布式的基于发布/订阅模式的消息队列(MQ,Message Queue),主要应用于大数据实时处理领域。
Kafka 的特性
●高吞吐量、低延迟
Kafka 每秒可以处理几十万条消息,它的延迟最低只有几毫秒。每个 topic 可以分多个 Partition,Consumer Group 对 Partition 进行消费操作,提高负载均衡能力和消费能力。
●可扩展性
kafka 集群支持热扩展
●持久性、可靠性
消息被持久化到本地磁盘,并且支持数据备份防止数据丢失
●容错性
允许集群中节点失败(多副本情况下,若副本数量为 n,则允许 n-1 个节点失败)
●高并发
支持数千个客户端同时读写
kafka架构
producer 生产者
副本 leader 领导者 follower 跟随者
consumer 消费者
borkers 服务器
partition 分区
topic 消息主题 或者表 或者键 存放 表和键的数据
replica 副本 有多个副本可以实现高可用 副本中有leader领导者 follwer 跟随者
leader 负责读写
follower 复制备份
kafka消息队列MQ 大数据实时处理 应用解耦 数据缓冲 流量晓峰 异步处理
发布/订阅模式(观察者模式,一对多,消费完不会清楚数据)
每个组只能有一个消费者分区
zookeeper负责监控寻找(offset记录信息)
filebeat+kafka数据流向
filebeat收集各个日志
到kafka
kafka传到logstash
logstash再给es(可以一台或多台)
传给kibana进行展示