Web开发

首页 » 常识 » 诊断 » 应用数据静态化架构高性能单页Web应用
TUhjnbcbe - 2021/3/9 13:53:00

在电商网站中,单页Web是非常常见的一种形式,比如首页、频道页、广告页等都属于单页应用。而这种页面是由模板+数据组成。传统的构建方式一般通过静态化实现。而这种方式的灵活性并不是很好,比如页面模板部分变更了需要重新全部生成。因此最好能有一种实现方式是可以实时动态渲染,以支持模板的多变性。另外也要考虑好如下几个问题:

1、动态化模板渲染支持;

2、数据和模板的多版本化:生产版本、灰度版本和预发布版本;

3、版本回滚问题,假设当前发布的生产版本出问题了如何快速的回滚到上一个版本;

4、异常问题,假设渲染模板时遇到了异常情况(比如获取Redis出问题了),如何处理;

5、灰度发布问题,比如切20%量给灰度版本;

6、预发布问题,目的是在正式环境测试数据和模板的正确性。

整体架构

静态化页面的方案如下图所示:

直接将生成的静态页推送到相关服务器即可。使用这种方式要考虑文件操作的原子化问题(即从老版本切换到新版本如何做到文件操作原子化)。

而动态化方案的整体架构如下图所示,分为三大系统:CMS系统、控制系统和前端展示系统。

CMS系统

1、在CMS系统可以配置页面的模板和数据;

1.1、模板动态在CMS系统中维护,即模板不是一个静态文件,而是存储在CMS中的一条数据,最终发布到“发布数据存储Redis”中,前端展示系统从Redis中获取该模板进行渲染,从而前端展示系统更换了模板也不需要重启,纯动态维护模板数据;

2、原始数据存储到“元数据存储Mysql”中即可,比如频道页一般需要:前端访问的URL、分类、轮播图、商品楼层数据等;这些数据按照相应的维度存储在CMS系统中;

3、提供发布到“发布数据存储Redis”的控制,将CMS系统中的原始数据和模板数据组装成聚合数据(JSON存储)同步到“发布数据存储Redis”,以便前端展示系统获取进行展示;此处提供三个发布按钮:正式版本、灰度版本和预发布版本。

目前存在如下几个问题:

1、用户如访问

1
查看完整版本: 应用数据静态化架构高性能单页Web应用