ICode9

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

kafaka高效吞吐量-生产端,服务端,消费端

2021-11-08 15:00:24  阅读:124  来源: 互联网

标签:缓存 队列 kafaka 吞吐量 线程 IO 拷贝 cpu 服务端


image-20211108120522828

  • 零拷贝:sendfile

生产端

生产端:消息压缩,缓存批量发送,异步解耦

多线程并发:防止某一个业务阻塞等待

image-2021110820726929

接收消息缓存

image-20211108121338496

BufferPool设计:不释放

image-20211108121922071

服务端

Reactor模型,顺序写,页缓存,零拷贝

  • Reactor:

    • 连接线程(main线程)
    • 线程处理线程
    • 放置在请求队列中
    • 线程池中的线程去出去请求队列中的Request对象 进行消费(处理)
    • 响应也不是直接发送给客户端(而是放在Response队列):防止高并发时,线程工作过于饱和,而导致延迟
  • 顺序写:追加写,头部读(日志)

    • 后写
    • 预读
  • 页缓存

    • 缓存当磁盘用,避免频繁读写磁盘
  • 零拷贝:cpu不参加拷贝数据的工作,节省大量cpu周期,减少两次cpu在用户态和内核态的切换

    • 无零拷贝:四次上下文切换,四次拷贝(2次cpu,2次dma)

    image-20211108122751136

    • 零拷贝

image-20211108122956594

消费端

image-20211108123234775

网络IO任务和拉取消息任务的解耦,防止拉取消息时的IO阻塞,提高网络IO任务和拉取消息效率

image-20211108123218366

标签:缓存,队列,kafaka,吞吐量,线程,IO,拷贝,cpu,服务端
来源: https://www.cnblogs.com/matytan/p/15524287.html

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

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

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

ICode9版权所有