小型电商网站的商品详情页系统架构

小型电商网站的页面展示采用页面全量静态化的思想。数据库中存放了所有的商品信息,页面静态化系统,将数据填充进静态模板中,形成静态化页面,推入 Nginx 服务器。用户浏览网站页面时,取用一个已经静态化好的 html 页面,直接返回回去,不涉及任何的业务逻辑处理。

下面是页面模板的简单 Demo 。

  商品名称:#{productName} 商品价格:#{productPrice} 商品描述:#{productDesc} 

这样做,好处在于,用户每次浏览一个页面,不需要进行任何的跟数据库的交互逻辑,也不需要执行任何的代码,直接返回一个 html 页面就可以了,速度和性能非常高。

对于小网站,页面很少,很实用,非常简单,Java 中可以使用 velocity、freemarker、thymeleaf 等等,然后做个 cms 页面内容管理系统,模板变更的时候,点击按钮或者系统自动化重新进行全量渲染。

坏处在于,仅仅适用于一些小型的网站,比如页面的规模在几十到几万不等。对于一些大型的电商网站,亿级数量的页面,你说你每次页面模板修改了,都需要将这么多页面全量静态化,靠谱吗?每次渲染花个好几天时间,那你整个网站就废掉了。

大型电商网站的商品详情页系统架构

大型电商网站商品详情页的系统设计中,当商品数据发生变更时,会将变更消息压入 MQ 消息队列中。缓存服务从消息队列中消费这条消息时,感知到有数据发生变更,便通过调用数据服务接口,获取变更后的数据,然后将整合好的数据推送至 redis 中。Nginx 本地缓存的数据是有一定的时间期限的,比如说 10 分钟,当数据过期之后,它就会从 redis 获取到最新的缓存数据,并且缓存到自己本地。

用户浏览网页时,动态将 Nginx 本地数据渲染到本地 html 模板并返回给用户。

虽然没有直接返回 html 页面那么快,但是因为数据在本地缓存,所以也很快,其实耗费的也就是动态渲染一个 html 页面的性能。如果 html 模板发生了变更,不需要将所有的页面重新静态化,也不需要发送请求,没有网络请求的开销,直接将数据渲染进最新的 html 页面模板后响应即可。

在这种架构下,我们需要保证系统的高可用性。

如果系统访问量很高,Nginx 本地缓存过期失效了,redis 中的缓存也被 LRU 算法给清理掉了,那么会有较高的访问量,从缓存服务调用商品服务。但如果此时商品服务的接口发生故障,调用出现了延时,缓存服务全部的线程都被这个调用商品服务接口给耗尽了,每个线程去调用商品服务接口的时候,都会卡住很长时间,后面大量的请求过来都会卡在那儿,此时缓存服务没有足够的线程去调用其它一些服务的接口,从而导致整个大量的商品详情页无法正常显示。

这其实就是一个商品接口服务故障导致缓存服务资源耗尽的现象。

