ICode9

精准搜索请尝试: 精确搜索
首页 > 其他分享> 文章详细

从Kafka看Broker中间件的设计

2021-11-10 07:02:20  阅读:168  来源: 互联网

标签:收件人 中间件 Broker Kafka 快递 限流 消息 路由


目录


1. 软件设计要求

满足以下功能:

  • 消息模型
    1. Req-Rep模型(http服务器)
    2. Pub-Sub模型(消息队列)
    + push模式:多播/监听队列
    + pull模式:消息存储/序列化
    3. Producer-Consumer模型(Broker缓存)
  • 线程关系
    • 心跳机制
    • 独立线程负责多路复用
    • 数据的包装struct
  • 消息路由
    • topic_routing

wechat: 《吃透 MQ 系列》之扒开 Kafka 的神秘面纱

使用Broker中间件的优势:

  1. 系统解耦

    快递员跟收件人来打比方的话,快递员送货如果都送到每个人手里的话,那么快递员要一个个打电话,收件人收到电话之后,要在家等着快递。快递员跟收件人是紧密耦合在一起的。如果门口保安可以代收快递的话,快递员跟收件人就解耦了,快递员放在门口保安处,收件人去门口保安处领,就可以了,不用必须等着或者必须送到。这种就叫解耦

  2. 异步处理

    还是上面的例子,快递员给收件人打电话,说马上送快递。收件人说不行,要去上班,你放门口老大爷那就行。就是说收件人不用等着送到才进行下一件事,这就叫做异步处理。

  3. 削峰限流

    有一天你买的快递到了,你媳妇、你爸妈买的快递都到了,打电话都让你去取,他们分别在小区的东南西北门都有,半个小时不取的话,就走了。你这个时候会不会手忙脚乱。但是这会你跟他们说:都给我放在南门老大爷那边。这会就是快递员去放到那边,你可以慢慢的取了。这就是削峰限流的意思

这样,一条消息的流转路径就如下图所示,先走主题路由(topic),然后走分区路由(partition),最终决定这条消息该发往哪个分区。

  • 生产消息
    • 批量发送: 由于频繁发送的话,可能会比较占网络,可以在参数设置batch的方式进行发送
    • 消息压缩
    • 高效序列化
    • 内存池复用
  • 存储消息
    • IO多路复用

标签:收件人,中间件,Broker,Kafka,快递,限流,消息,路由
来源: https://www.cnblogs.com/brt2/p/15531779.html

本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享;
2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关;
3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关;
4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除;
5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。

专注分享技术,共同学习,共同进步。侵权联系[81616952@qq.com]

Copyright (C)ICode9.com, All Rights Reserved.

ICode9版权所有