论大数据架构的应用

摘要:本文以我参与过的生鲜网购平台为例,阐述大数据架构在项目开发中的应用。某某公司的生鲜平台是一个销售生鲜,酒水为主的平台,该平台面向的客户为酒店食堂之类的买家。该项目有着并发高,数据量大的特点,这就需要平台能够处理实时的数据,并且保证数据的准确性。我以系统架构师的身份参与了这个项目,并在这个项目中采用了Lamba架构去解决大数据的统计问题,在新的生鲜网购平台的Lambda三层架构中,从加速处理层处理实时数据;以批处理层处理实时数据;服务层则根据加速层和批处理层结果进行处理层。项目最终顺利完成,我在得到领导的嘉奖的同时,也对Lambda架构有了更深的理解。

正文:

随着中国互联网的飞速发展,很多商家逐渐把线下的生意搬到了互联网上,与此同时,人们也把自己的采购的商品习惯从线下搬到线上。本公司作为一个买卖生鲜的企业也不例外,也早已把业务搬到线上。同时该公司又是一个以销售驱动为核心的企业,把销售的市场区域,划分为网格,每个网格由对应销售经理负责。每个网格都有一定的特殊性,销售经理需要经常通过销售系统查看各个网络的销售情况以及销售指标,用以指导每个销售员制定销售方案。仓储系统可以根据销售数据分析每个仓库需要分配并囤积的生鲜品类及数量。然而,随着业务系统的扩张,我们的订单量从之前每天几百张的订单量,增加到现在每天几万张的订单量,并且订单数量还在以很高的速率增长,预期在未来几年内达到每天超十万的订单量。因此2023年,公司投入260万,重新开发了一套新的生鲜网购平台,用于以适应新的业务,具备更高的业务处理你能力。我担任了该项目的系统架构师,并在这个项目里选择了Lambda架构来支持大数据的计算。以下便是我在项目中对Lambda架构使用的详细说明。

生鲜网购平台项目在处理统计数据方面有两个要求。第一,要能够处理实时的数据,对请求返回的结果要能反映实时情况。第二,由于历史的订单可能存在变动,比如说用户的退货,这种往往不能计算在有效订单中,所以我们需要在一段时间内定期对数据做批量处理,保证数据的准确性。二LAMDBA架构既能够处理历史数据又能处理实时数据,所以在生鲜网购平台项目中,LAMbda架构是处理统计大数据的不二之选。

大数据开发主要的架构有Kappa架构和LAMABDA架构。其中LAMBDA分为加速层,批处理层,服务层三个组成部分,加速层以流式方式做处理实时数据,每次处理的数据量相对较少,处理速度比较快,处理时间端,能为系统提供低近乎实时的数据视图。批处理层用于批处理的历史数据,负责存储和管理不易改变的原始数据,并运行预定义的批处理作业来与计算结果。批处理层处理的数据集量大,处理时间长。服务层的作用是,汇总批处理层和加速层的处理结果,提供全面的数据视图,并对客户端的请求进行快速响应。

Lambda加速层用于处理实时数据。从业务上来讲,财务部门认定5天以后的数据不会再改变,而最近5天的数据可能因为客户的退货,或者补增订单等原因导致销售订单会发生改变,所以我们以五天作为一个时间点,对最近5天的数据做流式处理,而剩下的数据使用批处理层进行修正。通过跟业务人员沟通,他们也允许在这段时间内产生的一些国内指标性数据存在一定的误差。按照这个思路,,我们制定了实现方案,拿订单举例,当每次缠上有效订单,生成订单的服务在把订单信息存入数据库的同时,也会传入KAfka消息队列中,而Spark服务器从Kafka中读取数据,经过流式处理,不断地把结果更新到Redis中去。并且,我还部署了多台Spark服务器,不但保证了处理地效率,还保证了Spark服务地高可用性。

Lamdba批处理层用于处理历史数据。生鲜网购业务地复杂性是客观存在地,流式处理地数据也会因为业务地复杂,在统计时产生一定地误差。所以,需要最近5天之外地数据放在批处理层为实现这样地功能,我负责搭建了Hadoop,编写处理脚本,从Mysql数据库中读取数据,然后使用MapReduce对数据进行统计,最终生成年度数据,月数据和周数据,并将它们存入Mysql数据库中,这个过程在每天凌晨4点中运行,并在运维人员监督下完成。然而前端业务产生一些性能问题,所以我们只对最近一年的数据进行重新统计。这样大大降低了数据库的查询时间,也为后面其他的数据分析任务奠定了基础。

Lamdba服务层根据加速层和批处理层计算结果进行简单计算,并快速响应请求。举个简单的例子说明,销售人员有时会希望查询自己当月的KPI绩效,只需要通过APP客户端访问Spring Boot服务。从Redis缓存中取出最近5天的统计数据,以及从数据库中取出当天凌晨通过批量运算生成销售人员不但可以传自己当前的网格销售情况,管理人员也可以看到自己管辖下的销售人员的工作情况,而领导也可以通过这些数据快速的看到一些战略指标。仓储人员还可以通过这些数据预测每个仓库需要分配的生鲜,减少了转运的菜品折损,为公司大大降低了成本。这些操作并不需要经历太多的计算,只需要借助这些预处理的数据,就可以很快的得出需要的结果。

这个项目经历了6个月的时间,项目也成功上线。Lambda架构生鲜网购平台不仅可以提供公司领导期望的数据分析功能,还能完成大规模订单数据统计,实现用户分析。这是我第一次使用Lambda架构,在领导的信任和同事的支持下,我最终完成了任务,最终完成了公司领导赋予的研发任务。而我对Lambda架构也有了更深刻的理解。

相关推荐
2601_954526752 小时前
异常处理与性能调优:熬夜、加班与医美术后的“内服架构”实战指南
架构
她的男孩2 小时前
后台权限不只是菜单隐藏:Forge Admin 的 RBAC 权限链路拆解
java·后端·架构
thubier(段新建)2 小时前
从需求到上线:需求→业务→架构→功能→实现 全链路落地方法论
人工智能·架构
LONGZETECH4 小时前
汽车底盘检修仿真教学软件技术架构拆解|职教实训数字化落地方案
架构·汽车·汽车仿真教学软件
kunge20134 小时前
Claude Code 工作流中的命令实现与自定义指南
人工智能·后端·架构
东方小月5 小时前
vibecoding实战:用 Claude Code 从0到1开发一个 Claude Code
前端·人工智能·架构
用泥种荷花6 小时前
编译原理通识:编译型、解释型、混合型语言核心区别
架构
用户887665426637 小时前
用 TanStack Table、React Query 和 shadcn/ui 搭一个可维护的数据表格架构
react.js·架构
Byron07077 小时前
后端架构核心技术栈详解
java·架构