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

本文涉及的产品
文件存储 NAS,50GB 3个月
公共DNS(含HTTPDNS解析),每月1000万次HTTP解析
云解析 DNS,旗舰版 1个月
简介: 活动会场往往聚集着大量流量,千万甚是上亿级别很平常,我们做架构设计的时候,应该前端、后端、网关、配置等等都要考虑进去才是一个合格的架构,本文采取工程模块化与活动会场静态化做架构并讲解其设计原理。

前言

📫作者简介小明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变更,通过管道补偿消息。整体系统交互架构图,如下。

总结

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

相关文章
|
11天前
|
设计模式 存储 人工智能
深度解析Unity游戏开发:从零构建可扩展与可维护的游戏架构,让你的游戏项目在模块化设计、脚本对象运用及状态模式处理中焕发新生,实现高效迭代与团队协作的完美平衡之路
【9月更文挑战第1天】游戏开发中的架构设计是项目成功的关键。良好的架构能提升开发效率并确保项目的长期可维护性和可扩展性。在使用Unity引擎时,合理的架构尤为重要。本文探讨了如何在Unity中实现可扩展且易维护的游戏架构,包括模块化设计、使用脚本对象管理数据、应用设计模式(如状态模式)及采用MVC/MVVM架构模式。通过这些方法,可以显著提高开发效率和游戏质量。例如,模块化设计将游戏拆分为独立模块。
37 3
|
25天前
|
存储 缓存 负载均衡
高并发系统架构的设计挑战与应对策略
【8月更文挑战第18天】高并发系统架构设计是一项复杂而重要的任务。面对性能瓶颈、稳定性与可靠性、并发控制和可扩展性等挑战,开发人员需要采取一系列有效的策略和技术手段来应对。通过负载均衡、缓存技术、数据库优化、异步处理、并发控制、弹性设计及监控与调优等手段,可以设计出高性能、高可用和高可扩展性的高并发系统架构,为用户提供优质的服务体验。
|
2月前
|
开发者 Sentinel 微服务
高并发架构设计三大利器:缓存、限流和降级问题之降级策略中的有限状态机的三种状态切换的问题如何解决
高并发架构设计三大利器:缓存、限流和降级问题之降级策略中的有限状态机的三种状态切换的问题如何解决
|
2月前
|
监控 应用服务中间件 nginx
高并发架构设计三大利器:缓存、限流和降级问题之Nginx的并发连接数计数的问题如何解决
高并发架构设计三大利器:缓存、限流和降级问题之Nginx的并发连接数计数的问题如何解决
|
2月前
|
应用服务中间件 nginx 缓存
高并发架构设计三大利器:缓存、限流和降级问题之Nginx作为前置网关进行限流问题如何解决
高并发架构设计三大利器:缓存、限流和降级问题之Nginx作为前置网关进行限流问题如何解决
|
2月前
|
监控 算法 Java
高并发架构设计三大利器:缓存、限流和降级问题之配置Sentinel的流量控制规则问题如何解决
高并发架构设计三大利器:缓存、限流和降级问题之配置Sentinel的流量控制规则问题如何解决
|
2月前
|
监控 Sentinel 缓存
高并发架构设计三大利器:缓存、限流和降级问题之RateLimiter的acquire()方法有什么作用
高并发架构设计三大利器:缓存、限流和降级问题之RateLimiter的acquire()方法有什么作用
|
2月前
|
存储 算法 缓存
高并发架构设计三大利器:缓存、限流和降级问题之使用RateLimiter来限制操作的频率问题如何解决
高并发架构设计三大利器:缓存、限流和降级问题之使用RateLimiter来限制操作的频率问题如何解决
|
2月前
|
存储 算法 Java
高并发架构设计三大利器:缓存、限流和降级问题之滑动日志算法问题如何解决
高并发架构设计三大利器:缓存、限流和降级问题之滑动日志算法问题如何解决
|
2月前
|
算法 Java 调度
高并发架构设计三大利器:缓存、限流和降级问题之使用Java代码实现令牌桶算法问题如何解决
高并发架构设计三大利器:缓存、限流和降级问题之使用Java代码实现令牌桶算法问题如何解决

热门文章

最新文章

推荐镜像

更多