37.1、前文回顾
大家应该还记得之前我们有一篇文章,分析了一个实时计算系统因为负载过高导致了非常频繁的Full GC
这里先在下面贴出来之前的内容,大家先看一下回顾回顾,接着我们会给出示例代码,运行起来之后通过jstat来观察其运行中的问题。
然后我还会优化一下JVM参数配置,再次运行系统,通过jstat来观察JVM优化以后的效果。
37.2、揭开日处理上亿数据系统的神秘面纱
这个系统的设计初衷是处理大规模的数据,每天需要处理的数据量达到数亿条记录。简而言之,这个系统的核心功能是从MySQL数据库以及其他数据源中持续抽取大量数据,并将其加载到自身的JVM内存中,以便进行高效的计算处理。
如下图所示。
这个数据计算系统是一个高效且持续运行的系统,它通过SQL语句和其他方法,从各种数据存储中提取数据到内存中进行计算。在生产环境中,每分钟大约需要执行500次数据提取和计算的任务。
由于这是一个分布式系统,因此在生产环境中部署了多台机器以分担负载。每台机器大约每分钟负责执行100次数据提取和计算的任务。
每次任务中,系统会提取大约1万条数据到内存中进行计算。平均来说,每次计算大约需要耗费10秒钟的时间。
每台机器的配置是4核8G,其中JVM内存分配了4G。在JVM内存中,新生代和老年代分别占用了1.5G的内存空间。这样的配置确保了系统的稳定运行和高效计算。
大家看下图。