商品详细信息的代码html_电商网站的商品详情页系统架构相关推荐

  1. [转载]电商网站秒杀与抢购的系统架构

    [自己在其他资料上看到的,然后做了个小笔记(画图做的笔记)] [以下是转发内容] 原文:电商网站秒杀与抢购的系统架构 一.大规模并发带来的挑战 在过去的工作中,我曾经面对过5w每秒的高并发秒杀功能,在 ...

  2. 商品详细信息的代码html_实操分享:如何将商品优惠券,添加到淘宝详情页?...

    有些时候,我们需要为单品设置一些优惠券,但是商品优惠券在宝贝详情页是默认不展示的,我们只能通过装修,在pc端店铺首页.PC端宝贝详情页.无线端店铺首页展示出来,注意:目前商品优惠券不支持在无线端宝贝详 ...

  3. 电商网站秒杀与抢购的系统架构

    一.大规模并发带来的挑战 在过去的工作中,我曾经面对过5w每秒的高并发秒杀功能,在这个过程中,整个Web系统遇到了很多的问题和挑战. 如果Web系统不做针对性的优化,会轻而易举地陷入到异常状态.我们现 ...

  4. 电商网站的商品详情页系统架构

    小型电商网站的商品详情页系统架构 小型电商网站的页面展示采用页面全量静态化的思想.数据库中存放了所有的商品信息,页面静态化系统,将数据填充进静态模板中,形成静态化页面,推入 Nginx 服务器.用户浏 ...

  5. 电商详情页缓存架构(一)电商网站的商品详情页架构

    小型电商网站的商品详情页的页面静态化架构以及其缺陷 小型电商网站,一般使用页面静态化的方案,提前将数据渲染到模板中. 问题:每次模板变更,模板对应的所有数据需要全部重新渲染 大型电商网站的异步多级缓存 ...

  6. 亿级流量电商详情页系统实战-1.小型电商网站的商品详情页的页面静态化架构以及其缺陷

    1.电商网站按规模分类 电商网站里,大概可以说分成两种: 小型电商 简单的一种架构方案,页面静态化的方案 大型电商 复杂的一套架构,大电商,国内排名前几的电商,大型的详情页架构页面静态化,全量的页面静 ...

  7. 基于JAVA移动电商网站计算机毕业设计源码+系统+数据库+lw文档+部署

    基于JAVA移动电商网站计算机毕业设计源码+系统+数据库+lw文档+部署 基于JAVA移动电商网站计算机毕业设计源码+系统+数据库+lw文档+部署 本源码技术栈: 项目架构:B/S架构 开发语言:Ja ...

  8. 亚马逊跨境电商如何编辑产品详情页 亚马逊产品listing优化

    产品详情页是买家了解产品的重要途径.也是影响产品转化率的重要因素.今天海熹跨境人才网给大家分享一下关于亚马逊跨境电商产品详情页的优化,亚马逊产品listing优化.一起来了解一下吧. 1:售前关联营销 ...

  9. mysql存储商品详情_商品详情页系统架构

    一般的电商演变: 商品详情页系统架构演进历程 第一个版本 架构设计 J2EE+Tomcat+MySQL 动态页面,每次请求都要调用多个依赖服务的接口,从数据库里查询数据,然后通过类似JSP的技术渲染到 ...

最新文章

  1. 邮件服务器 之 基于FreeBSD和Postfix的邮件系统与邮件列表的web mail安装
  2. Linux 服务器更换主板后,网卡识别失败的处理方法
  3. JavaScript基础——处理字符串
  4. 通过getSystemServices获取手机管理大全
  5. 【转】C++中如何区分构造函数与重载operator()得到的仿函数?
  6. c语言如何一直变换颜色,【图片】(原创)用纯C变了个变色输出字符的程序。。。【c语言吧】_百度贴吧...
  7. 关于Kafka中的再均衡
  8. 设计灵感|美容护肤主题,图文排版在Banner中的正确打开位置!
  9. 【Objective-C学习记录】第一天
  10. 一个开源vue网站博客,nuxt开源网站,前后端分离项目
  11. 使用yolo v3训练自己的模型
  12. VUE项目 高德地图使用热力图--实例
  13. Socket协议脚本编写
  14. excel画正态分布与T分布
  15. mysql数据库查询总条数
  16. 地图刷新 android,android – 如何刷新谷歌地图.
  17. java pfx 和cer_pfx证书和CER证书
  18. SingleShot姿态估计部署教程
  19. Python 编程笔记(本人出品,必属精品)
  20. 手机如何压缩照片?压缩方法分享

热门文章

  1. Redis 高级特性(1)—— 事务 过期时间 排序
  2. shell快速将同一名称的不同类型文件自动划分到一个文件中
  3. PyCharm_10个加速省时间技巧
  4. 残差复合正态分布的重要性
  5. 关于python 中的__future__模块
  6. 你了解计算机系统的层次结构吗?计算机语言怎么发展的?
  7. GOF23设计模式(创建型模式)建造者模式
  8. 目标检测推理部署:优化和部署
  9. [JAVAEE] 理解“自然模板“+使用 ModelAndView 对象
  10. python 删除字符串中重复的元素