大家好,又见面了,我是你们的朋友全栈君。如果您正在找激活码,请点击查看最新教程,关注关注公众号 “全栈程序员社区” 获取激活教程,可能之前旧版本教程已经失效.最新Idea2022.1教程亲测有效,一键激活。
Jetbrains全系列IDE稳定放心使用
电商网站的商品详情页系统架构
1 小型电商架构:
小型电商网站的页面展示采用页面全量静态化的思想。数据库中存放了所有的商品信息,页面静态化系统,将数据填充进静态模板中,形成静态化页面
推入 Nginx 服务器。用户浏览网站页面时,取用一个已经静态化好的 html 页面,例如freemarker,thymeleaf等,直接返回回去,不涉及任何的业务逻辑处理。
例如下面一个简单的魔板:
<html> <body> 商品名称:#{productName}<br> 商品价格:#{productPrice}<br> 商品描述:#{productDesc} </body> </html>
这个是一个非常简单的架构,当然也有公司使用,那么所有的数据直接走数据库了,造成问题,数据服务器压力比较大,
2 另外一种简单的小型电商架构:
这中是在上一种上面加入了redis缓存服务器,可以避免所有的服务直接打到数据库上面,可以减少服务的压力
以上两种架构总结:
对于小网站,页面很少,很实用,非常简单,Java 中可以使用 velocity、freemarker、thymeleaf 等等,然后做个 cms 页面内容管理系统,模板变更的时候,点击按钮或者系统自动化重新进行全量渲染,当然第二种的架构较之前更加服务的调用量更高。
坏处在于,仅仅适用于一些小型的网站,比如页面的规模在几十到几万不等。对于一些大型的电商网站,亿级数量的页面,你说你每次页面模板修改了,都需要将这么多页面全量静态化,靠谱吗?每次渲染花个好几天时间,那你整个网站就废掉了。
3 大型架构一:
用户浏览网页时,动态将 Nginx 本地数据渲染到本地 html 模板并返回给用户。
在这种架构下,我们需要保证系统的高可用性。
如果系统访问量很高,Nginx 本地缓存过期失效了,redis 中的缓存也被 LRU 算法给清理掉了,那么会有较高的访问量,从缓存服务调用商品服务。但如果此时商品服务的接口发生故障,调用出现了延时,缓存服务全部的线程都被这个调用商品服务接口给耗尽了,每个线程去调用商品服务接口的时候,都会卡住很长时间,后面大量的请求过来都会卡在那儿,此时缓存服务没有足够的线程去调用其它一些服务的接口,从而导致整个大量的商品详情页无法正常显示。
这其实就是一个商品接口服务故障导致缓存服务资源耗尽的现象。
其实这种也不是最好的.最大型还可以进行改进.
4大型架构二
这种是个人理解到三层缓存服务加es的商品信息服务,openrety代替nginx可以提高西能,可以采用lua拉去redis缓存中的数据进行缓存
redis分布式服务,当redis中没有的时候货redis服务崩了的时候,.就会去堆缓存中进行查询,只有整个服务挂了,那么对缓存才会出现问题,所以在这里是可以进行的
当被算法出去的时候,就会去es中查询商品详情,这样对最终的服务数据不会造成太多影响,没有服务直接打到数据库上面
转载于:https://www.cnblogs.com/xiufengchen/p/10749873.html
发布者:全栈程序员-用户IM,转载请注明出处:https://javaforall.cn/189124.html原文链接:https://javaforall.cn
【正版授权,激活自己账号】: Jetbrains全家桶Ide使用,1年售后保障,每天仅需1毛
【官方授权 正版激活】: 官方授权 正版激活 支持Jetbrains家族下所有IDE 使用个人JB账号...