首页 > 其他分享 >万字好文:大报文问题实战

万字好文:大报文问题实战

时间:2023-07-07 09:44:12浏览次数:40  
标签:万字 JSF 场景 报文 List 接口 好文 consumer

导读

大报文问题,在京东物流内较少出现,但每次出现往往是大事故,甚至导致上下游多个系统故障。大报文的背后,是不同商家业务体量不同,特别是B端业务的采购及销售出库单,一些头部商家对京东系统支持业务复杂度及容量能力的要求越来越高。因此我们有必要把这个问题重视起来,从组织上根本上解决。

1 认识大报文问题

大报文问题,是指不同的系统通过网络进行数据交互时payload size过大导致的系统可用性下降问题。

对于大报文的产生方,过大的报文在序列化时消耗更多内存和CPU,在传输时(JSF/MQ)可能超过中间件的大小限制导致传输失败;对于大报文的消费方,过大的报文在反序列化时会产生大对象,消耗更多的内存和CPU,容易触发FullGC甚至OOM,而在处理过程中要遍历的内容更多,造成响应变慢,如果涉及数据库操作容易产生大事务、慢SQL,这些容易触发超时,如果客户端有重试机制,会进一步加重大报文消费方负载,严重时导致服务集群整体不可用。

此外,由于大报文与小报文是在一个接口上完成的,使用相同的UMP key,它会导致监控失真,报警阈值无效。如果日志记录了原始报文,也可能磁盘打满和响应变慢。

在京东物流技术体系内,具体表现为:

大报文场景 后果
MQ的producer发送了大的Message 由于JMQ对消息大小的限制,导致producer发送失败:消息未送达
MQ consumer反序列化Message并处理计算时产生大对象,频繁FullGC,CPU使用率飙升
JSF Consumer调用API时传入大入参值 由于JSF Server对payload大小限制,导致服务端将报文抛弃:无法送达
JSF Provider响应变慢,产生大对象,频繁FullGC,CPU使用率飙升,甚至OOM;请求处理超时
JSF Provider返回值包含大对象 由于JSF Consumer对payload大小限制,导致consumer无法获取响应
JSF Consumer产生大对象,频繁FullGC,CPU使用率飙升,甚至OOM

标签:万字,JSF,场景,报文,List,接口,好文,consumer
From: https://www.cnblogs.com/Jcloud/p/17533956.html

相关文章

  • 阿里架构师万字总结:Mybatis插件实现原理,Mybatis就要这么用
     mybatis中的插件,也就是拦截器interceptor,也挺有意思的。它的简单使用,就直接拿文档中的示例来简单说下一、使用使用方式很简单Copy//使用这个注解,表明这是一个拦截器@Intercepts(//方法签名{@Signature(//被拦截方法所在的类type=Executor.class......
  • 肝货!万字长文助你上手DDD
    导语最近看了一本书《解构-领域驱动设计》,书中提出了领域驱动设计统一过程(DDDRUP),它指明了实践DDD的具体步骤,并很好地串联了各种概念、模式和思想。因此,我对书本内容做了梳理、简化,融入自己的理解,并结合之前阅读的书籍以及实践经验,最终形成这篇文章。希望可以帮助大伙理顺DDD的各种......
  • 肝货!万字长文助你上手DDD
    导语最近看了一本书《解构-领域驱动设计》,书中提出了领域驱动设计统一过程(DDDRUP),它指明了实践DDD的具体步骤,并很好地串联了各种概念、模式和思想。因此,我对书本内容做了梳理、简化,融入自己的理解,并结合之前阅读的书籍以及实践经验,最终形成这篇文章。希望可以帮助大伙理顺DDD的各种......
  • 肝货!万字长文助你上手DDD
    导语最近看了一本书《解构-领域驱动设计》,书中提出了领域驱动设计统一过程(DDDRUP),它指明了实践DDD的具体步骤,并很好地串联了各种概念、模式和思想。因此,我对书本内容做了梳理、简化,融入自己的理解,并结合之前阅读的书籍以及实践经验,最终形成这篇文章。希望可以帮助大伙理顺DDD的各种......
  • 万字长文解析最常见的数据库恢复算法: ARIES
    万字长文解析最常见的数据库恢复算法:ARIES首发地址:https://mp.weixin.qq.com/s/Kc13g8OHK1h_f7eMlnl4AwIntroduction上图中为基于WAL的数据库的一种可能的架构情况。其中,In-MemoryData为数据库数据在内存中的组织形式,可以是B树,也可以是hashtable或者其他可能的......
  • Labview 与汇川AM400 AM600 AM800 AC800 PLC 通讯 官方协议,报文读取,安全稳定
    Labview与汇川AM400AM600AM800AC800PLC通讯官方协议,报文读取,安全稳定。程序代开发,代写程序。通讯配置,辅助测试。无程序网络通讯实现。常用功能一网打尽。1.命令帧读写。2.支持I16I32Float批量读写。3.支持字符串读写。4.支持Bool批量读写。5.支持Q单点读写。......
  • IPv4数据报文
    一、介绍     ......
  • 如何求解网络报文中的checksum?
    最近在学习计算机网络,在运输层和网络层部分存在各种协议TCP、UDP、IP、ICMP等等,而在这些报文中都存在一个公共的字段——检验和(checksum)。接下来,我将从什么是检验和、检验和怎么算、检验和计算示例、python代码计算检验和这几个部分详细介绍。什么是检验和?检验和是存在于各种报文......
  • 好家伙66万字,又一份牛逼的Android笔记面世了
    前言很久以前,凭借四大组件、Java基础等知识,便可开开心心的开发,轻松地上岗。而随着Android的不断发展完善,各种组件库越来越成熟,学习资料越来越多,我们却慢慢地看不到方向。信息爆炸的时代,到底该如何提升自己?如何才能找到真正利己的信息?如何才能看清前路的方向?为此我专门找了一份《And......
  • Android面试题:Handler、Binder、AMS、WMS面试必问题(带答案,万字总结,精心打磨,快收藏)
    前言业内一直有一个说法:技术好的未必底层够硬,但底层扎实的学起来进步如飞。这也是为什么如今的大厂都非常注重对底层原理的考察:除了可以看出面试者的即战力,底层原理更能看出一个开发者的发展潜力。大家对此应该也深有感受,在面试的过程中,底层原理是无论如何都躲不过去的一关。最典型......