Kafka
kafka是一种分布式的,基于发布/订阅的消息系统
使用场景
搜索服务、直播服务、订单服务、支付服务、日志信息、搜索、点赞、评论、收藏等
使用步骤
- 创建集群
- 新增Topic
- 编写生产者逻辑
- 编写消费者逻辑
基本概念
Topic
逻辑队列,不同Topic可以建立不同的Topic
Cluster
物理集群,每个集群中可以建立多个不同的Topic
Producer
生产者,负责将业务消息发送到Topic中
Consumer
消费者,负责消费Topic中的消息
ConsumerGroup
消费者组,不同组Consumer消费进度互不干涉
Offset
消息在Partition内的相对位置信息,可以理解为唯一ID,在partition内部严格递增
Replica
每个分片又多个Replica,Leader Replica将会从ISR中选出
架构
ZooKeeper:负责存储集群元信息,包括分区分配信息等
Producer
批量发送: 批量发送可以减少IO次数,从而加强发送能力
数据压缩: 通过压缩,减少信息大小,目前支持Snappy,Gzip,LZ4,ZSTD压缩算法
BMQ
兼容Kafka协议,存算分离,云原生消息队列
运维操作对比
| 具体操作 | Kafka | BMQ |
|---|---|---|
| 重启 | 需要数据复制,分钟级重启,甚至天级别 | 重启后可直接对外服务,秒级完成 |
| 替换 | 需要数据复制,分钟级替换,甚至天级别 | 替换后可直接对外服务,秒级完成 |
| 扩容 | 需要数据复制,分钟级扩容,甚至天级别 | 扩容后可直接对外服务,秒级完成 |
| 缩容 | 需要数据复制,分钟级缩容,甚至天级别 | 缩容后可直接对外服务,秒级完成 |
高级特性
泳道消息
开发流程: 开发-->BOE-->PPE-->Prod
BOE:是一套完全独立的线下机房环境
PPE:产品预览环境