当前位置: 首页 > news >正文

消息队列原理篇

 

一、kafka

kafka的架构有producer、zk、broker、consumer4个角色;broker里面放各个partition,各个broker组成一个kafka集群; consumer是以consumer group形式存在。

面试只要topic->partition->message就好,不要到里面的段了。

马消后的wq:其实消息有序性是很好理解的,生产:各个partition的有序是天然保证的,所以只要我们控制某种业务能够都落到同一个parttion上就解决了。 比如我们要的是同一个callid的多次通话结果有序,不需要不同的callid有序,所以只要这个callid作为key,所以kafka同一个key的消息一定是在同一个分区上。kafka会用key进行hash计算是在哪个partition。常识,一个topic可以有多个分区,靠key保证同业务落同分区,因此topic的命名只要标识业务,key的定义就要慎重。消费:要有序必须控制一个分区只分配给一个消费者线程。

 

《在马消名单-活动中间调用用kafka解耦,但活动拉名单可能是排好序的,所以消费的时候怎么保证这个有序》让同一活动的名单放到同一个partition里面,因为同一个partition的消息是有序的,然后消费的时候,一个消费者即一个应用的实例,所以只要消费者组里面只有一个消费者就ok了,这样,这个partition只能是应用启动就绑定好了某个实例专门消费这个partition,也就保证了消费后的数据走到业务逻辑也是有序的。(不太对,保证名单数据落同一个partition是用活动id做key就好)

一句话概括就是,kafka启动的时候,根据zk会broke的leader节点,还会根据topic选举partition的leader节点,然后发送端发送消息时,会持久化到partition的leader节点上,剩下就是zk各个partition副本节点同步leader的数据的事情了。然后消费者客户端接入kafka时,kafka集群的coordinator角色会为消费者的实例绑定好对应的partition,然后一直消费这个partition就好了。

 

1、broker

就理解为kafka的服务器好了,一个broker是一个kafka的实例,broker组合起来就是一个kafka集群了。我自己出现了一个理解误区,zk选举出一个broker作为leader,认为只有这个broker是对外的,其他的从broker只是备份用的,错了,这样的话只是一台机器在用,仅看到了高可用,没有提高并行能力和负载均衡一说,所以真正的理解应该是:leader要分为是broker的leader选举和 partition的leader选举,有两种leader。broker的leader只是为了整体管理集群内的分区和副本状态而已,这个概念不用过度的去理解;而partition的leader就是对外的,不同的partition的leader可能在不同的broker上,这样就是真正一个topic的多个partition同时工作了,看下面文章:

kafka集群leader的作用 kafka集群架构_mob64ca13fe9c58的技术博客_51CTO博客

http://www.jsqmd.com/news/464651/

相关文章:

  • PyCharm连接英伟达4090D GPU服务器实战(本文提供项目代码、英伟达4090D显卡服务器完整环境)
  • SpeedAI、笔灵AI、嘎嘎降AI三款热门工具实测,谁才是性价比之王
  • 10个Kinesalite常见问题解决方案:从安装到数据处理全指南
  • 【Python】算法笔记
  • 率零和去AIGC哪个好用?两款平价降AI工具深度对比
  • 终极指南:如何使用 ncollide 构建 Rust 2D/3D 碰撞检测系统
  • Unity IDE(代码调试编辑器,支持Lua断点)选择Visual Studio还是Rider?(带使用教程详解)
  • Kafka、Flink安装,简单使用
  • 微弱电流信号检测中TIA原理与T型电阻原理图相比,在检测性能、适用场景等有哪些具体区别
  • 如何快速掌握ncollide:Rust 2D/3D碰撞检测库入门指南与常见问题解答
  • 2026年降AI工具红黑榜:踩过雷才知道哪些真好用
  • 79、昇腾系列服务器/昇腾系列推理卡/昇腾系列嵌入式开发板+Dify+one api部署DeepSeek-R1-Distill-Qwen-32BW8A8+RAG本地模型知识库和负载均衡双实例
  • hivesql执行逻辑及顺序
  • 八股文笔记——操作系统
  • 嘎嘎降AI vs 千笔AI vs PaperYY:三款主流降AI工具谁更值得买
  • Python学习笔记1
  • Shell函数-4
  • Pycharm通过代码注释实现代码折叠
  • Shell编程-5
  • 豆包+Kimi降AI指令大全:25条实测有效的提示词分享
  • 安装linux系统
  • 比话降AI使用教程:知网专用降AI工具从入门到精通
  • Linux文件管理
  • 【Gormacs】Gromacs伞形采样原理
  • tomcat优化
  • OpenAI Gym 介绍
  • Linux优化-ssh配置
  • 论文分段降AI效果翻倍?手把手教你正确的段落式降AI技巧
  • ansible初体验
  • Shell编程-2