开发者社区> 小明的Java问道之路> 正文
阿里云
为了无法计算的价值
打开APP
阿里云APP内打开

【高并发项目实战】工程模块化与活动会场静态化架构原理解析

简介: 活动会场往往聚集着大量流量,千万甚是上亿级别很平常,我们做架构设计的时候,应该前端、后端、网关、配置等等都要考虑进去才是一个合格的架构,本文采取工程模块化与活动会场静态化做架构并讲解其设计原理。
+关注继续查看

前言

📫作者简介小明java问道之路,专注于研究计算机底层/Java/Liunx内核,就职于大型金融公司后端高级工程师,擅长交易领域的高安全/可用/并发/性能的架构设计📫 

🏆CSDN专家博主/Java领域优质创作者、阿里云专家博主、华为云享专家、51CTO专家博主🏆

🔥如果此文还不错的话,还请👍关注、点赞、收藏三连支持👍一下博主~

本文导读

活动会场往往聚集着大量流量,千万甚是上亿级别很平常,我们做架构设计的时候,应该前端、后端、网关、配置等等都要考虑进去才是一个合格的架构,本文采取工程模块化与活动会场静态化做架构并讲解其设计原理。

一、接口数据静态化

工程中的接口数据静态化,对cms内容管理系统配置的动态模块数据通过消息推送到 searchfacade 系统,searchfacade 对动态模块配置的关键数据进行存储,异步解析配置处理,调用商品和活动基础系统获取商品以及活动优惠相关数据生成对应的模块动态 json 数据文件,生成的 json 数据上送到对应的nas服务。

1、CMS简析

页面动态化配置对运营、营销等方面有很多好处,一是在减少重复性、不必要的开发工作,避免了开发资源的争夺和漫长的排期等待。二是灵活的配置方案、便捷的配置工具,对技术的要求就相对较高了。

image

2、CMS设计特点

内容管理系统是互联网的新宠,对于内容管理,业界还没有一个统一的定义,不同的机构有不同的理解。

2.1、网站结构

CMS的功能简单来说可以表述如下: 一个内容管理系统是把一个网站的内容(文字,图片,等等)与网站的组件分离开来,可以将各个页面连接到一起,可以控制页面的显示。

2.2、模型管理

这里的模型是指数据模型,比如新闻、短消息之类的数据模型。一般的CMS都有一些内建的数据模型,可以对这类模型进行管理,同时CMS基本上都支持自定义数据模型。

2.3、标签

CMS一般都使用了显示模板,而模板的核心就是显示样式和标签。

2.4、静态化

一般CMS都具有将记录转变为HTML,即页面静态化的功能。

3、searchfacade系统解析

searchfacade系统是一个离线处理服务的系统,业务流程离线操作处理系统,顾名思义该系统主要功能是系统的搜索前端,需要保障稳定性和安全性。同时为内部人员(开发、运营、测试、产品等等)使用searchfacade 系统需要配置管理后台,searchfacade 系统对动态模块配置的关键数据进行存储,异步解析配置处理,系统内部设置有流程引擎服务器,主要是网关、拦截、监控等,离线处理服务器处理业务,WEB应用服务器,为了更加直观管理和方便操作。

流程引擎服务器连接有流程数据库,接入系统网关上报页面信息,离线处理服务器接收数据推送通知,例如活动信息、流量信息、用户信息等等,流程邮件数据库通过内外网隔离网关与流程邮件收发服务器实现,流程邮件收发服务器通过外部网络与外网应用服务器连接,把邮件存入流程邮件数据库中,并推送对应的处理人。

image

二、模块化和会场页面渲染解析

模块化和会场页面渲染,当用户请求对应会场页面时,cdn已有缓存会从cdn直接返回页面,如过无回源到对应node服务,node服务处理页面加载 cms 配置进行解析,解析到对应商城数据模块则从对应 nas 获取json数据进行页面渲染,渲染完后返回给到客户端之间展示,页面中未获取到预处理的数据则客户端调用接口做异常补偿渲染。

1、前端在解决工程化、业务效果评估上的具体实践与方法论

2、服务端在解决前端模块代码于服务端执行、隔离和性能优化上的具体实践与方法论

NAS卷:NAS(Apsara File Storage)是面向阿里云ECS实例、E-HPC和容器服务等计算节点的文件存储服务。它是一种可共享访问、弹性扩展、高可靠以及高性能的分布式文件系统。 

