前言
📫作者简介:小明java问道之路,专注于研究计算机底层/Java/Liunx内核,就职于大型金融公司后端高级工程师,擅长交易领域的高安全/可用/并发/性能的架构设计📫
🏆CSDN专家博主/Java领域优质创作者、阿里云专家博主、华为云享专家、51CTO专家博主🏆
🔥如果此文还不错的话,还请👍关注、点赞、收藏三连支持👍一下博主~
本文导读
活动会场往往聚集着大量流量,千万甚是上亿级别很平常,我们做架构设计的时候,应该前端、后端、网关、配置等等都要考虑进去才是一个合格的架构,本文采取工程模块化与活动会场静态化做架构并讲解其设计原理。
一、接口数据静态化
工程中的接口数据静态化,对cms内容管理系统配置的动态模块数据通过消息推送到 searchfacade 系统,searchfacade 对动态模块配置的关键数据进行存储,异步解析配置处理,调用商品和活动基础系统获取商品以及活动优惠相关数据生成对应的模块动态 json 数据文件,生成的 json 数据上送到对应的nas服务。
1、CMS简析
页面动态化配置对运营、营销等方面有很多好处,一是在减少重复性、不必要的开发工作,避免了开发资源的争夺和漫长的排期等待。二是灵活的配置方案、便捷的配置工具,对技术的要求就相对较高了。
2、CMS设计特点
内容管理系统是互联网的新宠,对于内容管理,业界还没有一个统一的定义,不同的机构有不同的理解。
2.1、网站结构
CMS的功能简单来说可以表述如下: 一个内容管理系统是把一个网站的内容(文字,图片,等等)与网站的组件分离开来,可以将各个页面连接到一起,可以控制页面的显示。
2.2、模型管理
这里的模型是指数据模型,比如新闻、短消息之类的数据模型。一般的CMS都有一些内建的数据模型,可以对这类模型进行管理,同时CMS基本上都支持自定义数据模型。
2.3、标签
CMS一般都使用了显示模板,而模板的核心就是显示样式和标签。
2.4、静态化
一般CMS都具有将记录转变为HTML,即页面静态化的功能。
3、searchfacade系统解析
searchfacade系统是一个离线处理服务的系统,业务流程离线操作处理系统,顾名思义该系统主要功能是系统的搜索前端,需要保障稳定性和安全性。同时为内部人员(开发、运营、测试、产品等等)使用searchfacade 系统需要配置管理后台,searchfacade 系统对动态模块配置的关键数据进行存储,异步解析配置处理,系统内部设置有流程引擎服务器,主要是网关、拦截、监控等,离线处理服务器处理业务,WEB应用服务器,为了更加直观管理和方便操作。
流程引擎服务器连接有流程数据库,接入系统网关上报页面信息,离线处理服务器接收数据推送通知,例如活动信息、流量信息、用户信息等等,流程邮件数据库通过内外网隔离网关与流程邮件收发服务器实现,流程邮件收发服务器通过外部网络与外网应用服务器连接,把邮件存入流程邮件数据库中,并推送对应的处理人。
二、模块化和会场页面渲染解析
模块化和会场页面渲染,当用户请求对应会场页面时,cdn已有缓存会从cdn直接返回页面,如过无回源到对应node服务,node服务处理页面加载 cms 配置进行解析,解析到对应商城数据模块则从对应 nas 获取json数据进行页面渲染,渲染完后返回给到客户端之间展示,页面中未获取到预处理的数据则客户端调用接口做异常补偿渲染。
1、前端在解决工程化、业务效果评估上的具体实践与方法论
2、服务端在解决前端模块代码于服务端执行、隔离和性能优化上的具体实践与方法论
NAS卷:NAS(Apsara File Storage)是面向阿里云ECS实例、E-HPC和容器服务等计算节点的文件存储服务。它是一种可共享访问、弹性扩展、高可靠以及高性能的分布式文件系统。
三、数据一致性设计
数据一致性在一致性方面基于消息机制采取最终一致性,cms配置内容通过消息异步同步到searchfacade离线处理;商品和活动等基础数据如商家和运营进行新增和修改也通过消息异步通知到searchfacade,searchfacade接收到消息后比对对应商品和活动在配置中是否配置,如有数据则触发模块数据预处理逻辑重新生成json文件,并跟进热度情况及时刷新cdn;未确保消息丢失造成一致性问题,搭建canal伪装数据库备库监听 binglog+Kafka(一致性定义:若某条消息对client可见,那么即使Leader挂了,在新Leader上数据依然可以被读到) 消息作为更新补偿。
过期配置和热点配置处理:当用户请求页面时,客户端获取到页面后,会根据页面内容异步上报各模块访问信息(模块id+访问时间等),searchfacade接收到访问上报后会更新访问时间和统计周期内访问量已做权重加权,长时间无访问量的数据不做预处理,访问量大的热点模块预处理频次加快(始终保持数据更新的时效性)
四、系统交互结构
用户访问客户端,请求会场页面,这时CND分发到node服务,如果是入门数据刷新cnd,将数据刷新单NAS卷上,nas卷将活动等json数据回写node服务,node服务访问CMS获取会场配置,CMS将消息同步到searchfacade系统。
同时客户端上报页面访问信息到接入网关api,由网关系统访问searchfacade系统,searchfacade系统离线处理生成的json数据文件,推送到nas上
底层监听数据矩阵(下游系统、管理系统或商户端等)的更新消息的消息队列,监听数据库binlog变更,通过管道补偿消息。整体系统交互架构图,如下。
总结
活动会场往往聚集着大量流量,千万甚是上亿十亿级别,本文采取工程模块化与活动会场静态化做架构并讲解其设计原理,并在页面渲染、页面模块化、搜索和数据一致性上面的着重设计一一解析。