Kafka

消息队列

可以实现:异步通信、解耦、削峰、发布订阅、可恢复性、顺序排队

异步通信:服务A推送数据到服务B,但不是立刻需要处理,而是达到一定数量后再处理

解耦:无法预测业务的变化,未来业务变更时,修改消息队列即可同步更新

削峰:性能差的应用无法承载突发大流量,消息队列可以控制数据处理速度,解决流量峰值问题

发布订阅:多个生产者/消费者

可恢复性:分布式的消息队列,一个节点挂不会影响全部业务

顺序排队:kafka支持内部顺序保证

Kafka介绍

kafka是一个消息系统,原本开发自LinkedLn,用于其活动流和运营数据处理管道的基础,现已被广泛使用,作为多种类型的数据管道和消息系统。

特点

  1. 以O(1)的方式提供消息的持久化能力,保证常数时间的访问性能。
  2. 支持kafka server间的消息分区,以及分布式消息,同时保证每个partition内的消息顺序传输。
  3. 高吞吐,用廉价的机器实现高性能处理。
  4. 支持离线数据处理和实时数据处理。不过一般不用Kafka处理数据,一般是用Flink
  5. Scale out:支持在线水平扩展

架构

生产者发送数据到kafka

消费者从Kafa获取数据

zookeeper保证kafka内数据的一致性

名字作用
broker一个节点就是一个broker,一个Kafka集群由一个或多个broker组成
producer负责向kafka发送消息 (push)
consumer负责从kafka broker拉取消息 (pull), 多个消费者组成一个consumer group
topic消息的分类,同一个消息属于同一个topic,类似于表
partition在同一个topic上面的消息,分区存储

各个组件之间的关系

producer只会向partition的leader发数据,consumer也只会从对应partition的leader读数据

partition会在每个节点都有副本

topic—>partition—>replica—>segment—>(.log, .index, .timeindex)

zookeeper的作用

  • broker的上线、下线处理
  • 新创建的topic或已有的topic的分区扩容,处理分区副本的分配、leader选举
  • 管理所有副本的状态机和分区的状态机,处理状态机的变化事件
  • topic删除、副本迁移、leader切换等处理
  • 4
    点赞
  • 9
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值