亚洲精品久久久久久第一页-人妻少妇精彩视品一区二区三区-91国产自拍免费视频-免费一级a在线播放视频正片-少妇天天日天天射天天爽-国产大屁股喷水视频在线观看-操美女骚穴抽插性爱视频-亚洲 欧美 中文字幕 丝袜-成人免费无码片在线观看

網(wǎng)站設(shè)計(jì)步驟和思路 大型網(wǎng)站結(jié)構(gòu)設(shè)計(jì)方案總結(jié)


網(wǎng)站設(shè)計(jì)步驟和思路 大型網(wǎng)站結(jié)構(gòu)設(shè)計(jì)方案總結(jié)

文章插圖
大型網(wǎng)站架構(gòu)設(shè)計(jì)是一個(gè)循序漸進(jìn)的過(guò)程,圍繞“性能、可用性、伸縮性、擴(kuò)展性、安全性”展開(kāi),下面是個(gè)人關(guān)于網(wǎng)站架構(gòu)方面的一些總結(jié),不到之處請(qǐng)大家多多批評(píng) 。
前端CDN加速:CSS/JS/圖片等靜態(tài)資源使用CDN加速,設(shè)置緩存時(shí)間、Referer限制(防盜鏈)等進(jìn)行流量?jī)?yōu)化;減少HTTP請(qǐng)求:將CSS/JS/圖片等靜態(tài)資源合并,可以利用webpack等前端構(gòu)建工具進(jìn)行處理啟用瀏覽器緩存和文件壓縮:壓縮圖片、JS/CSS混淆壓縮、Web服務(wù)器開(kāi)啟Gzip壓縮&設(shè)置文件expire緩存時(shí)間;異步加載:動(dòng)態(tài)接口通過(guò)Ajax異步加載,減少網(wǎng)絡(luò)請(qǐng)求(可以通過(guò)JSONP或者設(shè)置Access-Control-Allow-Origin進(jìn)行跨域);使用驗(yàn)證碼:使用短信或圖像驗(yàn)證碼,提高驗(yàn)證碼的復(fù)雜度及多樣性,緩解羊毛黨帶來(lái)的流量沖擊;減少Cookie傳輸:Cookie包含在每次請(qǐng)求和響應(yīng)中,太大的Cookie會(huì)嚴(yán)重影響數(shù)據(jù)傳輸,例如針對(duì)CDN采用獨(dú)立域名,可以減少靜態(tài)資源加載攜帶Cookie信息;緩存關(guān)于緩存,永遠(yuǎn)要記住二八定律:80%的業(yè)務(wù)訪問(wèn)集中在20%的數(shù)據(jù)上 。將熱點(diǎn)數(shù)據(jù)進(jìn)行緩存,可以降低網(wǎng)絡(luò)I/O和磁盤(pán)I/O,極大提升響應(yīng)速度,除了前端本地資源緩存外,服務(wù)端緩存常見(jiàn)做法如下:
頁(yè)面靜態(tài)化:緩存整個(gè)頁(yè)面,或者局部緩存,減少數(shù)據(jù)讀取和運(yùn)算頻率;數(shù)據(jù)緩存:充分利用NoSQL數(shù)據(jù)庫(kù),例如memcached、redis、mongodb等,可以部署集群或分布式緩存,提高緩存命中率,減少數(shù)據(jù)訪問(wèn)的壓力,可以進(jìn)行緩存預(yù)熱、預(yù)先加載熱點(diǎn)數(shù)據(jù),同時(shí)需要防止緩存穿透;消息隊(duì)列異步解耦:利用Httpsqs、RabbitMQ、Kafka等隊(duì)列或消息中間件,將耗時(shí)/非即時(shí)性操作通過(guò)隊(duì)列進(jìn)行異步處理,提高服務(wù)器響應(yīng)速度,以此降低對(duì)資源的并發(fā)訪問(wèn) 。遵循一個(gè)原則:任何可以晚點(diǎn)做的事情都應(yīng)該晚點(diǎn)再做 。削峰填谷:由于流量是波動(dòng)變化的,高峰和低谷差距很大,可以將一些操作存儲(chǔ)到MQ隊(duì)列中,消費(fèi)端通過(guò)拉取的方式,并且拉去速度有消費(fèi)端來(lái)控制,則就可以控制流量趨于平穩(wěn),達(dá)到了削峰填谷的目的,或者說(shuō)起到了流控的目標(biāo) 。數(shù)據(jù)庫(kù)使用緩存后,大部分?jǐn)?shù)據(jù)讀取操作都不用通過(guò)數(shù)據(jù)庫(kù)完成,但是在緩存不命中、緩存過(guò)期和全部的寫(xiě)操作時(shí)需要訪問(wèn)數(shù)據(jù)庫(kù) 。當(dāng)用戶(hù)達(dá)到一定規(guī)模后,數(shù)據(jù)庫(kù)會(huì)因?yàn)樨?fù)載壓力過(guò)高而成為瓶頸,常見(jiàn)做法如下:
讀寫(xiě)分離:利用Mysql主從復(fù)制機(jī)制搭建讀寫(xiě)分離集群,在客戶(hù)端實(shí)現(xiàn)或者服務(wù)端利用中間件(例如MyCAT)實(shí)現(xiàn)讀寫(xiě)分離;分庫(kù)分表:針對(duì)不同業(yè)務(wù)類(lèi)型,進(jìn)行分庫(kù),部署到不同服務(wù)器上,減少單服務(wù)器壓力,同時(shí)針對(duì)大表,根據(jù)一定條件(如用戶(hù)ID取模、ID范圍)進(jìn)行水平分表,減少單表讀寫(xiě)壓力;數(shù)據(jù)庫(kù)連接池:充分利用連接復(fù)用,解決數(shù)據(jù)庫(kù)連接過(guò)程需要占用資源,影響響應(yīng)速度等問(wèn)題,PHP本身沒(méi)有連接池,可以利用第三方框架實(shí)現(xiàn)(例如SMProxy);硬件優(yōu)化:利用磁盤(pán)陣列(RAID)提升數(shù)據(jù)可靠性,資金充足的話可以換SSD硬盤(pán);負(fù)載均衡業(yè)務(wù)拆分:根據(jù)URL拆分業(yè)務(wù),分發(fā)流量到不同的服務(wù)器組,防止單一功能模塊卡住,而影響整個(gè)業(yè)務(wù),主要遵循SOA的架構(gòu)思路,將業(yè)務(wù)模塊打散(雞蛋不要放在一個(gè)籃子里面)反向代理負(fù)載均衡:充分利用Nginx/Haproxy/LVS反向代理負(fù)載均衡,搭建服務(wù)器集群,提升并發(fā)處理能力;DNS負(fù)載均衡:DNS解析可以依據(jù)不同網(wǎng)絡(luò)運(yùn)營(yíng)商、地區(qū)進(jìn)行分別解析、從而實(shí)現(xiàn)DNS層面負(fù)載均衡;代碼多線程:充分利用多CPU優(yōu)勢(shì)進(jìn)行數(shù)據(jù)批處理鎖:在高并發(fā)情況下,對(duì)統(tǒng)一資源讀寫(xiě)訪問(wèn)容易出現(xiàn)臟讀、幻讀,這個(gè)時(shí)候需要對(duì)核心資源枷鎖,利用Redis或者Zookeeper等可以實(shí)現(xiàn)分布式鎖;設(shè)計(jì)模式:充分利用設(shè)計(jì)模式,實(shí)現(xiàn)邏輯解耦、分層和資源服用,例如單利模式、觀察者模式等;數(shù)據(jù)結(jié)構(gòu)和算法:好的數(shù)據(jù)結(jié)構(gòu)和算法可以給程序性能帶來(lái)很大提升、例如鏈表查找、快速排序等;垃圾回收:良好的編程習(xí)慣,例如即時(shí)清理內(nèi)存占用大的變量、避免操作的數(shù)據(jù)量大等都可以避免出現(xiàn)內(nèi)存泄漏(OOM)的情況發(fā)生 。SQL查詢(xún)優(yōu)化:SQL執(zhí)行效率一般是影響響應(yīng)速度的關(guān)鍵,可以開(kāi)啟SQL慢查詢(xún)?nèi)罩?,?duì)執(zhí)行效率慢的SQL語(yǔ)句進(jìn)行優(yōu)化;GIT多分支:良好的分支管理對(duì)于CI/CD、版本測(cè)試有很好的作用,建議參考git-flow進(jìn)行日常Git協(xié)作 。日志:統(tǒng)一的日志輸出標(biāo)準(zhǔn),有利于進(jìn)行數(shù)據(jù)追蹤和問(wèn)題排查 。冗余數(shù)據(jù)定期備份:定期全量備份+主從同步增量備份,例如MySQL/Redis主從復(fù)制進(jìn)行增量備份、Mysqldump全量備份、Redis利用RDB或者AOF進(jìn)行備份;集群:一定數(shù)量的備用服務(wù)器,可以保障系統(tǒng)的高可用,防止單點(diǎn)故障,可以結(jié)合Keepalived+LVS/HAProxy/Nginx等實(shí)現(xiàn)數(shù)據(jù)庫(kù)/Web服務(wù)器/緩存/消息中間件高可用集群;自動(dòng)化CI/CD:利用成熟的CI/CD機(jī)制實(shí)現(xiàn)自動(dòng)化測(cè)試、代碼檢測(cè),自動(dòng)化發(fā)布,例如可采用Git+Jenkins+Docker搭建CI/CD工作流 。自動(dòng)化部署:針對(duì)超過(guò)30臺(tái)的服務(wù)器部署,可以采用ansible進(jìn)行批量管理自動(dòng)監(jiān)控/報(bào)警:監(jiān)控用戶(hù)行為日志、服務(wù)器日志等,可結(jié)合zabbix+ELK進(jìn)行實(shí)施;自動(dòng)降級(jí)和資源調(diào)度:微服務(wù)架構(gòu)范疇,作者也在努力學(xué)習(xí)中 。安全二次驗(yàn)證:充分手機(jī)驗(yàn)證/人臉識(shí)別進(jìn)行二次驗(yàn)證,保障操作的真實(shí)性;web防火墻:傳統(tǒng)防火墻僅限于包過(guò)濾,網(wǎng)絡(luò)和端口地址轉(zhuǎn)換(NAT)和VPN等功能 。它根據(jù)端口,協(xié)議和IP地址做出決策;Web防火墻(WAF)則提供了HTTP/HTTPS訪問(wèn)請(qǐng)求監(jiān)控、自定義過(guò)濾規(guī)則、Web攻擊防護(hù)、安全合規(guī)等功能;可以利用阿里云等提供的WAF服務(wù)或者基于Nginx+lua等實(shí)現(xiàn)的類(lèi)似API網(wǎng)關(guān)實(shí)施類(lèi)似功能;內(nèi)外網(wǎng)隔斷:暴露出來(lái)的IP和端口越少,安全系數(shù)越高;例如數(shù)據(jù)庫(kù)服務(wù)、緩存服務(wù)、中間件等盡量只允許內(nèi)外訪問(wèn),如果確實(shí)需要可以通過(guò)路由轉(zhuǎn)發(fā)或反向代理實(shí)現(xiàn);數(shù)據(jù)加密:充分利用非對(duì)稱(chēng)加密,例如啟用https, rsa加密等,保障數(shù)據(jù)傳輸?shù)陌踩裕痪W(wǎng)絡(luò)攻擊:需要防止DDOS攻擊、XSS攻擊、SQL注入、CSRF等,常見(jiàn)手段CDN加速、高仿IP、Linux內(nèi)核優(yōu)化、數(shù)據(jù)輸入輸出過(guò)濾、Referer限制、表單添加隨機(jī)token/驗(yàn)證碼等;信息安全:對(duì)于垃圾信息、敏感信息可以采用第三方解決方案(例如網(wǎng)易云盾、百度AI等)對(duì)文本、圖片、音頻、視頻等進(jìn)行過(guò)濾和審核 。總結(jié)架構(gòu)的演變,遵循著”分層->分割->分布式”的思路不斷深入,是隨著業(yè)務(wù)的增長(zhǎng),不斷積累經(jīng)驗(yàn)、優(yōu)化、改良的過(guò)程 。業(yè)務(wù)發(fā)展是架構(gòu)發(fā)展的主要力量,架構(gòu)的核心價(jià)值是服務(wù)業(yè)務(wù)的靈活發(fā)展 。所有的架構(gòu)設(shè)計(jì)必須以了解業(yè)務(wù)特點(diǎn)作為出發(fā)點(diǎn),需要考慮互聯(lián)互通、負(fù)載均衡、網(wǎng)絡(luò)、開(kāi)發(fā)、緩存、存儲(chǔ)、數(shù)據(jù)庫(kù)、安全性等層面,這些層面看似一個(gè)整體,任何一個(gè)環(huán)節(jié)出問(wèn)題都可能導(dǎo)致整個(gè)崩潰,所以一個(gè)高可用、高并發(fā)的平臺(tái)還少不了監(jiān)控、開(kāi)發(fā)、運(yùn)維等角色通力協(xié)作 。


以上關(guān)于本文的內(nèi)容,僅作參考!溫馨提示:如遇健康、疾病相關(guān)的問(wèn)題,請(qǐng)您及時(shí)就醫(yī)或請(qǐng)專(zhuān)業(yè)人士給予相關(guān)指導(dǎo)!

「愛(ài)刨根生活網(wǎng)」www.malaban59.cn小編還為您精選了以下內(nèi)容,希望對(duì)您有所幫助: