今年年初这场突如其来的疫情,让我们早晨醒来打开手机的第一件事情,从刷朋友圈变成了刷每日最新的疫情数据。看看国内外新增确诊人数/现存确诊人数,看看国内外疫情分布的地图。各大新闻平台也因为快速上线疫情实时动态板块,成为了大家了解疫情发展的阵地。
其实,在这背后是有着一个海量数据分析的架构平台做支撑。
对于很多企业的管理人员而言,这就是个很熟悉的T+1计算T日的报表场景。管理人员通过报表查看前一天企业的经营情况、库存情况、用户新增/流失情况等,用数据提高决策的准确率,减少误判。
支撑这个典型报表场景的背后,是一整套海量数据计算的大数据架构。根据笔者这几年几十家各行各业企业的交流经验来看,大致都经历了如下几个阶段:
关系型数据库最初,企业的技术人员通常都是在业务数据库相对空闲的时候(比如:晚上或者凌晨),直接在业务数据库备库进行一些数据分析查询。随着数据量的增多,一份逻辑上相同的数据,通常需要通过分库分表的方式分布在多个业务数据库中。快速分析全量数据且不影响在线业务变成了一件极其复杂的事情。
线下自建Hadoop集群2004年,Google发布MapReduce论文。2006年,Apache Hadoop项目发布。一些技术走在比较前沿的互联网公司,开始使用Hadoop的分布式处理能力解决数据分析中常见的数据量激增、查询出不了结果等问题。
随后几年,越来越多的公司开始在线下机房搭建开源Hadoop集群,Hadoop生态相关的Kafka、Hive、Spark、Flink等都开始百花齐放,懂这些开源组件的技术人员在职场上也变得越来越吃香。
Hadoop架构最本质的优势就是高扩展性,理论上,解决好节点间的通信、引入多管理节点,就能根据数据量无限扩展集群规模。集群规模跟需要参与计算的数据量(如:最近30天的数据)强相关,尤其像互联网APP,可能一把就火了,但火上半个月用户热情冷却,又下降到最初的业务量。线下机房采购服务器走流程,周期基本都是以月为单位,根本无法满足快速变化的业务场景。
云上自建Hadoop集群当时,国外的亚马逊已经诞生了几年,国内的阿里也开始大刀阔斧进军公有云。技术团队开始考虑公有云上购买虚拟机部署Hadoop集群,云上虚拟机按需使用的特点很好地解决了Hadoop集群对于节点伸缩能力的诉求。
云上半托管大数据服务 & 云上Serverless大数据服务云厂商也纷纷看到了企业对大数据分析的诉求,推出了云上半托管大数据服务(如:AWS、华为云的MRS等)。从单纯虚拟机的性能竞争演变成了大数据管理软件的易用性、大数据组件的性能等竞争。
云上半托管大数据服务对于用户来说,最核心的优势就是使得安装、升级、运维变得简单化、可视化。同时,因为组件都是开源 + 自研优化,所以在接口上和开源保持一致,减少了业务的改造成本。
但云上半托管大数据服务对于用户还是有一定的使用门槛(懂大数据运维和调优),而且需要长期持有一部分固定节点资源,存在一定的资源浪费。
注意到这些问题,AWS在2016年推出了基于Serverless架构的Athena服务。最初是主打使用标准SQL分析Amazon S3 中的数据。Athena没有服务器,无需管理任何基础设施,且只需为运行的查询付费。
华为云也在2017年推出了基于Serverless架构的数据湖探索DLI服务,完全兼容Apache Spark和Apache Flink生态,使用SQL就可轻松完成多个数据源的联合分析。
2019年2月,加州大学伯克利分校发表了这篇名为《Cloud Programming Simplified: A Berkerley View on Serverless Computing》的论文,论文中认为Serverless模式主要有三个特点:
弱化了储存和计算之间的联系。服务的储存和计算被分开部署和收费,服务的储存不再是它本身的一部分,而是演变成了独立的云服务,这使得计算变得无状态化,更容易调度和缩扩容,同时也降低了数据丢失的风险。