秒杀系统说了几次了,基本技术点都有所涉及。真正的要解决大流量分布式系统的时候,不是特别容易,就像CAP原则和BASE原则,没有最优的方案,只有最合适的。

页面静态化(一)

  • ① 技术方案
  1. 通过程序将动态页面抓取并保存为静态页面,这样的页面的实际存在于服务器的硬盘中
  2. 通过WEB服务器的 URL Rewrite的方式,它的原理是通过web服务器内部模块按一定规则将外部的URL请求转化为内部的文件地址,一句话来说就是把外部请求的静态地址转化为实际的动态页面地址,而静态页面实际是不存在的。这两种方法都达到了实现URL静态化的效果,但是也各有各自的特点。
  3. 还有一种是把页面划分成子数据块,每个数据块可能是一个inc文件,也可能多个数据块包含在一个inc文件中。具体的数据块划分根据页面的业务结构来处理。比如:网站头尾等公共数据块可以独立成一个文件。
  • ② 技术点

Freemaker,https://freemarker.apache.org/
非常明确的说明了FreeMarker是如何运作的。首先需要有一个template模板,在那里就是一堆的html标签和一些专属FreeMarker的标签,这些标签之后会被具体的数据代替。这些数据就是有左下的Java objects提供。就是工程中的Jar包。他把这些模板和Java objects的数据加工组合之后输出html页面。所以,FreeMarker的功能,就如官网中一直强调的,不是别的而是一个模板引擎。

通过工具的方式,模板讲动态的页面生成对应的静态页面。对于商品来说,上架审核的时候完成。

  • ③ 问题:如果商品很多一个一个生成html,是不是很麻烦,就算加入批量的话,还是有问题,分布式系统怎么办?freemark的效率不是特别的快?
  1. 写一个消息队列,发个消息把商品的ID发送到MQ队列中,这样每次收到队列消息就生成静态页面。
  2. 页面路径如果放入tomcat也是有问题的,tomcat可以承受1000个,在秒杀的时候都是在狂刷页面的,html直接扔到nginx上面去。如果tomcat可以承受1000个并发,那nginx可以承受1万个并发。
  3. 如果放入到nginx上,分布式系统岂不是每个nginx都放入生成的html静态文件,手工在一个一个放,人力成本开销太大了。使用mq,需要使用topic订阅的方式,让每个tomcat来进行处理。其实这样很占资源。
  4. 其实不如单独弄一个应用,接受mq的消息,不使用订阅方式,然后mq生成好的html往每个nginx上面去复制就可以了。
  5. 上面说的复制使用rsync,不要使用scp,rsync复制的是变化的文件,scp是全量复制。对于大量的静态文件下scp绝对是一种灾难。

静态资源优化(二)

  1. 从taobao或者京东上面下载的js,都是一行基本没办法看,其实就是做了一些压缩,一个是为了减少流量,二是加快页面的加载速度。
  2. css和js,类似jquery,echars下载了对应的jar包后,如果页面内有多个引入的项目内的js,就会造成每个页面都访问对应的js,可以通过webpack的方式将多个js合并到一起一个js。css合并到一起变成一个css,减少网络之间通信的次数。

CDN(三)

CDN的全称是Content Delivery Network,即内容分发网络。

  1. CDN其实就是在你家附近开个加油站,其实这个加油站得油,是自己拉了一个油管从到他们加油站的总公司,有了CDN你不用在跑10公里加油了,只用开1公里就可以加到油了。(就近分发)
  2. 在油管里面都是老油可能过期的油,总公司会给你家就近的加油站打电话,现在油管里面的油都是过期的,你必须把老油处理掉。(服务端通知CDN刷新缓存)。
  3. 每个油管跟总公司之前有很多油管,这些油管是有版本号的,总公司时刻通知加油站使用哪个油管来加油。(这个就是刷新的时候区分通过版本号的概念)

PS:秒杀系统不仅仅讲秒杀,主要是讲如何利用限流,缓存,异步分布式互联网大并发的场景。

