日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問(wèn) 生活随笔!

生活随笔

當(dāng)前位置: 首頁(yè) > 人文社科 > 生活经验 >内容正文

生活经验

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

發(fā)布時(shí)間:2023/11/27 生活经验 27 豆豆
生活随笔 收集整理的這篇文章主要介紹了 商品详细信息的代码html_电商网站的商品详情页系统架构 小編覺(jué)得挺不錯(cuò)的,現(xiàn)在分享給大家,幫大家做個(gè)參考.

小型電商網(wǎng)站的商品詳情頁(yè)系統(tǒng)架構(gòu)

小型電商網(wǎng)站的頁(yè)面展示采用頁(yè)面全量靜態(tài)化的思想。數(shù)據(jù)庫(kù)中存放了所有的商品信息,頁(yè)面靜態(tài)化系統(tǒng),將數(shù)據(jù)填充進(jìn)靜態(tài)模板中,形成靜態(tài)化頁(yè)面,推入 Nginx 服務(wù)器。用戶瀏覽網(wǎng)站頁(yè)面時(shí),取用一個(gè)已經(jīng)靜態(tài)化好的 html 頁(yè)面,直接返回回去,不涉及任何的業(yè)務(wù)邏輯處理。

下面是頁(yè)面模板的簡(jiǎn)單 Demo 。

  商品名稱:#{productName}
商品價(jià)格:#{productPrice}
商品描述:#{productDesc}

這樣做,好處在于,用戶每次瀏覽一個(gè)頁(yè)面,不需要進(jìn)行任何的跟數(shù)據(jù)庫(kù)的交互邏輯,也不需要執(zhí)行任何的代碼,直接返回一個(gè) html 頁(yè)面就可以了,速度和性能非常高。

對(duì)于小網(wǎng)站,頁(yè)面很少,很實(shí)用,非常簡(jiǎn)單,Java 中可以使用 velocity、freemarker、thymeleaf 等等,然后做個(gè) cms 頁(yè)面內(nèi)容管理系統(tǒng),模板變更的時(shí)候,點(diǎn)擊按鈕或者系統(tǒng)自動(dòng)化重新進(jìn)行全量渲染。

壞處在于,僅僅適用于一些小型的網(wǎng)站,比如頁(yè)面的規(guī)模在幾十到幾萬(wàn)不等。對(duì)于一些大型的電商網(wǎng)站,億級(jí)數(shù)量的頁(yè)面,你說(shuō)你每次頁(yè)面模板修改了,都需要將這么多頁(yè)面全量靜態(tài)化,靠譜嗎?每次渲染花個(gè)好幾天時(shí)間,那你整個(gè)網(wǎng)站就廢掉了。

大型電商網(wǎng)站的商品詳情頁(yè)系統(tǒng)架構(gòu)

大型電商網(wǎng)站商品詳情頁(yè)的系統(tǒng)設(shè)計(jì)中,當(dāng)商品數(shù)據(jù)發(fā)生變更時(shí),會(huì)將變更消息壓入 MQ 消息隊(duì)列中。緩存服務(wù)從消息隊(duì)列中消費(fèi)這條消息時(shí),感知到有數(shù)據(jù)發(fā)生變更,便通過(guò)調(diào)用數(shù)據(jù)服務(wù)接口,獲取變更后的數(shù)據(jù),然后將整合好的數(shù)據(jù)推送至 redis 中。Nginx 本地緩存的數(shù)據(jù)是有一定的時(shí)間期限的,比如說(shuō) 10 分鐘,當(dāng)數(shù)據(jù)過(guò)期之后,它就會(huì)從 redis 獲取到最新的緩存數(shù)據(jù),并且緩存到自己本地。

用戶瀏覽網(wǎng)頁(yè)時(shí),動(dòng)態(tài)將 Nginx 本地?cái)?shù)據(jù)渲染到本地 html 模板并返回給用戶。

雖然沒(méi)有直接返回 html 頁(yè)面那么快,但是因?yàn)閿?shù)據(jù)在本地緩存,所以也很快,其實(shí)耗費(fèi)的也就是動(dòng)態(tài)渲染一個(gè) html 頁(yè)面的性能。如果 html 模板發(fā)生了變更,不需要將所有的頁(yè)面重新靜態(tài)化,也不需要發(fā)送請(qǐng)求,沒(méi)有網(wǎng)絡(luò)請(qǐng)求的開(kāi)銷,直接將數(shù)據(jù)渲染進(jìn)最新的 html 頁(yè)面模板后響應(yīng)即可。

在這種架構(gòu)下,我們需要保證系統(tǒng)的高可用性。

如果系統(tǒng)訪問(wèn)量很高,Nginx 本地緩存過(guò)期失效了,redis 中的緩存也被 LRU 算法給清理掉了,那么會(huì)有較高的訪問(wèn)量,從緩存服務(wù)調(diào)用商品服務(wù)。但如果此時(shí)商品服務(wù)的接口發(fā)生故障,調(diào)用出現(xiàn)了延時(shí),緩存服務(wù)全部的線程都被這個(gè)調(diào)用商品服務(wù)接口給耗盡了,每個(gè)線程去調(diào)用商品服務(wù)接口的時(shí)候,都會(huì)卡住很長(zhǎng)時(shí)間,后面大量的請(qǐng)求過(guò)來(lái)都會(huì)卡在那兒,此時(shí)緩存服務(wù)沒(méi)有足夠的線程去調(diào)用其它一些服務(wù)的接口,從而導(dǎo)致整個(gè)大量的商品詳情頁(yè)無(wú)法正常顯示。

這其實(shí)就是一個(gè)商品接口服務(wù)故障導(dǎo)致緩存服務(wù)資源耗盡的現(xiàn)象。

總結(jié)

以上是生活随笔為你收集整理的商品详细信息的代码html_电商网站的商品详情页系统架构的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問(wèn)題。

如果覺(jué)得生活随笔網(wǎng)站內(nèi)容還不錯(cuò),歡迎將生活随笔推薦給好友。