動(dòng)靜分離架構(gòu),究竟是啥?
前兩天簡單介紹了“前臺(tái)與后臺(tái)分離”的架構(gòu)設(shè)計(jì)準(zhǔn)則,又有水友提問:能不能順帶介紹下“動(dòng)靜分離”的架構(gòu)設(shè)計(jì)準(zhǔn)則呢?今天花1分鐘簡單說說。
什么是動(dòng)靜分離架構(gòu)設(shè)計(jì)準(zhǔn)則?
動(dòng)靜分離是指,靜態(tài)頁面與動(dòng)態(tài)頁面解耦分離,用不同系統(tǒng)承載對應(yīng)流量的架構(gòu)設(shè)計(jì)方法。
什么是靜態(tài)頁面?
靜態(tài)頁面,是指互聯(lián)網(wǎng)架構(gòu)中,幾乎不變的頁面(或者變化頻率很低),例如:
- 首頁等html頁面
- js/css等樣式文件
- jpg/apk等資源文件
靜態(tài)頁面,有與之匹配的技術(shù)架構(gòu)來加速,例如:
- CDN
- nginx
- squid/varnish
什么是動(dòng)態(tài)頁面?
動(dòng)態(tài)頁面,是指互聯(lián)網(wǎng)架構(gòu)中,不同用戶不同場景訪問,都不一樣的頁面,例如:
- 百度搜索結(jié)果頁
- 淘寶商品列表頁
- 速運(yùn)個(gè)人訂單中心頁
這些頁面,不同用戶,不同場景訪問,大都會(huì)動(dòng)態(tài)生成不同的頁面。
動(dòng)態(tài)頁面,有與之匹配的技術(shù)架構(gòu),例如:
- 分層架構(gòu)
- 服務(wù)化架構(gòu)
- 數(shù)據(jù)庫,緩存架構(gòu)
架構(gòu)上,如何實(shí)施動(dòng)靜分離架構(gòu)?
靜態(tài)頁面與動(dòng)態(tài)頁面解耦分離,用不同系統(tǒng)承載對應(yīng)流量的架構(gòu),如下圖所示。
- 靜態(tài)頁面訪問路徑短,訪問速度快,幾毫秒
- 動(dòng)態(tài)頁面訪問路徑長,訪問速度相對較慢(數(shù)據(jù)庫的訪問,網(wǎng)絡(luò)傳輸,業(yè)務(wù)邏輯計(jì)算),幾十毫秒甚至幾百毫秒,對架構(gòu)擴(kuò)展性的要求更高
- 靜態(tài)頁面與動(dòng)態(tài)頁面以不同域名區(qū)分
既然靜態(tài)頁面訪問快,動(dòng)態(tài)頁面生成慢,有沒有可能,將原本需要?jiǎng)討B(tài)生成的站點(diǎn)提前生成好,使用靜態(tài)頁面加速技術(shù)來訪問呢?
可以,這就是互聯(lián)網(wǎng)架構(gòu)中的“頁面靜態(tài)化”優(yōu)化技術(shù)。
什么是頁面靜態(tài)化技術(shù)?
舉個(gè)栗子,如下圖,58同城的帖子詳情頁,原本是需要?jiǎng)討B(tài)生成的:
- 端訪問/detail/12348888x.shtml 詳情頁;
- web-server層從RESTful接口中,解析出帖子id是12348888;
- service通過DAO層拼裝SQL,訪問數(shù)據(jù)庫;
- 最終獲取數(shù)據(jù),拼裝html返回瀏覽器;
而“頁面靜態(tài)化”是指,將帖子ID為12348888的帖子12348888x.shtml提前生成好,由靜態(tài)頁面相關(guān)加速技術(shù)來加速:
這樣的話,將極大提升訪問速度,減少訪問時(shí)間,提高用戶體驗(yàn)。
頁面靜態(tài)化,適合什么業(yè)務(wù)場景?
一切脫離業(yè)務(wù)的架構(gòu)設(shè)計(jì)都是耍流氓,并不是所有的業(yè)務(wù)場景都適合頁面靜態(tài)化,濫用該技術(shù),反而會(huì)降低系統(tǒng)性能。
頁面靜態(tài)化,適用于:總數(shù)據(jù)量不大,生成靜態(tài)頁面數(shù)量不多的業(yè)務(wù)。
舉一些栗子:
- 快狗打車的城市頁只有幾百個(gè),就可以用這個(gè)優(yōu)化,只需提前生成幾百個(gè)城市的“靜態(tài)化頁面”即可;
- 一些二手車業(yè)務(wù),只有幾萬量二手車庫存,也可以提前生成這幾萬量二手車的靜態(tài)頁面;
- 像58同城這樣的信息模式業(yè)務(wù),有幾十億的帖子量,就不太適合于靜態(tài)化(碎片文件多,反而訪問慢);
簡單總結(jié)
- 動(dòng)靜分離是指,靜態(tài)頁面與動(dòng)態(tài)頁面解耦分離,用不同系統(tǒng)承載流量的架構(gòu)設(shè)計(jì)方法;
- “頁面靜態(tài)化”是一種將原本需要?jiǎng)討B(tài)生成的站點(diǎn)提前生成靜態(tài)站點(diǎn)的優(yōu)化技術(shù);
- 總數(shù)據(jù)量不大,生成靜態(tài)頁面數(shù)量不多的業(yè)務(wù),非常適合于“頁面靜態(tài)化”優(yōu)化;
一分鐘不長,希望大伙有收獲。
【本文為51CTO專欄作者“58沈劍”原創(chuàng)稿件,轉(zhuǎn)載請聯(lián)系原作者】