范文健康探索娱乐情感热点
投稿投诉
热点动态
科技财经
情感日志
励志美文
娱乐时尚
游戏搞笑
探索旅游
历史星座
健康养生
美丽育儿
范文作文
教案论文
国学影视

RocketMQ消息存储原理

  消息存储   CommitLog
  1、消息内容和元数据都会存在CommitLog日志文件中 2、消息内容不是定长的 3、单个文件大小默认1G    文件名长度为20位 左边补零 剩余为起始偏移量        比如第一个文件名是 00000000000000000000    起始偏移量为0    文件大小为1G=1073741824    当第一个文件写满了    第二个文件为00000000001073741824    起始偏移量为1073741824 ConsumeQueue(消息消费队列)
  主要是为了提高消息消费的性能
  消费者通过消息消费队列ConsumeQueue(作为索引) 来查找消费的消息
  消费队列ConsumeQueue(索引)内容
  ConsumeQueue(逻辑消费队列) 作为消费消息的索引 保存了指定Topic下的队列消息在CommitLog中的 起始物理偏移量offset(8个字节) 消息大小size和(4个字节) 消息Tag的HashCode值(8个字节)  每个条目定长20个字节 单个文件有30W个条目 可以像数组一样随机访问每个条目 每个ConsumeQueue文件大约5.72M
  consumequeue文件夹的组织方式 topic/queue/file三层组织结构
  具体存储路径 $HOME/store/consumequeue/{topic}/{queueId}/{fileName} IndexFile(索引文件)
  通过key或时间区间来查询消息 1、存储位置 $HOME storeindex${fileName} 2、文件名 以创建时的时间戳命名的 3、文件大小 单个文件约为400M 可以存储2000W个索引 存储结构
  Broker是混合型存储结构
  单个broker所有队列共用一个日志文件
  索引和数据分离的存储结构
  生产者和消费者使用索引和数据相分离的存储结构
  整体流程
  1、Producer发送消息至Broker端
  2、Broker端使用同步或者异步的方式对消息刷盘持久化
  保存至CommitLog中
  3、Consumer拉取消息
  4、服务端也支持长轮询模式
  Broker允许等待30s的时间
  只要这段时间内有新消息到达
  将直接返回给消费端
  页缓存和内存映射  页缓存(PageCache)是OS对文件的缓存
  用于加速对文件的读写
  程序对文件进行顺序读写的速度几乎接近于内存的读写速度
  主要原因就是由于OS使用PageCache机制对读写访问操作进行了性能优化
  将一部分的内存用作PageCache
  对于数据的写入
  OS会先写入至Cache内
  随后通过异步的方式由pdflush内核线程将Cache内的数据刷盘至物理磁盘上
  对于数据的读取 如果一次读取文件时出现未命中PageCache的情况 OS从物理磁盘上访问读取文件的同时 会顺序对其他相邻块的数据文件进行预读取
  消费队列的读性能几乎接近读内存的原因
  在消息堆积的情况下也不会影响性能 存储的数据较少 page cache机制预读取 顺序读取
  消息存储的日志数据文件CommitLog的读取会严重影响性能
  读取消息内容会产生较多的随机访问读取
  如何提升随机读性能 在块存储采用SSD的话  选择合适的系统IO调度算法  比如Deadline算法 随机读的性能会有所提升 文件的读写操作传统的IO方式
  传统的IO方式
  用户态空间的进程要读写磁盘文件
  需要经过内核空间
  用户进程访问内核空间的缓存
  如果没有的话 则读取磁盘文件
  用户进程写入文件 先写入内核空间的socket缓存
  再通过网卡写入到磁盘
  经过2次DMA拷贝+2次CPU拷贝
  4次上下文切换
  RocketMQ mmap+write
  1、页缓存是对磁盘数据的缓存 2、用户先读取页缓存  如果没有数据则读取磁盘 根据局部性原理 将相邻磁盘块读入页缓存 3、用户将数据写入页缓存 异步线程将小的写入操作合并成大的写入 然后刷入磁盘 4、顺序写入磁盘 磁头几乎不用换道  5、异步刷盘 容易丢失数据 a、可以同步刷盘 但性能低 b、一般采用多副本机制保证消息的可靠 6、数据追加到日志文件的尾部 老的消息无法更改
  mmap利用内存映射文件来避免拷贝
  用户空间可以通过映射地址加偏移量的方式直接操作内核空间的页缓存 避免了内核态再拷贝到用户态
  rocketmq采用mmap+write方式实现文件读写操作
  产生2次DMA拷贝+1次CPU拷贝 4次上下文切换 通过内存映射减少了一次CPU拷贝 可以减少内存使用 适合大文件的传输 对比Kafafa sendfile
  sendfile
  1、用户进程通过sendfile()方法向操作系统发起调用上下文从用户态转向内核态 2、DMA控制器把数据从硬盘中拷贝到读缓冲区 3、CPU将读缓冲区中数据拷贝到socket缓冲区    DMA控制器把数据从socket缓冲区拷贝到网卡    上下文从内核态切换回用户态    sendfile调用返回  2次用户态和内核态的上下文切换 3次拷贝  sendfile方法IO数据对用户空间完全不可见 所以只能适用于完全不需要用户空间处理的情况 比如静态文件服务器
  sendfile+DMA gather
  1、用户进程通过sendfile()方法向操作系统发起调用
  上下文从用户态转向内核态
  2、DMA控制器利用scatter把数据从硬盘中拷贝到读缓冲区离散存储
  3、CPU把读缓冲区中的文件描述符和数据长度发送到socket缓冲区
  4、DMA控制器根据文件描述符和数据长度
  使用scatter/gather把数据从内核缓冲区拷贝到网卡
  5、sendfile()调用返回,上下文从内核态切换回用户态
  DMA gather和sendfile一样数据对用户空间不可见
  而且需要硬件支持
  同时输入文件描述符只能是文件
  但是过程中完全没有CPU拷贝过程
  极大提升了性能
  产生2次DMA拷贝
  没有CPU拷贝
  而且也只有2次上下文切换

