你真的了解大型电商网站的页面静态化吗?
Posted IT技术思维
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了你真的了解大型电商网站的页面静态化吗?相关的知识,希望对你有一定的参考价值。
我们小伙伴们在访问淘宝、网易等大型网站时有没有考虑到,网站首页、商品详情页以及新闻详情页面是如何处理的?怎么能够支撑这么大流量的访问呢?
方案一:网页静态 HTML 化
管理后台调用新闻服务创建文章成功后,发送消息到消息队列
静态服务监听消息,把文章静态化,也就是生成html文件
在静态服务器上面安装一个文件同步工具,此工具的功能可以做到只同步有变动的文件,即做增量同步
通过同步工具把html文件同步到所有的web服务器上面
如果产品经理觉得新闻详情页面的布局要调整一下,现在的不够美观,或者加个其他模块,那就坑爹了
我们需要把所有的已经静态html化的文章全部重新静态化。这个是不现实的,因为像网易这么大的体量,新闻量是很大的,会被搞死。
会出现用户刚刚再看最新的新闻,刷新一下又不存在了。这个是因为同步工具在同步到web服务器是要有时间的,同步到web服务器A上面了,但web服务器B还没有来得及同步。
用户在访问的时候通过nginx进行负载均衡,随机把请求分配给web服务器的导致的。当然可以调整nginx负载均衡策略去解决。
这个是很明显的问题,html文件会越来越多,对存储空间要求很大,而且每台web服务器都一样,浪费磁盘空间;将来迁移维护也会带来很大的麻烦。
因为文件一旦多之后,同步工具稳定性就出现了问题
方案二:伪静态化
管理后台调用新闻服务创建文章成功后,发送消息到消息队列
缓存服务监听消息,把文章内容缓存到缓存服务器上面
用户发起请求,web服务器根据id,直接查询缓存服务器
获取数据返回给用户
网页布局样式维护成本比较高,因为此方案照样是把所有的内容放到了缓存中,如果需要修改布局,需要重新设置缓存。
分布式缓存压力比较大,一旦缓存故障就导致所有请求会查询数据库,导致系统崩溃
方案三:布局样式模板化
应用层Nginx
应用层nginx通过lua脚本语言先获取本地商品数据,然后和http模板进行渲染,形成最终商品详情页返回给用户
如果应用层nginx本地的缓存没有此商品数据,就通过lua脚本发起http请求访问web服务器,获取商品数据。
web服务器会向redis或本机的ehcache请求商品数据(这里涉及三级缓存概念),如果存在此商品数据,直接返回给用户;如果不存在则请求微服务访问数据库
分发层 Ngnix
方案三是比较完整的方案,很多大厂都在使用,能够承受亿级流量,但系统比较复杂。
如果对实时性要求不高,布局样式调整不频繁,可以考虑方案二,系统比较简单
来源:
https://www.toutiao.com/i6671093883025228301/?group_id=6671093883025228301
本文版权归作者所有
以上是关于你真的了解大型电商网站的页面静态化吗?的主要内容,如果未能解决你的问题,请参考以下文章