专栏电商日志财经减肥爱情
投稿投诉
爱情常识
搭配分娩
减肥两性
孕期塑形
财经教案
论文美文
日志体育
养生学堂
电商科学
头戴业界
专栏星座
用品音乐

Netty遇到TCP发送缓冲区满了写半包操作该如何处理

  什么是写半包
  写半包:一份数据,一次发送没有把他全部发送,需要循环发送,那么第一次的操作称为写半包
  什么情况下会出现写半包:
  发送方发送200byte,但是接收方只能接受100byte,因此发送方只会发送小于100byte的数据。
  说到这里,机智的小伙伴已经想到了这跟TCP滑动窗口和消息中间件中常见的消息堆积是一个道理。
  总的来说:接收方顶不住来自发送方的数据压力。
  对于Netty来说就是,这个时刻TCP发送缓冲区满了,无法再接收整包数据,剩下的数据则会通过Channel去监听写操作,当触发写操作的时候,再把这部分数据给带上,那么这部分数据才完整地传输。Netty中的写半包处理
  前提知识:Netty中的网络数据读写,都先经过ByteBuf
  读操作:从ByteBuf中读取数据写操作:将数据写入到ByteBuf,然后再通过其他方式把ByteBuf的数据写入(doWrite)
  Netty中的网路操作都是通过Channel和里面聚合的对象Unsafe对象进行操作,简单介绍一下。Channel
  Channel的作用:给Netty用来进行网络网络
  JDK也有自己原生的Channel,但是为了方便框架扩展使用,Netty采用的是封装了一层Facade(门面模式)。
  最重要的是能够支持Netty的自定义Channel来应对不同的业务场景。
  Channel会被注册到EventLoop上,在注册的时候定义好感兴趣的事件,他采用的是基于事件触发的方式,当Channel上触发相对应的事件时,就会主动回调通知,然后交给对应的ChannelHandler进行处理。
  由于本篇讲的是写半包,因此不再过多解释。
  总的来说:Channel就是Netty用来处理网络数据流的
  回到本篇的主题:写半包AbstractNioByteChannel
  主要负责处理写半包
  总的流程如图:
  ChannelOutboundBuffer:环形发送数组不停地从ChannelOutboundBuffer读取数据,看是否有可以发送的数据如果有,并且是ByteBuf类型的,可以选择发送数据如果一次发送没有发送完,则采取一定次数的循环发送(写半包)数据最后还是没有发送完,则会开一条新线程专门进行剩余数据的发送在最后会去同步数据写入进度源码解析doWrite
  不停地去环形发送数组里面取数据出来如果是空了,代表发送完了,把写标志位置空(clearOpWrite)
  如果不是空数据,则判断是不是ByteBuf数据对其进行强转,若可读字节数是0,代表消息不可读(reidIndexwriteIndex),则把他在环形发送数组中移除。
  第一次读的时候,会先去获取循环发送次数writeSpinCount。循环发送次数就是指:第一次发送没有完成时(写半包)进行循环发送的次数。
  给他设置一个阈值,为的就是当循环发送的时候,IO线程会一直尝试写操作,此时IO线程无法处理其他操作,相当于局部阻塞、死锁、假死的情况。
  像这种处理手法非常常见,比如一般我们会给分布式锁设置一个锁的超时时间,除此之外还需要设置一个客户端的超时时间,避免客户端在拿到锁的时候,这把锁已经过期了。客户端的超时时间会比锁的超时时间要短。
  然后就是进行循环发送了
  消息发送操作完成时候,会调用ChannelOutboundBuffer更新发送进度的消息,并且还会判断是否需要写半包处理
  如果没有发完,则设置写半包标识位,启动专门的写半包线程继续发后续的消息总结
  写半包问题本质上是:对于接收方来说,来自发送方的数据压力太大了,因此不得不采取的一种降保护措施
  可以在发送方进行解决、也可以在接收方进行解决
  Netty并没有采取说,遇到TCP缓冲区满了之后,这个数据包就等下一次再等发,而是能发多少就发多少,不够的下次再发,是一种追求性能的选择。
  像消息中间件遇到消息堆积问题,在消接收方(消费者)增大消费的速度,比如:加消费队列或扩充消费者群组等。
  又或者限制发送方(生产者)的发送速度,比如TCP的滑动窗口。
  所以互联想的技术都是有相关联的,能看到互相的影子。

