使用场景

大数据:数据量和速率激增,数据类型越来越复杂

应用开发:消息引擎,应用解耦,分布式存储,流处理

Kafka的体系结构

topic : 主题(消息的逻辑分类)

客户端: 细分为生产者(朝主题发送消息), 消费者(读取主题的消息);

服务端: broker (1 处理客户端发送和提供消费支持  2 消息持久化)

消息架构

1,一个主题可以划分为X个领导分区,分布在Y个的broker上;

2,每个领导分区有Z个副本,跟领导分布区在不同的broker上;(领导分区负责读写,随从分区负责复制领导分区的数据)

3,每个领导分区有A条消息,从0开始,依次增加;

概念从小到大:

生产者 -》消息-》分区-》主题->broker (分区内部的offset)

消费者组-》消费者-》主题(消费者的offset)

持久化数据和回收数据

记录在日志文件里,按照顺序写的方式,io效率比较高;

日志文件是分段的 log segment , 当当前段用完,会分配新的日志段,然后有定时任务会定期回收可以回收的log segment ;

消费消息

如何防止消息被重复消费?

消费组:不同的消费者实体分配了不一样的分区。 一个分区对应了唯一的一个消费者。所以不会出现消息重复。

可靠性和性能

高可用

broker部署在不同的机器上;

备份机制,以分区为单位保存副本,副本分为leader rep, follower rep ;  分布在不同的broker上;

leader rep : 跟客户端交互,生产和消费消息;

follower rep: 复制leader的 rep 数据;

扩展性

分区: 一个主题分为多个分区,分区分布在不同的broker上,方便进行扩展。

高性能

消费高性能:消费组的消费者分配得到不同的分区,并行消费,并且增加或者减少消费者会自动rebalance,即重新分配分区;

生产高性能:分区在不同的broker,可以并发的写消息;

原创不易,点赞关注支持一下吧!转载请注明出处,让我们互通有无,共同进步,欢迎沟通交流。

我会持续分享Java软件编程知识和程序员发展职业之路,欢迎关注,我整理了这些年编程学习的各种资源,关注公众号‘李福春持续输出’,发送'学习资料'分享给你!

最新文章

  1. PostgreSQL用户角色及其属性介绍
  2. mysql 查看正在运行的进程
  3. 给 IIS Express 配置虚拟目录
  4. kettle查询出来的真实值被识别为null
  5. Apache Mina开发手冊之四
  6. 微信bug:建议了解,不要实验,不要手贱,不要。。。。
  7. <<Senium2自动化测试>>读书笔记一
  8. usb驱动程序小结(六)
  9. 虚拟机复制问题:如何解决“无法手动启动VMware Tools安装”问题
  10. webpack学习笔记--配置entry
  11. CDC在sql server 2017中无法使用的问题
  12. RAID与其在Linux上的实现
  13. Ubuntu 13.10 安装Terminalx 后更改默认终端设置
  14. linux新增动态库后可执行程序找不到的问题
  15. chrome版本与对应的谷歌驱动(chromedriver)
  16. NSMutableURLRequest Http 请求 同步 异步
  17. 编写一个基于Soap DataModule的三层数据库应用
  18. SpringMVC上传文件的三种方式(转载)
  19. 【dp】New Keyboard
  20. 在java中导出excel

热门文章

  1. shiro框架总结
  2. 网络安全从入门到精通(第一章-2)快速自建web安全测试环境
  3. VMware Tools失效的处理方案
  4. 【Unity游戏开发】跟着马三一起魔改LitJson
  5. MySQL笔记(9)-- 各种锁及实现
  6. 3D画廊
  7. 使用 NLTK 对文本进行清洗,索引工具
  8. coding++:JS/jQuery获取兄弟姐妹等元素
  9. iOS 构建静态库
  10. 基于.NetCore3.1搭建项目系列 —— 使用Swagger导出文档 (番外篇)