之前的半年,把一部分业务从MySQL+Java改造成了类HDFS+Spark的形式。
这部分业务,主要是从数据集根据特定的规则进行匹配。规则本身是带有业务标签的。经过一些检验之后,相同标签的数据会进行归并(理解成group by就好)。
经历这一步之后,数据总量从千万级“骤降”到千级。
完成这部分改造后,接下来要做的事情极度偏业务逻辑,从场景上来说大概还要区分国内一套,国际一套。目前依然是使用Java实现。
因为架构选型是我做的,因此我想谈谈为什么。
首先,升级的原因一定是系统有痛点,当时痛在2点:
- 数据库单表基本已经到极限即使走到索性,速度依然快不起来。
- 数据加载到内存之后,单个JVM支撑不了标记和归集的动作(当然,代码烂是很大一部分原因)。大约需要运算几个小时才能跑出结果。如果发现因为规则配置导致结果不符合预期,重跑又是几个小时。
再补充几个点:从描述应该可以看出来,系统具有很明显的OLAP的性质;同时,对于运行速度有很高的要求(5分钟出结果);最后,不太同于一般意义的离线分析系统,规则极度偏业务、易错,且一旦结果不符合预期,可能调整规则重新计算。
基于上面的描述。我选择了把部分存储和计算迁移到大数据框架下。
---华丽的分割线---
发现随便写了写,已经快500字了,那就拆分一下,下一篇继续吧。