清华大学段路明研究组发PRL近日,清华大学交叉信息院段路明研究组在离子阱量子模拟领域取得重要进展,在实验中借助离子量子比特首次实现了大规模杰恩斯卡明斯哈伯德(JaynesCummingsHubbard)模型的中国边陲小县城,东方小瑞士,与蒙古接壤,还有中国最美的火车站头条创作挑战赛唐朝诗人刘禹锡曾言自古逢秋悲寂寥,我言秋日胜春朝!10月,正是阿尔山最迷人的季节,如果你已经见过大半个中国城市的秋天,那么今年内蒙古的阿尔山就是国庆旅游最佳的选择。或近代日本人的中国印象良知泯灭文明停滞和亡国结局头条创作挑战赛众所周知,江户时代(16031868)的日本统治阶层和知识分子们,大多对中华文化怀有崇敬之情。比如德川幕府尊儒学为官学,武士阶层将之尊为基本修养,很多日本学者一直将中夏朝(中国历史朝代)夏朝(约公元前2070年约公元前1600年),是中国史书中记载的第一个世袭制朝代。一般认为夏朝共传14代17后(夏统治者在位称后,去世后称帝),建立者为禹,定都阳城(今河南郑州登封百慕大三角是假的?百慕大三角是一个充满神秘色彩的地方,在世界各地都有发生类似的事件,从百慕大到里约热内卢之间存在着很多神秘事件。人们普遍认为这里是很多神秘事件发生的地方。百慕大三角到底是什么呢?一起1480光年外的未解之谜,挡住塔比星的巨物,是外星人造物?2015年9月14日NASA开普勒望远镜观察到了一件特别诡异的事情在距离人类1480光年的天鹅座有一颗名叫塔比星的恒星发生了一件奇怪的事开普勒望远镜对准它时有两个无法解释的问题1。开展有效网络攻击溯源维护全球网络空间安全9月5日,中国国家计算机病毒应急处理中心和360公司分别发布了关于西北工业大学发现NSA网络攻击调查报告,全面还原了西北工业大学此前长期遭受网络攻击的基本情况。报告披露了美国使用的能源制约着人类的发展,有没有免费的能源?瑟尔机了解一下发展是人类永恒的主题,一个停滞不前或者发展迟缓的文明,最终的结局只有一个,那就是消亡。所谓逆水行舟,不进则退,人类文明的发展正是如此,因为变化是这个世界的本质,而要不断适应变化,就中国科学家人类血栓中首次发现微塑料和染料颗粒直径小于5毫米,甚至小到微纳米级的塑料,被称为微塑料,它们可能是人类健康的隐形杀手。国际学术期刊先进研究杂志近日刊发的一篇论文中提到,南京医科大学夏彦恺教授团队联合中国科学院南京土研究表明狗可以检测到人类压力的气味几千年前被驯化的狗已经进化成对人类行为的高度适应,但一项研究将这一概念带入了新的领域。作者进行了实验,以探索犬类是否能通过其令人难以置信的嗅觉察觉到人的压力水平的增加,结果表明它们中国速度滑冰国家集训队成立李琰继续出任总教练高亭宇缺席今天(9月30日)20222023赛季速度滑冰国家集训队正式组建,共有22名男运动员和12名女运动员,李琰继续出任总教练,处在调整期的北京冬奥会冠军高亭宇不在名单内。速度滑冰国家集
20几岁真的很痛苦,急于求成且一事无成hi,我是不晚,点击上方关注我,每天为你分享成长干货我今年20岁了,还算年轻。今天这篇是我写的第20篇文章了,也算在写作这条路上坚持了一个月吧。文章不公开的时候写的很开心,公开发表分享上个月选股回顾12月12日夜间选的股,有头条截图为证,聊一聊启发一下共勉那次总共选了四只股,新华百货,百合花,伊力特,云南铜业。新华百货这个就牛叉了,连续四板涨停,我居然忘记吹牛皮了呲牙。选股后2022IPO最赚钱中介机构排行榜本文来源时代商学院作者彭晨雨来源时代商学院作者彭晨雨编辑郑少娜2022年,在注册制的深入推进下,哪家中介机构啃下了A股IPO的最大一块蛋糕?据同花顺iFinD数据,2022年,全国被仙女说面膜上了一课面膜只能补水肯定不止我这么认为,昨晚我和他们争论面膜到底能不能拯救熬夜脸,我说绝不可能!有人就拿了张仙女说面膜说要好好给我上一课!她让我记住我那张熬夜脸。敷的时候感觉跟其他面膜没什终于明白高启强为啥对大嫂念念不忘了,看完这个你就知道了这组片子出自2022年时装男士九月刊大嫂原来早就有大嫂风范,可塑性极强且肢体表现力一绝,镜头下尽显酷飒霸气无论是性感穿搭还是复古西装造型统统都能hold得住,尽显高级质感别说高启强回家不知何时,我们把自己划归为城里人,于是,回老家就变成了一个温暖的话题。回老家有很多种感情理由,但有一种情怀不变,就是想回去小时候的家,继续在那个家里被称呼为儿子或女儿,闻着孩童时的小王子我看了四十四次日落一场旅行,是七个星球的流转。小王子犹如透亮的镜子,照出了荒唐的成人世界。字里行间都能击中人心,可能正在指向我们,或者是指向即将成为这样大人的我们。这本书是作者献给从前当过孩子的那个短短的五句话,说透了人性!(精辟)作者拾壹言01序言人活一世,最难的不是赚钱,而是学会说透人性。如果你不会说话,那么可以先去学会闭嘴。因为,说出一句话,要花上很多力气,即使是很小的一件事,也需要花费许多时间来完成。清荷札记阅尽千帆,初心依旧阅尽千帆,初心依旧作者清荷札记时光不语,亲情恒久,犹如人生中意味深长的祈念,让爱静静地待在我的平淡日常中,人生一辈子,都是因果。生活的意味,仿佛能在庸常的光尘中,早已经成为我心中期这世界很喧嚣,做你自己就好云朵也是一种风景,眼泪也是一种品尝。风吹过,浪埋过,岩石依旧在泰戈尔1。总是假装很乖,可我知道,有时候,你也会累2。我明白,颤抖着的指尖是你满腹的心事3。笑一个吧!就当是对自己的奖当你25岁,身边的人都结婚了,你会恐慌吗?头号解忧馆很喜欢这句话有人22岁就开始相夫教子,有人32岁了还在追求梦想,有人为了车房拼了一辈子,而有一些人,买一辆摩托车就走遍大好河山。生活是自己的,千万别为难自己,有什么样的能
友情链接:快好找快生活快百科快传网中准网文好找聚热点快软网