数据加载很慢_(实战总结)我用EggJS开发了一个日增量过亿的数据可视化平台

本文介绍了作者在面临日增量过亿数据的可视化平台开发时,如何选择EggJS作为后端框架,并通过中间件、Etcd配置管理、数据缓存等手段优化系统性能,将22s的接口响应时间降至0.1s,实现了系统的稳定性和高效运行。
摘要由CSDN通过智能技术生成
38d02080468183211172ce8533ad6527.gif

本文首发于知乎,大家可以通过文章底部的

项目背景

小编我在国内某知名互联网(非一线)做前端开发,平时做NodeJS比较多,所以负责BFF和服务端的事情也不较多。

前些日子,我所在的Team接到了一个“大活儿”,为我们公司某个服务(出于保密的原因,这里不能直说)做数据可视化及数据分析平台。

与数据生产方(服务维护方)沟通几轮后,我了解到了本次的后端服务有几大挑战:

  1. 全栈开发:本项目在数据生产完成之后,所有工作都要由我们前端组独立完成,包括前端页面、后端服务、数据加工等等

  2. 数据量庞大:原始数据的日增量过亿,如果赶上运营活动数据量可能还会翻倍

  3. 实时展示:我们希望为用户提供实时的数据展示,如此大的数据量要做到实时绝非易事

  4. 权限认证:该服务的所有数据都是有安全性要求,除了最基础的登录校验,不同业务线也只能查看自身业务线的数据

项目准备

我们对接的服务维护方可以为我们提供的是 将所有实时数据落到clickhouse(一种适合大数据存储分析的数据库)中,除实时数据外,还有小时级别的聚合数据(维度是各业务单元)。

也就是说,每个业务线在该服务上产生的数据会每小时做一个聚合并落到另一张表(包括:小时内的总计、平均值、uv均值、pv总值等等)。

剩下的事情就要靠我们几位前端同学搞定了。

技术选型

后端当然是用NodeJS写,毕竟我们是前端开发,选择NodeJS是理所当然的。

但是基于NodeJS的http server框架该选什么?目前市面上三个比较被大家熟知的有3个。

Express和Koa、EggJS

7bf16097060e2000c934711ab4b5c012.png

  • Express本人用了多年,做过两个运行多年的大型项目,但事实上用的很痛苦。每次的请求实例都是通过参数一层层传递的,所有错误也要一层层传递出来。用起来很不爽,急需寻找改变。

  • KoaExpress原班人马打造的, 从根源上做解决了Express的很多痛点,但是我需要一个更适合企业级应用的框架

EggJS——最终选择

EggJS成为了最终的选择,我觉得Egg有如下的优势:

  • 多环境配置,作为企业应用,我们会有多个环境——测试环境、stage环境、生产环境,每个环境下的应用所连接底层服务的参数、配置信息都是不一样的。EggJS可以通过启动时注入环境变量来加载不同的配置文件,并且挂在到context上,应用代码根本不用关心环境的差异,多环境问题轻松解决。

  • 系统稳定性,使用Express和Koa的话,为了

  • 1
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值