readme.md做网站,宁波seo网络推广代理价格,付费网站怎么制作,网站二级页面设计要求这玩意儿表面看上去挺牛逼#xff0c;但其实背后的逻辑和套路#xff0c;在咱们开发里见过的那些招数#xff0c;都能找到影子。
今天小北和大家一起系统化的梳理梳理一遍#xff0c;让大家功力猛增#xff0c;吊打面试官。
1. 消息存储#xff1a;巧妙利用顺序写
先说…这玩意儿表面看上去挺牛逼但其实背后的逻辑和套路在咱们开发里见过的那些招数都能找到影子。
今天小北和大家一起系统化的梳理梳理一遍让大家功力猛增吊打面试官。
1. 消息存储巧妙利用顺序写
先说说消息存储。RocketMQ这货聪明得很它用了顺序写这个绝招。 啥叫顺序写 简单点讲就是把消息按顺序往磁盘上写省得磁盘脑袋疼。这和随机写比起来效率高出好几条街。顺序写的好处在于磁盘的磁头不用东一头西一头地乱晃直接一路跑下去速度自然快得飞起。 为啥这个重要 因为你要是搞随机写那磁盘就得不断地在不同位置读写时间全花在寻道上了。顺序写不需要来回折腾直接就省下了大把时间让RocketMQ在存储消息的时候跟打了鸡血似的快速写入简直停不下来。 最近无意间获得一份阿里大佬写的刷题笔记一下子打通了我的任督二脉进大厂原来没那么难。这是大佬写的7701页的BAT大佬写的刷题笔记让我offer拿到手软 2. 消息读取多线程并发
再说说读取。你可能会问“为啥读取也这么快”
因为RocketMQ这货是多线程并发搞定的。 它把消息分散到多个队列里然后搞一堆线程来处理谁也不耽误谁。这就跟多人同时搬砖一样一个人搬一块肯定累死累活一群人同时上那砖堆嗖嗖就没了。
但多线程处理也不是说你线程越多越好。这事儿要是没控制好线程多了反而会互相抢资源搞不好还得打架。
RocketMQ在这块儿也动了不少脑筋通过精细化管理线程池保证每个线程都干自己的活互不干扰效率拉满。
3. 数据结构优化减少I/O
RocketMQ里还用了不少数据结构上的小聪明。最重要的就是commitLog这玩意儿是个append-only的结构 啥意思就是消息只往里追加不回头改。 这么干的好处是啥
减少I/O操作写入速度更快。而且你追加写入的时候也不用老是锁住整个文件只需要锁住当前写入的位置就行这样能大大减少锁的竞争提升并发性能。
另外RocketMQ还用上了内存映射文件MappedFile这种骚操作。把磁盘文件映射到内存中操作起来跟直接读写内存差不多虽然底层还是磁盘但从开发者的角度看I/O操作几乎是瞬间完成的这也解释了为啥它的读写速度能跑得那么快。
4. 批量操作减少频繁的网络交互
再来看看它的批量操作。这个其实挺简单的RocketMQ这货并不是每收到一条消息就立马去写磁盘或者发送网络请求它把消息攒到一定数量再统一处理这就叫批量操作。 为啥要这么干 因为频繁的网络交互和磁盘I/O都是时间黑洞一个操作时间长另一边就得等着。这一攒消息就把这些操作给优化了消息不至于像水龙头滴水一样流而是一瓢一瓢地泼。
这个招数也不是谁都能用的有些场景讲究时效性不能等。但RocketMQ通过精确控制批量的大小和延时既保证了性能又不会让消息堆积太久这就叫平衡得当。 最近无意间获得一份阿里大佬写的刷题笔记一下子打通了我的任督二脉进大厂原来没那么难。这是大佬写的7701页的BAT大佬写的刷题笔记让我offer拿到手软 5. 数据复制异步复制和主从架构
最后一招就是数据复制。数据存储里最重要的一个环节就是容灾备份这就要说到RocketMQ的异步复制和主从架构。 异步复制是个啥意思 你写完数据不用等所有备份都完成先让写操作返回备份的事儿咱慢慢来。这样主节点就不至于被拖慢能继续高速处理新的请求。
至于主从架构这货其实就是主节点负责主要的写操作从节点负责读取和备份。通过分工合作读取请求就不会把主节点的资源吃光让系统的整体吞吐量进一步提高。 6. 零拷贝
零拷贝的本质就是减少CPU在数据传输中的干预让数据在内存和磁盘之间流动时不经过用户态。 这是个啥概念呢 平时咱们操作系统要读取一个文件比如从磁盘读到内存然后再发给网络这个过程中数据一般要经过4次拷贝。 如下图 通常会是从磁盘到内核缓冲区再从内核缓冲区拷贝到用户态的应用程序缓冲区最后再从应用程序缓冲区回到内核缓冲区最终发到网络上。
这几趟下来CPU忙得不可开交性能也就损失了一大截。 零拷贝就是把这个中间过程简化到最少。 RocketMQ利用操作系统的零拷贝技术让数据直接从内核缓冲区传到网络上完全跳过了用户态的拷贝。 这么做的好处是啥 减少了不必要的CPU占用同时提高了数据传输的效率。特别是在处理大文件或大量消息时零拷贝的作用尤为明显它能大大降低系统的负载让RocketMQ在高吞吐量场景下依然保持流畅。
总结不止是快更是稳
总的来说RocketMQ能实现每秒上十万QPS的超高吞吐量靠的就是这些个聪明的策略和优化。
它在存储、读取、I/O、网络交互以及数据复制上都动了不少脑筋每一块儿都拿捏得死死的。你别看它搞得玄乎其实就是把咱们开发中遇到的瓶颈一个一个给突破了。
RocketMQ不止是快更重要的是稳。稳到你几乎感觉不到它的存在一切都在后台默默搞定。这也就解释了为啥这么多人爱用它——少折腾效率高。
最后说一句(求关注求赞别白嫖我) 最近无意间获得一份阿里大佬写的刷题笔记一下子打通了我的任督二脉进大厂原来没那么难。 这是大佬写的 7701页的BAT大佬写的刷题笔记让我offer拿到手软 本文已收录于我的技术网站 cxykk.com程序员编程资料站有大厂完整面经工作技术架构师成长之路等经验分享
求一键三连点赞、分享、收藏
点赞对我真的非常重要在线求赞加个关注我会非常感激