标签:缓存 队列 kafaka 吞吐量 线程 IO 拷贝 cpu 服务端
- 零拷贝:sendfile
生产端
生产端:消息压缩,缓存批量发送,异步解耦
多线程并发:防止某一个业务阻塞等待
接收消息缓存
BufferPool设计:不释放
服务端
Reactor模型,顺序写,页缓存,零拷贝
-
Reactor:
- 连接线程(main线程)
- 线程处理线程
- 放置在请求队列中
- 线程池中的线程去出去请求队列中的Request对象 进行消费(处理)
- 响应也不是直接发送给客户端(而是放在Response队列):防止高并发时,线程工作过于饱和,而导致延迟
-
顺序写:追加写,头部读(日志)
- 后写
- 预读
-
页缓存
- 缓存当磁盘用,避免频繁读写磁盘
-
零拷贝:cpu不参加拷贝数据的工作,节省大量cpu周期,减少两次cpu在用户态和内核态的切换
- 无零拷贝:四次上下文切换,四次拷贝(2次cpu,2次dma)
- 零拷贝
消费端
网络IO任务和拉取消息任务的解耦,防止拉取消息时的IO阻塞,提高网络IO任务和拉取消息效率
标签:缓存,队列,kafaka,吞吐量,线程,IO,拷贝,cpu,服务端 来源: https://www.cnblogs.com/matytan/p/15524287.html
本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享; 2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关; 3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关; 4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除; 5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。