常常碰到的需求就是,做一個(gè)網(wǎng)站,就這樣,和某某某一樣就行……
但是,這個(gè)需求可是真不簡(jiǎn)單,因?yàn)?,這個(gè)需求等于沒(méi)有需求,用戶量、并發(fā)度、頁(yè)面是否需要SEO、頁(yè)面兼容性、是否需要后臺(tái)管理、CDN緩存是否要上等等一概不知……
簡(jiǎn)而言之,無(wú)效需求……
網(wǎng)站,這件事可以很簡(jiǎn)單,也可以很復(fù)雜……
1. 簡(jiǎn)單網(wǎng)站
類型: 展示頁(yè),企業(yè)站點(diǎn),后端 訪問(wèn)要求不大,SEO要完善
架構(gòu)基本如下南寧網(wǎng)站建設(shè)
服務(wù)器 1 臺(tái),CDN可選,后臺(tái)語(yǔ)言推薦非阻塞的 nodejs,前端語(yǔ)言推薦原生 或 jQuery,CSS可以原生來(lái)寫(xiě), 也可以使用Bootstrap等CSS框架
數(shù)據(jù)庫(kù) 非事務(wù) mongodb /事務(wù) mysql或pssql
反向代理 + 負(fù)載均衡 nginx
緩存 redis
2. 中等復(fù)雜度網(wǎng)站
類型: 用戶頻繁訪問(wèn)的網(wǎng)站, 有一定的并發(fā)要求南寧安卓開(kāi)發(fā)
架構(gòu)基本如下:
服務(wù)器: 若干 數(shù)據(jù)服務(wù)器, 緩存服務(wù)器, 用戶認(rèn)證服務(wù)器, 業(yè)務(wù)服務(wù)器要分開(kāi)
后臺(tái)語(yǔ)言: Java Golang Python NodeJS
前端: 高業(yè)務(wù)型采用前端框架 vue react, 展示型 采用jQuery
數(shù)據(jù)庫(kù): 讀寫(xiě)分離, 主從分離, 分庫(kù)分表, NoSQL存儲(chǔ)數(shù)據(jù)
緩存: 良好設(shè)計(jì), 定時(shí)取熱數(shù)據(jù), 增加緩存命中率, 主從分離 Redis集群
消息隊(duì)列服務(wù): 解耦數(shù)據(jù)和行為 MQ, Kafka
日志收集及監(jiān)控服務(wù) flume ELK
3. 高復(fù)雜度網(wǎng)站
類型: 海量用戶訪問(wèn)網(wǎng)站, 數(shù)據(jù)庫(kù)并發(fā)壓力高, 事務(wù)復(fù)雜
架構(gòu)基本如下:
服務(wù)器: 多組服務(wù)器集群, 異地冷備, 同城熱備, AB測(cè)試無(wú)縫切換, 廣泛的負(fù)載均衡, 代碼Bug追蹤ID
后臺(tái)語(yǔ)言: 復(fù)雜多樣, 微服務(wù)化
前端: 和中等復(fù)雜度基本一致, 需要引入組件的全局狀態(tài)管理 redux vuex等機(jī)制
數(shù)據(jù)庫(kù): 多種存儲(chǔ)形式, 流式計(jì)算, 讀寫(xiě)分離, 主從分離, 分庫(kù)分表, NoSQL存儲(chǔ)數(shù)據(jù),大數(shù)據(jù)生態(tài)
消息隊(duì)列服務(wù)及日志收集服務(wù)
網(wǎng)站沒(méi)那么簡(jiǎn)單,web工程師共勉 ^_^