Kafka基本概念

消息队列常见场景

  • 系统解耦:重要操作完成后,发送消息到Kafka中,由别的服务系统来消费消息完成其他操作(将非核心业务拆分出去缩短核心业务的处理流程和时间)

  • 流量削峰:一般用于秒杀或抢购活动中,缓冲系统短时间内高流量带来的压力(防止瞬间流量打崩系统)

使用消息队列实现令牌桶进行流量控制

  • 异步处理:通过异步处理机制,可以把一个消息放入队列中,但不立即处理它,在需要的时候再进行处理===》比如一个消息需要传递给多个服务,这时候可以用Kafka进行分发
    秒杀系统中消息队列解耦应用这样可以更快返回结果减少步骤之间的并发

消息队列的选择

吞吐量:Kafka和RocketMQ (收集日志、监控信息等大量数据)
金融类业务:RocketMQ(稳定安全、分布式部署)
轻量级:RabbitMQ(轻量级开箱即用),在生产者和队列之间增加了Exchange模块
其他因素:Kafka社区活跃,企业使用技术栈

Kafka的架构

Kafka大致分为三层:Producer(生产者),Server(中转者),Consumer(消费者),生产者发送消息,服务端负责存储消息,消费者负责拉取消息,其中服务端其实就是有由多个Broker节点组成,主题就是在Broker节点上,Topic是个逻辑概念,实际存储是Partion主题分片
Kafka的架构

  • Producer:消息的产生者
  • Broker:Broker 是 kafka 实例,每个服务器上有一个或多个 kafka 的实例,简单的理解就是一台 kafka 服务器,kafka cluster表示集群的意思
  • Topic:消息的主题,可以理解为消息队列,kafka的数据就保存在topic。在每个 broker 上都可以创建多个 topic 。
  • Partition:Topic的分区,每个 topic 可以有多个分区,分区的作用是做负载,提高 kafka 的吞吐量。同一个 topic 在不同的分区的数据是不重复的,partition 的表现形式就是一个一个的文件夹!
  • Replication:每一个分区都有多个副本,副本的作用是做备胎,主分区(Leader)会将数据同步到从分区(Follower)。当主分区(Leader)故障的时候会选择一个(Follower)上位,成为 Leader。在kafka中默认副本的最大数量是10个,且副本的数量不能大于Broker的数量,follower和leader绝对是在不同的机器,同一机器对同一个分区也只可能存放一个副本
  • Consumer:消息的消费方
  • Consumer Group:我们可以将多个消费组组成一个消费者组,在 kafka 的设计中同一个分区的数据只能被消费者组中的某一个消费者消费。同一个消费者组的消费者可以消费同一个topic的不同分区的数据,这也是为了提高kafka的吞吐量!
  • Zookeeper:kafka 集群依赖 zookeeper 来保存集群的的元信息,来保证系统的可用性
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值