image

三、数据一致性设计

数据一致性在一致性方面基于消息机制采取最终一致性,cms配置内容通过消息异步同步到searchfacade离线处理;商品和活动等基础数据如商家和运营进行新增和修改也通过消息异步通知到searchfacade,searchfacade接收到消息后比对对应商品和活动在配置中是否配置,如有数据则触发模块数据预处理逻辑重新生成json文件,并跟进热度情况及时刷新cdn;未确保消息丢失造成一致性问题,搭建canal伪装数据库备库监听 binglog+Kafka(一致性定义:若某条消息对client可见,那么即使Leader挂了,在新Leader上数据依然可以被读到) 消息作为更新补偿。

过期配置和热点配置处理:当用户请求页面时,客户端获取到页面后,会根据页面内容异步上报各模块访问信息(模块id+访问时间等),searchfacade接收到访问上报后会更新访问时间和统计周期内访问量已做权重加权,长时间无访问量的数据不做预处理,访问量大的热点模块预处理频次加快(始终保持数据更新的时效性)

image

四、系统交互结构

用户访问客户端,请求会场页面,这时CND分发到node服务,如果是入门数据刷新cnd,将数据刷新单NAS卷上,nas卷将活动等json数据回写node服务,node服务访问CMS获取会场配置,CMS将消息同步到searchfacade系统。

同时客户端上报页面访问信息到接入网关api,由网关系统访问searchfacade系统,searchfacade系统离线处理生成的json数据文件,推送到nas上

底层监听数据矩阵(下游系统、管理系统或商户端等)的更新消息的消息队列,监听数据库binlog变更,通过管道补偿消息。整体系统交互架构图,如下。

image

总结

活动会场往往聚集着大量流量,千万甚是上亿十亿级别,本文采取工程模块化与活动会场静态化做架构并讲解其设计原理,并在页面渲染、页面模块化、搜索和数据一致性上面的着重设计一一解析。

版权声明:本文内容由阿里云实名注册用户自发贡献,版权归原作者所有,阿里云开发者社区不拥有其著作权,亦不承担相应法律责任。具体规则请查看《阿里云开发者社区用户服务协议》和《阿里云开发者社区知识产权保护指引》。如果您发现本社区中有涉嫌抄袭的内容,填写侵权投诉表单进行举报,一经查实,本社区将立刻删除涉嫌侵权内容。

相关文章
es实战-收集Nginx日志可视化监控
Kibana 展示 Nginx 记录的访问 ES 日志
515 0
HaaS UI小程序解决方案基础教学之七:创建第一个自定义组件
前面已经介绍过通过HaaS UI内置的组件库来搭建页面,而组件(Component)是 Vue.js 最强大的功能之一。 组件可以扩展 HTML 元素(在HaaS UI里就是扩展基础组件库),封装可重用的代码。 组件系统让我们可以用独立可复用的小组件来构建大型应用。
161 0
为什么已经有了自建服务器,还需要去IDC机房托管,最后又去上云呢?
上云前序    ​    ​我们公司因为业务需求,需要来服务器托管微信公众号平台。之前我们先是自建服务器,然后就是使用IDC机房托管服务器,后来因为种种原因,最后转到了阿里云上云。很多同学会有疑问,为什么已经有了自建服务器,还需要去IDC机房托管,最后又去上云呢?    ​   ​因为在自建服务器的时候,这个服务器是由我们公司一群参差不齐不齐的"网络工程师"一起弄的。
869 0
《深入理解Nginx:模块开发与架构解析》一2.5 用HTTP proxy module配置一个反向代理服务器
本节书摘来自华章出版社《深入理解Nginx:模块开发与架构解析》一书中的第2章,第2.5节,作者 陶辉,更多章节内容可以访问云栖社区“华章计算机”公众号查看
1808 0
+关注
小明的Java问道之路
某大型金融企业后端高级工程师、Java领域优质创作者、云享专家,专注于研究计算机底层/Java/架构/设计模式/算法
71
文章
0
问答
文章排行榜
最热
最新
相关电子书
更多
低代码开发师(初级)实战教程
立即下载
阿里巴巴DevOps 最佳实践手册
立即下载
冬季实战营第三期:MySQL数据库进阶实战
立即下载