前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >(2)商品模块---如何抗亿级流量访问

(2)商品模块---如何抗亿级流量访问

原创
作者头像
小时的棒棒糖
发布2023-09-27 23:54:49
2140
发布2023-09-27 23:54:49
举报

脱离业务场景的技术设计都是耍流氓

总体架构图:

商品详情页设计图
商品详情页设计图

前言:商品模块首要考虑的问题是商品详情页的访问流量,所以接下来主要考虑商品详情页的设计问题

商品页面展示的数据很多,主要是商品的基本信息,比如名称颜色,商品介绍页,还有图片和视频展示,最要命的是不同类的商品的参数不同,比如电脑有内存,显卡,CPU等参数,衣服有尺码,男女等参数,口红有色号等参数

1.选用什么样的数据结构存储不同品类各异的商品参数呢?

MongDB是面向文档的数据结构,很好的满足不同类型参数的数据结构,在Redis中可以使用哈希的数据结构缓存数据

这好比,直接把一坨json数据存到了MySQL的text列中非常不方便,存到MongoDB就方便很多,MongoDB支持按着属性查值,很好的满足了业务场景的需要,但是联表查询和事物就非常孱弱,不过没关系,配合存有商品基本信息的MySQL使用,返回给客户端,为了提高访问速度,用Redis的哈希结构作为缓存,减轻数据库压力

2.图片和视频怎么存储

图片和视频大文件需要存储在单独的服务器上,而不能存到数据库中,现在各大云厂商都很好的支持图片或者视频存储,称之为对象存储,比如国内的七牛云,aws的S3,功能强大,简单方便,只需要APP或者小程序或者浏览器请求到对象存储的API就能返回图片或者视频,而且支持缩放转码,是真香,更牛的是可以设置CDN加速,这样得到响应的速度更快了

3.静态页面怎么快速响应

静态页面起初是通过Tomcat动态响应返回给前端,但是越来越多的商品详情需要展示,一股脑给返回显然不太恰当,可用使用Nginx代理静态页面,而哪些动态的商品参数数据,则通过Ajax从后台服务获取数据(前面提到的Redis作为缓存),很快就能获取到数据,这样就只有商品的个性化数据才需要从后台服务获取,减少了带宽和节省了资源

总结:

为了抗住流量,商品的基本参数存数据库,扩展参数存MongoDB,视频和图片存云厂商的对象存储服务中并且加上CDN加速,静态的页面可以让Nginx代理也上CDN,商品的具体参数可以通过前端页面Ajax从后台的数据库和MOngoDB获取值,为了提高响应速度,可以加上Redis作为前置屏障,缓存的策略使用Cache Aside的方式维护缓存,整体下来,只有少部分的流量会打到后台的服务器

铺垫:

  1. Cache Aside,是最简单实用的一种缓存更新策略,适用范围

也最广泛。如果你要缓存数据,没有什么特殊的情况,首先就应该考虑使用这个策略。

2.CDN 内容分发服务 Content Delivery Network,这是麻省理工学院的学生搞出的一套东西,挺实用

我正在参与2023腾讯技术创作特训营第二期有奖征文,瓜分万元奖池和键盘手表

原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。

如有侵权,请联系 cloudcommunity@tencent.com 删除。

原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。

如有侵权,请联系 cloudcommunity@tencent.com 删除。

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 前言:商品模块首要考虑的问题是商品详情页的访问流量,所以接下来主要考虑商品详情页的设计问题
  • 1.选用什么样的数据结构存储不同品类各异的商品参数呢?
  • 2.图片和视频怎么存储
  • 3.静态页面怎么快速响应
  • 总结:
    • 铺垫:
    相关产品与服务
    内容分发网络 CDN
    内容分发网络(Content Delivery Network,CDN)通过将站点内容发布至遍布全球的海量加速节点,使其用户可就近获取所需内容,避免因网络拥堵、跨运营商、跨地域、跨境等因素带来的网络不稳定、访问延迟高等问题,有效提升下载速度、降低响应时间,提供流畅的用户体验。
    领券
    问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档