软件架构-解密电商系统-页面静态化相关推荐

  1. 软件架构-解密电商系统营销-会员模块业务

    上次说了商品,商品分类,品牌,分类的属性,规格.很多电商网站例如:京东,国美,苏宁他们的商品都是存储在redis中的,通过请求获取到的redis进行js的渲染动态的展示商品的信息. (一)营销模块 营 ...

  2. 软件架构-解密电商系统-互联网BAT商品详情缓存架构

    上几节说了中小型电商公司,项目详情页的优化方案,一般是使用freemark模板生成了html静态页面,放到nginx或者tomcat中,但是肯定选择nginx的并发是tomcat的100倍,通过mq的 ...

  3. 解密电商系统-Spring boot快速开始及核心功能介绍(下)

    上次说了Spring boot快速开始及核心功能介绍,本次说说配置文件相关的. Spring Boot属性配置文件详解(一) 修改端口 # application.properties: server ...

  4. 解密电商系统-秒杀消息队列异步下单

    上几次主要说了高并发大流量项目所涉及到的技术点和技术方案,调优需要注意的一些参数,秒杀订单接口缓存的概念,通过redis的方式,redis需要进行原子性. 秒杀优化(一) 使用缓存可以大大的提高我们系 ...

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

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

  6. 电商详情页系统实战(2) -小型电商网站商品详情页的页面静态化架构及缺陷

    商品详情页的系统架构 => 缓存架构 => 高并发 => 高可用 电商网站里,大概可以说分成两种 小型电商 简单的一种架构方案,页面静态化的方案 大型电商 复杂的一套架构,大电商,国 ...

  7. CMS系统的页面静态化流程

    一.CMS系统的功能 CMS系统就是内容管理系统(Content Management System).就是管理网站展示内容的系统. 在传统的门户网站或电商网站开发中,我们需要频繁的修改前端展示的内容 ...

  8. 一个页面区分管理者和普通用户如何设计_电商系统:优惠券原型设计说明(二)...

    编辑导读:在整个产品发展的整个周期中,运营活动必不可少,而发放优惠券已成为运营活动的一种基本形式,而关于优惠券设计就尤为重要.本文作者分享了优惠券后台页面的相关设计步骤,推荐给对优惠券感兴趣的童鞋阅读 ...

  9. ASP.NET 权限管理 页面静态化 OA系统培训 三层架构

    白菜价, 想要的联系QQ:867635458,非诚勿扰! ASP.NET MVC Linq 技术  企业级通用OA系统  全程开发 大型企业级别OA项目实战全新上线啦!本项目由小孔子讲师全程录制.小孔 ...

最新文章

  1. 30个使用jQuery打造的世界级一流网站
  2. SQLSERVER中的ALL、PERCENT、CUBE关键字、ROLLUP关键字和GROUPING函数
  3. STL 之fill和fill_n
  4. python字母后移5位加密_LabView对字符串进行加密,规则是每个字母后移5位,例如A变为F,b变为g,x变为c,y变为d…...
  5. java模拟网易邮箱登录_求赐教:网易邮箱Web端模拟登录看信的加密参数_ntes_nnid、_ntes_nuid...
  6. hypermesh安装包百度云_新闻突然!全新百度网盘发布
  7. ubuntu16 kickstart pxe 安装系统
  8. mvc5 源码解析2-2 mvchandler的执行
  9. jsp做看板_DataGear 使用静态HTML模板快速制作数据可视化看板
  10. win10下Cmake(make-gui)下载与安装【详细】
  11. 通过第三方平台超级鹰进行登录页面验证码识别
  12. 使用短信接口进行通知
  13. 公众平台模板消息所在行业_微信公众号模板消息群发工具免费注册试用7天
  14. java 下划线 变量_Java数值类型变量带下划线
  15. 国际结算三大方式之一—信用证 Letter of Credit(L/C)
  16. QQ自由幻想刺客的属性点
  17. 程序员口中常说的“组件”是什么?简洁易懂
  18. 台式计算机提示电池低,台式机电脑电源供电不足怎么办 台式机电脑电源供电不足解决方法【详解】...
  19. crackme01——Acid_burn
  20. 2020java面试总结

热门文章

  1. mysql配置域名_bind+mysql域名解析的简单配置
  2. 移动元素(秋季每日一题 35)
  3. wireshark抓包对应xml文件解析
  4. Axure之实现页面的左右切换简单实例
  5. 如何读取、插入、更新xml文件
  6. python 之pyecharts画图:最全地图,词云图,世界地图,省份图,区县图
  7. PS图片变为黑白模式
  8. vb.net限制软件使用次数_小程序客服消息怎么使用、有没有什么限制?
  9. 埃拉托斯特尼筛法求质数
  10. 潍坊申报高新技术企业的税务优惠