一个人最好的活法对自己了解,对他人理解,对世界和解题记解开一个结,就是度过一个劫。季羡林老先生曾说过这样一句话人这一生烦恼的根源,就在于不能处理好这三种关系,即人与自我的关系,人与人的关系,人与世界的关系。深以为然。人一生,就是不想要的生活槿花篱落竹丝长,垂垂山果挂青黄哪一句诗词最能描述你想要的生活?不知从什么时候开始,忧虑悄悄溜进了心灵,一点点,像小草似的滋生,慢慢地就碧草连天了。我在忧虑什么?我想要什么样的生活?我扪心自问。现代社会,我们需要生活不易生活不易的句子11生也容易,活也容易,生活不容易。2人生有太多的不如意,我们要学会去努力。3快乐是一天,不快乐也是一天,为什么不天天快了呢?4路是一步一步的走出来的,只有脚踏实地的我受过凌迟大刑,是你走后一遍遍想你文案没人会在意你累不累真正的在意你的是到底行不行城南有旧事,城北有信使。林深时见鹿,海蓝时见鲸,梦醒时见你。可我,树深时雾起,海深时浪涌,梦醒时夜续。不见鹿,不见鲸,也不见你一别两宽,学会独处,享受孤独一孤独是一种圆满的状态。事业受挫亲人分离恋人分手后出现的感觉是孤独吗?不是,那只是悲伤和寂寞。一直以来,我都认为孤独和寂寞是相同的,看了蒋勋的孤独六讲后才恍然大悟,两者之间的差异是狗尾巴草一无忧狗尾巴草的花语艰难的爱坚强暗恋不被人理解的爱狗尾巴草的快乐是简单的,它们在春天不管不顾的钻出地面,旁若无人疯狂的茂盛,然后悄悄地默默的干枯。它们没有那么多的矫情,迷于混沌中是一种幸带娃踩过的坑那些带娃踩过的坑对于很多第一次当爸爸妈妈的父母们来说,带娃始终是一件孰能生巧的事情,很多时候是要经历过一些错误之后,才会意识到怎样带娃才是正确的操作。但是,除了自己和孩子一起摸爬滚聊聊我家娃你家娃是报恩的还是报仇的?在那个思想还很封建的农村,没生儿子都被别人叫绝户,在村里是抬不起头的,也经常被儿子多的人家欺负,吵架都吵不赢。90年代末,计划生育还很严格,提倡一对夫妇只来自一个新手宝爸的劝告我家的育儿经你是否还在为突如其来的惊喜而高兴的不知所措。那我作为一个新手宝爸我觉得我还是很有发言权的,希望可以通过自己的分享来缓解新手宝爸宝妈的焦虑。俗话说十月怀胎,一朝分娩,看起做人靠人品,相处靠真诚活着,为人一场,没什么,没有性格是不可能的,缺少什么,不能缺少真诚。只有靠性格做人,才能留好名,只有真诚待人,才能得到真情。什么是性格?性格是做人的基础,性格是做人的修养。性格体现我来说句公道话鲁先生有错,男童家庭有罪南京掌掴男童事件事出有因,如果我们一味地指责,那是我们的不对,我们需要了解事情的真相以及来龙去脉,那么你的观点也许会有所改变。一事情的起因事情的起因并不复杂,两个幼儿园的小朋友抢夺
40岁王宝强大变样,戴金丝边眼镜温文尔雅,眼神里有了久违的沉淀最近,一则新闻让番茄君吃了一惊。许久未露面的王宝强,突然冒出的一张自拍引起了轩然大波。照片中,王宝强与大家心目中对他外貌的印象截然不同。他戴着眼镜,文质彬彬,短发精干,皮肤白皙,面NBA扩编?美媒曝詹姆斯梅威瑟欲新建球队加盟NBA近日,据台媒TVBS报道,NBA要扩编球队的风声不断,尽管联盟主席亚当肖华曾亲自向外辟谣。但是前世界拳王德拉霍亚,还是在近日向拳王梅威瑟喊话,期盼两人能合伙在拉斯维加斯成立新球队。两极分化严重!郭明錤称安卓需求疲软,苹果却追加零部件订单据悉,全球最大砷化镓半导体代工厂商中国台湾地区生产商稳懋最近公布出来的业绩表现比较惨淡,具体表现为今年第二季度营业收入比去年第二季度同比下降了14,比今年第一季度也下降了5等,而科交互再思考,逆向重思考聊一聊海外爆火的Nothingphone1作为一部现象级的产品,凭借独树一帜的外观,NothingPhone1可谓是掀翻了热度,裴老板可谓是通过这样一件产品打响了自己特立独行的招牌。当然,前期铺天盖地的宣传,过度张扬的外观王军霞96年获得奥运金牌,远赴美国拿下绿卡,曾被二婚丈夫要挟王军霞,一个被誉为东方神鹿的中国运动员。甚至可以这么说,在中国田径史上,王军霞的地位之高是当之无愧的,是绝对引领过一个时代的运动巨星。1996年,王军霞获得了亚特兰大奥运会的长跑冠中国体操冠军入籍美国,骗走中国几十亿后,躲在美国装病不回来说到吴冰这个名字,不知道大家熟悉不熟悉。曾经,她是我们国家的民族体操和女子单人花样滑冰的双料全国冠军。拿了金牌后,她心里又有了想法,想多赚点钱,于是想都没想就退役了,就这样结束了自上半年手机销量排行OPPO再次夺冠,荣耀屈居第二,谁是第三名?调研机构CINNNOResearch发表最新数据,公布2022年上半年中国智能手机销量排行,总出货量约1。34亿部,同比去年下降16。9。在大环境整体表现不佳的前提下,苹果在内销量郭艾伦事件继续发酵!赵继伟也被带崩了,人在西班牙,隔海骂球迷前不久,郭艾伦怒怼俱乐部一事登上热搜。事情的起因是辽宁队在自己的官方社交媒体上发表了一篇文章,是为少年男子篮球选拔赛做宣传的,而图片中也P上了辽宁队几位主力球员与主教练。老实说这个王梦洁有望回归中国女排!蔡斌又遇难题,王唯漪倪非凡只能留一个距离世锦赛开打还有一个多月的时间,中国女排的备战也进入了倒计时,经过世界女排联赛的考察和磨合,蔡斌指导心目中的主力阵容也初见雏形。不过在自由人位置上,无论是王唯漪还是倪非凡,在世联不要辣眼,要护眼!2022年优质LCD手机,这5款名列前茅您在阅读前请点击上面的关注二字,后续会第一时间为您提供更多有价值的相关内容,感谢您的支持。最近几年手机的屏幕已经由LCD发展到了OLED,采用oled材质的屏幕,色彩会更艳丽,同时数码宝贝新世纪策划这操作使人厌,平民超究极黑奥来袭,太赞了大家好!我是小飉lio,欢迎来阅!数码宝贝新世纪情怀手游最近上线新的超究极体,据上回来的狐狸MM因合成材料都是特殊池里而引争议后,策划这次出的是普通池合成材料的超究极体,只不过这次