網(wǎng)站性能檢測評分
注:本網(wǎng)站頁面html檢測工具掃描網(wǎng)站中存在的基本問題,僅供參考。
大型網(wǎng)站項目優(yōu)化
大型商業(yè)網(wǎng)站建設(shè)知識-網(wǎng)站運(yùn)營優(yōu)化常識 運(yùn)營視頻課程
隨之大型商業(yè)網(wǎng)站平臺不斷興起,凸顯優(yōu)化需求和數(shù)據(jù)額前沿效果,成為實現(xiàn)轉(zhuǎn)化和滿足自然排名推廣的途徑,對具有遠(yuǎn)瞻的企業(yè)來講,商業(yè)性網(wǎng)站并非著力于眼前,而是競技策略,畢竟小型網(wǎng)站短期能獲利,同大企業(yè)營銷戰(zhàn)略來說,略顯微薄,通過網(wǎng)站優(yōu)化常識分析網(wǎng)站建設(shè)知識!
大型商業(yè)網(wǎng)站建設(shè)知識:
1、行業(yè)及頁面的優(yōu)化基礎(chǔ)考慮
畢竟網(wǎng)站所涉含的欄目和產(chǎn)品多樣化,要通過什么樣的SEO手法,從多維度去維系海量長尾詞和關(guān)鍵詞上排名,從而獲取大量真實用戶流量,打造平臺生態(tài)化基礎(chǔ)。
2、網(wǎng)站建設(shè)運(yùn)營初期籌劃
其中對崗位的設(shè)置,人員技術(shù)水平的提升,資源的投入份額,以及合理的經(jīng)營目標(biāo),都視為大型商業(yè)網(wǎng)站建設(shè)后,網(wǎng)站運(yùn)營優(yōu)化需具備的前提。
3、互聯(lián)網(wǎng)市場分析及鎖定用戶
商業(yè)平臺網(wǎng)站定位是提供什么行業(yè)信息服務(wù)、生活服務(wù)、還是其他?擬訂周期性目標(biāo)。
(1)分析市場環(huán)境:競爭對手情況分析,包含:市場份額、內(nèi)容特征、網(wǎng)站競爭力強(qiáng)弱、品牌優(yōu)勢等。
(2)市場營銷機(jī)會:從網(wǎng)站的經(jīng)營理念到自身實力做對分析,平臺的優(yōu)勢和自身現(xiàn)有條件下,可實現(xiàn)的定位和優(yōu)勢,若只是人力上的優(yōu)勢,就不算得是優(yōu)勢。
(3)服務(wù)定位分析:什么是免費(fèi)服務(wù)、什么是收費(fèi)服務(wù)、什么是增值服務(wù),具體服務(wù)類別以及詳細(xì)服務(wù)內(nèi)容,通過服務(wù)對網(wǎng)站進(jìn)行整改,滿足消費(fèi)心理。
(4)關(guān)鍵詞挖掘:模擬用戶搜索習(xí)慣和搜索量,分批整理和排除不必要的關(guān)鍵詞,做好梯度上詞。
(5)頁面布局:對大型商業(yè)平臺網(wǎng)站而言,長尾詞分布、規(guī)劃及拓展面,為網(wǎng)站運(yùn)營優(yōu)化做好詞排名基礎(chǔ)建設(shè)。
(6)用戶消費(fèi)分析:分析用戶消費(fèi)能力,按照不同梯度進(jìn)行不同的策略定制,對企業(yè)和個人消費(fèi)都存在不同程度的策略定制。
4、大型商業(yè)網(wǎng)站優(yōu)化運(yùn)營計劃
(1)制作詳細(xì)的運(yùn)營推廣進(jìn)度表,通過對具體的人員、任務(wù)安排、完成度、時間周期,做一個較為完善的衡量標(biāo)準(zhǔn),并且針對于周期性計劃,落實到每天來進(jìn)行完成。
5、商業(yè)型網(wǎng)站運(yùn)營內(nèi)容
(1)站內(nèi)優(yōu)化
(2)站外推廣
(3)內(nèi)容營銷
(4)框架完善
大型網(wǎng)站SEO基礎(chǔ)系列 – 多維度導(dǎo)航優(yōu)化 SEO視頻課程
對于企業(yè)網(wǎng)站來說,尤其是電商網(wǎng)站或者分類網(wǎng)站,常會使用多維度導(dǎo)航的結(jié)構(gòu),這種結(jié)構(gòu)能幫助用戶更好地篩選出所需要的結(jié)果。然而對SEO來說,卻是個噩夢,我之前服務(wù)過的客戶,經(jīng)常有由于多維導(dǎo)航而導(dǎo)致的數(shù)以百萬計的篩選頁面鏈接產(chǎn)生,而且還是可抓取可收錄的,
之前有不少帖子深入研究過這個問題,這篇文章介紹了多維導(dǎo)航對SEO的具體影響(https://moz/blog/building-faceted-navigation-that-doesnt-suck),我也寫過一篇文章http://86i87/2013/06/21/crawler-resource-distribution/
本文想解決的是把梳理這一類現(xiàn)象,并且給出對應(yīng)的解決方案。我們面對的核心問題其實是:“有哪些方法可以影響Google對頁面的抓取和收錄,以及這些方法的優(yōu)缺點(diǎn)是什么?”
簡要回顧多維度導(dǎo)航
一句話概括,多維度導(dǎo)航是指網(wǎng)頁上存在根據(jù)一系列屬性(屬性之間無明顯相關(guān)性)篩選結(jié)果的導(dǎo)航形式。以下圖為例,通過處理器類型、屏幕分辨率、外殼顏色等不同屬性來挑選筆記本電腦,這樣的展現(xiàn)方式就是多維度導(dǎo)航
由于每種可能的排列組合屬性的方式都會生成一種URL,多維度導(dǎo)航給SEO帶來了幾個問題
1.產(chǎn)生了大量的重復(fù)內(nèi)容
2.消耗了有限的爬蟲資源,而且返回給搜索引擎錯誤的信號
3.稀釋了鏈接權(quán)重,同時鏈接權(quán)重傳遞給了本不該獲得權(quán)重的頁面。
來點(diǎn)具體的案例
看看一些多維度導(dǎo)航在網(wǎng)站上具體實施的例子以及對SEO的影響,你就知道為何要重視這個問題了。
Macy’s
在Google上搜索“site:https://macys/ black dresses”, Macys網(wǎng)站上符合這個條件的商品有1991個,然而Google卻收錄了12000多個頁面。原因在于多維度導(dǎo)航設(shè)置的缺陷,可以從SEO的角度修復(fù)
Home Depot
再來看看Home Depot這個網(wǎng)站,搜索外開門會找到8930個頁面,真的有必要讓搜索引擎收錄這么多相似產(chǎn)品的篩選頁面嗎?其實未必,當(dāng)然也可以通過下面介紹的方法修復(fù)這個問題。
對于大型電商網(wǎng)站來說,這樣的情況還真不少,我想說的是,其實這些網(wǎng)站在多維度導(dǎo)航這件事上還可以做得更阿基SEO友好一點(diǎn)。
多維度導(dǎo)航SEO解決方案
解決這個問題,首先要明確哪些內(nèi)容需要被收錄,哪些則是要避免收錄的,以及如何達(dá)成這兩個目的、我們來看看咱們手頭都有哪些武器?
“Noindex, follow”
Noindex標(biāo)簽是大多數(shù)人首先想到的方案,該標(biāo)簽唯一的作用就是告訴爬蟲別收錄這個頁面,因此對避免收錄這個目的來說相當(dāng)有用。
不過,雖然使用Noindex標(biāo)簽可以有效減少重復(fù)頁面收錄,但仍然會消耗爬蟲資源,以及這些重復(fù)頁面會接受鏈接權(quán)重,因此有效頁面能獲得的權(quán)重就會減少。
操作實例: 以上文提到的Macys網(wǎng)站為例,如果想收錄“black dresses”頁面,但是不想收錄“100元以內(nèi)的black dress”頁面,在后面的篩選頁面里面添加noindex標(biāo)簽就可以了。不過爬蟲資源和鏈接資源的消耗是無法規(guī)避的。
Canonicalization
使用Canonical標(biāo)簽也是常見的應(yīng)對方法。Canonical標(biāo)簽的意義在于告訴Google爬蟲這一類頁面相似度很高,只需要抓取網(wǎng)站返回給你的標(biāo)準(zhǔn)版頁面就可以啦。Canonical標(biāo)簽的設(shè)計初衷就是為了解決重復(fù)內(nèi)容的問題,而且鏈接權(quán)重也會被集中到標(biāo)準(zhǔn)版頁面,看起來是個不錯的方案。
可惜的是,Google爬蟲的爬行資源還是會被消耗。
操作實例: /black-dresses?under-100/ 可以設(shè)置canoncial的URL指向 /black-dresses/.既解決了重復(fù)問題,又解決了鏈接權(quán)重分散的問題。
Robots.txt屏蔽
禁止爬蟲抓取這部分篩選頁面當(dāng)然也很有效。好處是:速度快,操作方便,并可以自定義拼比頁面。不過還是會有不好的影響:首先屏蔽之后,鏈接權(quán)重就好像被黑洞吸進(jìn)去一樣,徹底沒有了;另外,有的時候Google也不會遵守Robots協(xié)議。比如下圖,就是被Robots屏蔽的頁面依然會展現(xiàn)在搜索結(jié)果里。
操作實例: 在Robots.txt中disallow *?under-100* .可以杜絕Google訪問任何包含under-100參數(shù)的頁面,然而如果有其他鏈接指向這類URL,Google仍然會收錄。
“Nofollow” 不想收錄的鏈接
可以通過Nofollow多維度導(dǎo)航鏈接來解決抓取資源消耗的問題,可惜的是,nofollow標(biāo)簽也無法徹底解決問題,這些重復(fù)頁面依然會被收錄,同時鏈接權(quán)重也依然會丟失。
操作實例: 給指向不想被收錄的頁面的內(nèi)部鏈接都加上nofollow標(biāo)簽,意思就是告訴Google別去抓這些頁面啦,抓點(diǎn)別的內(nèi)容更好。
一起解決以上所有問題
首先,如果導(dǎo)航結(jié)構(gòu)還沒上線的話,我強(qiáng)烈建議通過不改變URL的方式實現(xiàn)多維度導(dǎo)航(多數(shù)通過js腳本實現(xiàn)),這樣既不妨礙用戶體驗,又不會生成多個URL??上б灿袉栴}:有一些核心導(dǎo)航也能有被收錄的價值,還是得給這類頁面做入口。
下面這張表格也許能看得更清楚一些:
解決方案是否解決重復(fù)內(nèi)容問題?是否解決爬蟲資源問題?是否解決鏈接權(quán)重傳遞問題?是否允許外部鏈接傳遞權(quán)重?是否允許內(nèi)部鏈接權(quán)重轉(zhuǎn)移?備注
“Noindex, follow”YesNoNoYesYes
CanonicalizationYesNoYesYesYes只能用于相似頁面
Robots.txtYesYesNoNoNoRobots屏蔽的頁面仍然有可能被收錄
NofollowNoYesNoYesNo
JavaScriptYesYesYesYesYes投入更多技術(shù)資源
所以有完美的解決方案嗎?
首先,并沒有一勞永逸的方案,完美的做法應(yīng)該是以上方案的有機(jī)結(jié)合。下面這個例子也許適用于大多數(shù)網(wǎng)站,但是更重要的是了解自己網(wǎng)站的結(jié)構(gòu)和問題所在,再給出針對性的方案。
制定方案之前先問自己一個問題,對你的網(wǎng)站來說,爬蟲的抓取資源和鏈接權(quán)重哪個更加重要?不同答案意味著不同的做法。
例如:不在乎鏈接權(quán)重的損失,只想更好地分配爬蟲的抓取資源,我會建議這樣做:
1.目錄頁、子目錄可以保留目前的可抓取狀態(tài)( /clothing/, /clothing/womens/, /clothing/womens/dresses/類似這樣的地址)
2.對單個目錄頁而言,只允許帶一個篩選條件的URL被訪問
a. 對包含一個及以上篩選條件的頁面,該頁面上的篩選鏈接都加上nofollow屬性(比如/clothing/womens/dresses?color=black/)
b.對包含兩個及以上篩選條件的頁面,同時添加Noindex標(biāo)簽(比如/clothing/womens/dresses?color=black?brand=express?/)
3.評估一下那些篩選條件對SEO有利(例如顏色和品牌名),把這些篩選條件加入白名單,做到可被搜索引擎抓取和收錄
4.正確設(shè)置canonical 和 rel=prev/next 標(biāo)簽(可參考這篇文章http://gsqi/marketing-blog/how-to-set-up-pagination-rel-next-prev/)
上述做法可以逐漸緩解多維度導(dǎo)航給網(wǎng)站帶來的問題,另外這個方案結(jié)合了集中不同的處理方法,包含了nofollow,noindex,canonical標(biāo)簽的組合使用,以獲得更好的效果。
其他注意事項
有兩點(diǎn)需要單獨(dú)拎出來說一下
面包屑很有用
如果在目錄頁/子目錄頁沒有面包屑導(dǎo)航, 就是給自己挖了個深坑。因為對于結(jié)構(gòu)復(fù)雜的網(wǎng)站來說,面包屑是幫助爬蟲理清網(wǎng)站結(jié)構(gòu)最好的工具。
固定好URL中的篩選參數(shù)
某些情況下,有的網(wǎng)站篩選條件選擇的順序不一樣,也會產(chǎn)生不同的URL,這樣會讓重復(fù)頁面成倍增長,所以請務(wù)必寫死篩選條件的排序。
總結(jié)
希望這篇文章能給你更多改善多維度導(dǎo)航,提升搜索表現(xiàn)的想法,其實主要就下面幾點(diǎn):
1.多維度導(dǎo)航用戶體驗很好,但是往往不利于SEO
2.多維度導(dǎo)航對SEO影響最大的點(diǎn)在于:重復(fù)內(nèi)容、抓取資源浪費(fèi)、鏈接權(quán)重不能有效傳遞
3.最核心的問題是:如何控制Google的爬行和收錄?
4.沒有萬能的解決方案,好的做法是組合以下工具:noindex,follow;canonical;robots文件;nofollow;ajax/js.
5.設(shè)計解決方案的前提是對鏈接權(quán)重和爬蟲資源有個優(yōu)先級的判斷。
阿里P8十年架構(gòu)經(jīng)驗,兩千字一張圖,透析大型網(wǎng)站技術(shù)架構(gòu) 行業(yè)視頻課程
1 架構(gòu)演化
大型網(wǎng)站的關(guān)注指標(biāo)
高可用
高性能
易擴(kuò)展
可伸縮
安全
大型網(wǎng)站的特點(diǎn)
高并發(fā),大流量
高可用
海量數(shù)據(jù)
用戶分布廣泛,網(wǎng)絡(luò)情況復(fù)雜
安全環(huán)境惡劣
需求快速變更,發(fā)布頻繁
漸進(jìn)式發(fā)展
大型網(wǎng)站架構(gòu)演化發(fā)展過程
初始階段,多使用LAMP來搭建,All In One即所有資源存放在一臺服務(wù)器上
應(yīng)用服務(wù)和數(shù)據(jù)服務(wù)分離,有獨(dú)立的數(shù)據(jù)庫服務(wù)器
使用緩存改善網(wǎng)站性能(依據(jù)是二八定律:80%的業(yè)務(wù)訪問集中在20%的數(shù)據(jù)上)
這里需要考慮哪些數(shù)據(jù)適合緩存
緩存可以是本地緩存,也可以是遠(yuǎn)程分布式緩存
需要考慮使用合理的緩存策略,防止透傳
使用應(yīng)用服務(wù)器集群改善網(wǎng)站的并發(fā)處理能力
如果能通過增加一臺服務(wù)器的方式來改善負(fù)載壓力,就可以以同樣的方式持續(xù)增加服務(wù)器來不斷改善系統(tǒng)性能,從而實現(xiàn)系統(tǒng)的可伸縮性
這里需要考慮使用哪些負(fù)載均衡的策略
數(shù)據(jù)庫讀寫分離
可以利用主流數(shù)據(jù)庫提供的主從熱備功能,通過配置兩臺數(shù)據(jù)庫的主從關(guān)系,同時業(yè)內(nèi)也有很多優(yōu)秀的開源中間件如Atlas
緩存中的數(shù)據(jù),如果更新過快,那么會持續(xù)刷新緩存,從而降低性能
使用反向代理和CDN加速網(wǎng)絡(luò)響應(yīng)
CDN和反向代理的基本原理都是緩存
CDN部署在網(wǎng)絡(luò)提供商的機(jī)房,用戶在請求網(wǎng)絡(luò)服務(wù)時,可以從距離自己最近的網(wǎng)絡(luò)提供商機(jī)房獲取數(shù)據(jù)
反向代理部署在網(wǎng)站的中心機(jī)房,當(dāng)用戶的請求到達(dá)中心機(jī)房后,首先訪問的服務(wù)器是反向代理服務(wù)器,如果反向代理服務(wù)器中緩存著用戶請求的資源,那么就將其直接返回給用戶
CDN的重點(diǎn):——《大型網(wǎng)站系統(tǒng)與Java中間件實踐》
全局調(diào)度
緩存技術(shù)
內(nèi)容分發(fā)
帶寬優(yōu)化
使用分布式文件系統(tǒng)和分布式數(shù)據(jù)庫系統(tǒng)
網(wǎng)站常用的數(shù)據(jù)庫拆分手段是業(yè)務(wù)分庫,即將不同業(yè)務(wù)的數(shù)據(jù)庫部署到不同的物理服務(wù)器上
使用NoSQL和搜索引擎
ES
MongoDB
業(yè)務(wù)拆分,使用分而治之的手段將整個網(wǎng)站業(yè)務(wù)分成不同的產(chǎn)品線
SOA、服務(wù)化
中心化的 gataway方式
消息隊列
不同服務(wù)訪問同一個DB等
這部分十分重要,道理很簡單,但是執(zhí)行起來的效果千差萬別。
當(dāng)下火熱的微服務(wù),也是基于這種思想。
技術(shù)實現(xiàn)方式也有很多
分布式服務(wù)
大型網(wǎng)站架構(gòu)演化的價值觀
網(wǎng)站的價值在于它能為用戶提供什么價值,在于網(wǎng)站能做什么,而不在于它是怎么做的。因此對于小型網(wǎng)站來說,最需要做的是位用戶提供好的服務(wù)來創(chuàng)造價值,得到用戶的認(rèn)可,從而活下去,野蠻生長。
大型網(wǎng)站架構(gòu)技術(shù)的核心價值是隨網(wǎng)站所需靈活應(yīng)對, 它是一個演化的過程
驅(qū)動大型網(wǎng)站技術(shù)發(fā)展的主要力量是網(wǎng)站的業(yè)務(wù)發(fā)展,是業(yè)務(wù)成就了技術(shù),而不是相反。因此要摒棄為了技術(shù)而技術(shù)的套路
網(wǎng)站架構(gòu)設(shè)計誤區(qū)
一味追求大公司的解決方案
為了技術(shù)而技術(shù)
企圖用技術(shù)解決所有問題
2 架構(gòu)模式
分層,這是在橫向方向?qū)ο到y(tǒng)進(jìn)行切分
分層的挑戰(zhàn)在于必須合理規(guī)劃層次邊界和接口
分層包括物理分層和邏輯分層兩種
分割,這是在縱向方向?qū)ο到y(tǒng)進(jìn)行切分
將不同的功能和服務(wù)分割開來,包裝秤高內(nèi)聚低耦合的模塊單元
分布式
1) 分布式應(yīng)用和服務(wù);
2) 分布式靜態(tài)資源;
3) 分布式數(shù)據(jù)和存儲;
4) 分布式計算;
5) 分布式配置、分布式鎖、分布式文件系統(tǒng)。。。
1) 分布式意味著服務(wù)調(diào)用必須通過網(wǎng)絡(luò),需要考慮帶寬的影響;
2) 服務(wù)器越多,宕機(jī)的概率越大
分層和分割的目的在于小模塊便于分布式部署
帶來的問題:
常用的分布式方案:
集群,即多臺服務(wù)器部署相同的應(yīng)用,從而構(gòu)成一個集群,通過負(fù)載均衡設(shè)備共同對外提供服務(wù)
即使訪問量很小的分布式應(yīng)用和服務(wù),也至少要部署到兩臺服務(wù)器來構(gòu)成一個小集群,這樣可以提高系統(tǒng)的可用性
緩存,即將數(shù)據(jù)放在距離計算最近的位置以加快處理速度
CDN
反向代理
本地緩存
分布式緩存
異步,業(yè)務(wù)之間的消息傳遞不是同步調(diào)用,而是將一個業(yè)務(wù)操作分成多個階段,每個階段之間通過共享數(shù)據(jù)的方法異步進(jìn)行協(xié)作
1) 提高系統(tǒng)可用性;
2) 加快網(wǎng)站響應(yīng)速度;
3) 消除并發(fā)訪問高峰
通常需要使用消息隊列
帶來的好處:
冗余
集群帶來的必然結(jié)果
安全需求的必然結(jié)果
自動化,DevOps思維,盡量減少人工干預(yù)
自動化發(fā)布
自動化代碼管理
自動化測試
自動化安全監(jiān)測
自動化部署
自動化監(jiān)控
自動化報警
自動化失效轉(zhuǎn)移、恢復(fù)
自動化分配資源
......
安全
3 大型網(wǎng)站核心架構(gòu)要素
性能
一個性能問題可能會導(dǎo)致網(wǎng)站用戶嚴(yán)重流失
衡量性能的指標(biāo):響應(yīng)時間、TPS、系統(tǒng)性能計數(shù)器等
可用性
沒有網(wǎng)站可以完美的7*24運(yùn)行
網(wǎng)站高可用結(jié)構(gòu)的前提是必然會出現(xiàn)服務(wù)器宕機(jī),兒高可用設(shè)計的目標(biāo)是當(dāng)服務(wù)器宕機(jī)時,服務(wù)或者應(yīng)用依然可用
必要的手段是集群,即冗余
伸縮性,即通過不斷向集群中加入服務(wù)器的手段來環(huán)節(jié)不斷上升的用戶并發(fā)訪問壓力和不斷增長的數(shù)據(jù)存儲需求
衡量標(biāo)準(zhǔn):是否可以構(gòu)建集群;是否可以方便的向集群中添加新的服務(wù)器
擴(kuò)展性,直接關(guān)注網(wǎng)站的功能,保證可以快速響應(yīng)需求變更
衡量標(biāo)準(zhǔn): 網(wǎng)站增加新的業(yè)務(wù)產(chǎn)品時,是否對現(xiàn)有業(yè)務(wù)透明無影響
安全性
衡量標(biāo)準(zhǔn): 針對現(xiàn)存和潛在的各種攻擊和竊密手段,是否可以有效的應(yīng)對
4 瞬時響應(yīng) - 網(wǎng)站的高性能架構(gòu)
不同視角下的網(wǎng)站性能
用戶視角
主要是端到端的感覺
主要通過前段優(yōu)化的手段來提升用戶體驗
開發(fā)人員視角
主要關(guān)注應(yīng)用程序本身以及相關(guān)子系統(tǒng)的性能,包括響應(yīng)延遲、系統(tǒng)吞吐量、并發(fā)處理能力、系統(tǒng)穩(wěn)定性等
主要優(yōu)化手段: 使用緩存加速數(shù)據(jù)讀取、使用集群提高吞吐能力、使用異步消息加快請求響應(yīng)、使用代碼優(yōu)化提升程序性能
運(yùn)維人員視角
主要關(guān)注基礎(chǔ)設(shè)施性能和資源利用率
主要優(yōu)化手段: 建設(shè)優(yōu)化骨干網(wǎng)、使用高性價比定制服務(wù)器、利用虛擬化技術(shù)優(yōu)化資源利用率
性能測試指標(biāo)
響應(yīng)時間,即應(yīng)用執(zhí)行一個操作需要的時間,包括從發(fā)出請求開始到收到最后響應(yīng)數(shù)據(jù)所需要的時間
并發(fā)數(shù),即系統(tǒng)能夠同時處理的請求的數(shù)目,也反映了系統(tǒng)的負(fù)載特性
吞吐量,即單位時間內(nèi)系統(tǒng)處理的請求數(shù)量,體現(xiàn)系統(tǒng)的整理處理能力
性能計數(shù)器, 描述服務(wù)器或者操作系統(tǒng)性能的一些數(shù)據(jù)指標(biāo)
性能測試方法
性能測試,以系統(tǒng)設(shè)計初期規(guī)劃的性能指標(biāo)為預(yù)期目標(biāo),對系統(tǒng)不斷增壓,驗證系統(tǒng)在資源可接受范圍內(nèi),是否能達(dá)到性能預(yù)期
負(fù)載測試,對系統(tǒng)不斷的增加并發(fā)請求,知道系統(tǒng)的某項或者多項性能指標(biāo)達(dá)到安全臨界值
壓力測試,超過安全負(fù)載的情況下,繼續(xù)對系統(tǒng)增壓,直到系統(tǒng)崩潰或者不能再處理任何請求
穩(wěn)定性測試,在特定硬件、軟件、網(wǎng)絡(luò)情況下,給系統(tǒng)加載一定壓力,是系統(tǒng)運(yùn)行較長一段時間,來觀察系統(tǒng)是否穩(wěn)定
Web前端優(yōu)化
瀏覽器訪問優(yōu)化
減少http請求
使用瀏覽器緩存
啟用壓縮
CSS放在頁面最上面,JavaScript放在頁面最下面
減少Cookie傳輸
CDN加速
反向代理
應(yīng)用服務(wù)器性能優(yōu)化
分布式緩存
一般會使用消息隊列,帶來的額外好處是會削平峰值
1)不同的緩存服務(wù)器之間進(jìn)行通信,例如JBoss Cache;
2)不同緩存服務(wù)器之間不進(jìn)行通信,例如Memcached
緩存從本質(zhì)上來說,就是一個內(nèi)存hash表
緩存需要緩存那些讀寫比很高、很少變化的數(shù)據(jù),一般來說讀寫比在2:1以上時,緩存才有意義
應(yīng)用程序讀取數(shù)據(jù)時,首先到緩存中讀取,如果緩存不存在或者已失效,再訪問數(shù)據(jù)庫,同時將新的數(shù)據(jù)放入緩存
緩存也需要注意緩存熱點(diǎn)數(shù)據(jù)
緩存預(yù)熱,在新啟動的緩存系統(tǒng)中,在啟動時就加載熱點(diǎn)數(shù)據(jù),這樣啟動后就可以直接使用
緩存穿透, 應(yīng)用持續(xù)大量訪問不存在的數(shù)據(jù),因為這類數(shù)據(jù)不存在于緩存中,因此會大量訪問數(shù)據(jù)庫,從而降低性能
對于分布式緩存來說,目前有兩類:
異步操作
使用集群
代碼優(yōu)化
多線程
1) 將對象設(shè)計成無狀態(tài)對象;
2) 使用局部對象;
3) 并發(fā)訪問資源時使用鎖
需要注意線程安全問題,方法:
資源復(fù)用
主要是單例和資源池(對象池)
數(shù)據(jù)結(jié)構(gòu),選擇合適的算法
垃圾回收
合理設(shè)置垃圾回收策略
存儲性能優(yōu)化
機(jī)械硬盤 vs 固態(tài)硬盤
B+樹 vs LSM樹
RAID vs HDFS
5 萬無一失 - 網(wǎng)站的高可用架構(gòu)
網(wǎng)站可用性度量
網(wǎng)站不可用時間 = 故障修復(fù)時間點(diǎn) - 故障發(fā)現(xiàn)時間點(diǎn)
網(wǎng)站年度可用性指標(biāo) = (1 - 網(wǎng)站不可用時間/年度總時間)* 100%
一般以幾個9來表示,2個9是基本可用,網(wǎng)站年度不可用時間小于88小時;3個9是較高可用,網(wǎng)站年度不可用時間小于9小時;4個9是具有自動恢復(fù)能力的高可用,網(wǎng)站年度不可用時間小于53分鐘;5個9是極高可用性,網(wǎng)站年度不可用時間小于5分鐘
網(wǎng)站高可用架構(gòu)的設(shè)計目標(biāo)是保證服務(wù)器硬件故障時服務(wù)依然可用、數(shù)據(jù)依然保存并能夠被訪問
網(wǎng)站高可用架構(gòu)的主要手段:數(shù)據(jù)和服務(wù)的冗余備份以及失效轉(zhuǎn)移,一旦服務(wù)器宕機(jī),就將服務(wù)切換至其他可用的服務(wù)器上。
高可用的應(yīng)用
無狀態(tài)應(yīng)用: 應(yīng)用服務(wù)器不保存業(yè)務(wù)的上下文信息,而僅根據(jù)每次請求提交的數(shù)據(jù)進(jìn)行相應(yīng)的業(yè)務(wù)邏輯處理,多個服務(wù)實例之間完全對等,請求提交到任何一個服務(wù)器上,處理的結(jié)構(gòu)都是相同的。
通過負(fù)載均衡進(jìn)行無狀態(tài)服務(wù)的失效轉(zhuǎn)移
負(fù)載均衡: 主要使用在業(yè)務(wù)量和數(shù)據(jù)量較高的情況下,當(dāng)單臺服務(wù)器不足以承擔(dān)所有的負(fù)載壓力時,通過負(fù)載均衡手段,將流量和數(shù)據(jù)分?jǐn)偟揭粋€集群組成的多臺服務(wù)器上, 以提升整體的負(fù)載處理能力
應(yīng)用服務(wù)器集群的Session管理
Session復(fù)制
Session綁定
利用Cookie記錄Session
Session服務(wù)器
高可用的服務(wù)
分級管理
核心服務(wù)與非核心服務(wù)隔離
核心服務(wù)優(yōu)先使用高性能服務(wù)器
超時設(shè)置
異步調(diào)用
必須滿足可以使用異步調(diào)用方式
服務(wù)降級
冪等性設(shè)計
服務(wù)高可用(高可靠)一直是美團(tuán)外賣的第一要求,為了提高可用性,做了很多策略,包括并不限于上文提出的各種架構(gòu)設(shè)計方案。
其實造成線上問題的很大一部分原因是由于發(fā)版造成的,也體現(xiàn)出了SOP的重要性。
關(guān)于降級與依賴隔離,可以考慮采用Hystrix實現(xiàn)自動降級與依賴隔離 。
高可用的數(shù)據(jù)
數(shù)據(jù)一旦出現(xiàn)問題,對于網(wǎng)站往往是毀滅性的打擊,因此保護(hù)網(wǎng)站的數(shù)據(jù)就是保護(hù)企業(yè)的命脈。
主要手段:數(shù)據(jù)備份和失效轉(zhuǎn)移
緩存服務(wù)高可用
觀點(diǎn)一:緩存服務(wù)已經(jīng)承擔(dān)了業(yè)務(wù)中絕大多數(shù)的數(shù)據(jù)讀取訪問,因此需要同樣保證高可用
觀點(diǎn)二:緩存服務(wù)并不是數(shù)據(jù)存儲服務(wù),出現(xiàn)服務(wù)不可用導(dǎo)致數(shù)據(jù)丟失應(yīng)從別的手段解決,而不是提高緩存服務(wù)本身高可用
緩存服務(wù)器集群中單機(jī)故障,集群規(guī)模較大時,數(shù)據(jù)丟失比例和數(shù)據(jù)負(fù)載壓力影響很小。
CAP原理: 一個提供數(shù)據(jù)服務(wù)的存儲系統(tǒng)無法同時滿足數(shù)據(jù)一致性(Consistency)、數(shù)據(jù)可用性(Availibility)、分區(qū)耐受性(Parition Tolerance)這三個條件
數(shù)據(jù)高可用含義:
副本間數(shù)據(jù)一致
多個副本可讀
同時寫入數(shù)據(jù)副本
1)數(shù)據(jù)持久性
2)數(shù)據(jù)可訪問性
3)數(shù)據(jù)一致性
數(shù)據(jù)一致性分類:
1) 數(shù)據(jù)強(qiáng)一致;
2) 數(shù)據(jù)用戶一致;
3) 數(shù)據(jù)最終一致
數(shù)據(jù)備份
1) 異步熱備;
2) 同步熱備
冷備的優(yōu)點(diǎn)是簡單和廉價,成本和技術(shù)難度較低,缺點(diǎn)是不能保證數(shù)據(jù)最終一致
熱備分為兩種:
失效轉(zhuǎn)移
1) 心跳檢測(Keepalived、Heartbeat);
2) 應(yīng)用程序訪問失敗報告
失效確認(rèn):
訪問轉(zhuǎn)移
數(shù)據(jù)恢復(fù)
高可用網(wǎng)站的軟件質(zhì)量保證
網(wǎng)站發(fā)布,它的過程和服務(wù)器宕機(jī)效果箱單,其對系統(tǒng)可用性的影響也 類似
一般采取批量更新的方式進(jìn)行,不會一次關(guān)掉集群中的全部服務(wù)器
自動化測試
一般使用Selenium來進(jìn)行測試
預(yù)發(fā)布驗證
預(yù)發(fā)布服務(wù)器是一種特殊用途的服務(wù)器,它和線上的正式服務(wù)器唯一的區(qū)別是沒有配置在負(fù)載均衡服務(wù)器上,外部用戶無法訪問
代碼控制
主干開發(fā),分支發(fā)布
分支開發(fā),主干發(fā)布,這是目前使用的主流方式
自動化發(fā)布
火車模型:將每個應(yīng)用的發(fā)布過程看做一次火車旅程,火車定點(diǎn)運(yùn)行,期間有若干站點(diǎn),每一站都進(jìn)行例行檢查,不通過的項目下車,通過的項目繼續(xù)坐著火車旅行,直到火車到達(dá)終點(diǎn)。
實際中,可能所有項目在途中都下車了,這樣火車不得不回到原點(diǎn),等待?...
阿里P8十年架構(gòu)經(jīng)驗,兩千字一張圖,透析大型網(wǎng)站技術(shù)架構(gòu) 行業(yè)視頻課程
1 架構(gòu)演化
大型網(wǎng)站的關(guān)注指標(biāo)
高可用
高性能
易擴(kuò)展
可伸縮
安全
大型網(wǎng)站的特點(diǎn)
高并發(fā),大流量
高可用
海量數(shù)據(jù)
用戶分布廣泛,網(wǎng)絡(luò)情況復(fù)雜
安全環(huán)境惡劣
需求快速變更,發(fā)布頻繁
漸進(jìn)式發(fā)展
大型網(wǎng)站架構(gòu)演化發(fā)展過程
初始階段,多使用LAMP來搭建,All In One即所有資源存放在一臺服務(wù)器上
應(yīng)用服務(wù)和數(shù)據(jù)服務(wù)分離,有獨(dú)立的數(shù)據(jù)庫服務(wù)器
使用緩存改善網(wǎng)站性能(依據(jù)是二八定律:80%的業(yè)務(wù)訪問集中在20%的數(shù)據(jù)上)
這里需要考慮哪些數(shù)據(jù)適合緩存
緩存可以是本地緩存,也可以是遠(yuǎn)程分布式緩存
需要考慮使用合理的緩存策略,防止透傳
使用應(yīng)用服務(wù)器集群改善網(wǎng)站的并發(fā)處理能力
如果能通過增加一臺服務(wù)器的方式來改善負(fù)載壓力,就可以以同樣的方式持續(xù)增加服務(wù)器來不斷改善系統(tǒng)性能,從而實現(xiàn)系統(tǒng)的可伸縮性
這里需要考慮使用哪些負(fù)載均衡的策略
數(shù)據(jù)庫讀寫分離
可以利用主流數(shù)據(jù)庫提供的主從熱備功能,通過配置兩臺數(shù)據(jù)庫的主從關(guān)系,同時業(yè)內(nèi)也有很多優(yōu)秀的開源中間件如Atlas
緩存中的數(shù)據(jù),如果更新過快,那么會持續(xù)刷新緩存,從而降低性能
使用反向代理和CDN加速網(wǎng)絡(luò)響應(yīng)
CDN和反向代理的基本原理都是緩存
CDN部署在網(wǎng)絡(luò)提供商的機(jī)房,用戶在請求網(wǎng)絡(luò)服務(wù)時,可以從距離自己最近的網(wǎng)絡(luò)提供商機(jī)房獲取數(shù)據(jù)
反向代理部署在網(wǎng)站的中心機(jī)房,當(dāng)用戶的請求到達(dá)中心機(jī)房后,首先訪問的服務(wù)器是反向代理服務(wù)器,如果反向代理服務(wù)器中緩存著用戶請求的資源,那么就將其直接返回給用戶
CDN的重點(diǎn):——《大型網(wǎng)站系統(tǒng)與Java中間件實踐》
全局調(diào)度
緩存技術(shù)
內(nèi)容分發(fā)
帶寬優(yōu)化
使用分布式文件系統(tǒng)和分布式數(shù)據(jù)庫系統(tǒng)
網(wǎng)站常用的數(shù)據(jù)庫拆分手段是業(yè)務(wù)分庫,即將不同業(yè)務(wù)的數(shù)據(jù)庫部署到不同的物理服務(wù)器上
使用NoSQL和搜索引擎
ES
MongoDB
業(yè)務(wù)拆分,使用分而治之的手段將整個網(wǎng)站業(yè)務(wù)分成不同的產(chǎn)品線
SOA、服務(wù)化
中心化的 gataway方式
消息隊列
不同服務(wù)訪問同一個DB等
這部分十分重要,道理很簡單,但是執(zhí)行起來的效果千差萬別。
當(dāng)下火熱的微服務(wù),也是基于這種思想。
技術(shù)實現(xiàn)方式也有很多
分布式服務(wù)
大型網(wǎng)站架構(gòu)演化的價值觀
網(wǎng)站的價值在于它能為用戶提供什么價值,在于網(wǎng)站能做什么,而不在于它是怎么做的。因此對于小型網(wǎng)站來說,最需要做的是位用戶提供好的服務(wù)來創(chuàng)造價值,得到用戶的認(rèn)可,從而活下去,野蠻生長。
大型網(wǎng)站架構(gòu)技術(shù)的核心價值是隨網(wǎng)站所需靈活應(yīng)對, 它是一個演化的過程
驅(qū)動大型網(wǎng)站技術(shù)發(fā)展的主要力量是網(wǎng)站的業(yè)務(wù)發(fā)展,是業(yè)務(wù)成就了技術(shù),而不是相反。因此要摒棄為了技術(shù)而技術(shù)的套路
網(wǎng)站架構(gòu)設(shè)計誤區(qū)
一味追求大公司的解決方案
為了技術(shù)而技術(shù)
企圖用技術(shù)解決所有問題
2 架構(gòu)模式
分層,這是在橫向方向?qū)ο到y(tǒng)進(jìn)行切分
分層的挑戰(zhàn)在于必須合理規(guī)劃層次邊界和接口
分層包括物理分層和邏輯分層兩種
分割,這是在縱向方向?qū)ο到y(tǒng)進(jìn)行切分
將不同的功能和服務(wù)分割開來,包裝秤高內(nèi)聚低耦合的模塊單元
分布式
1) 分布式應(yīng)用和服務(wù);
2) 分布式靜態(tài)資源;
3) 分布式數(shù)據(jù)和存儲;
4) 分布式計算;
5) 分布式配置、分布式鎖、分布式文件系統(tǒng)。。。
1) 分布式意味著服務(wù)調(diào)用必須通過網(wǎng)絡(luò),需要考慮帶寬的影響;
2) 服務(wù)器越多,宕機(jī)的概率越大
分層和分割的目的在于小模塊便于分布式部署
帶來的問題:
常用的分布式方案:
集群,即多臺服務(wù)器部署相同的應(yīng)用,從而構(gòu)成一個集群,通過負(fù)載均衡設(shè)備共同對外提供服務(wù)
即使訪問量很小的分布式應(yīng)用和服務(wù),也至少要部署到兩臺服務(wù)器來構(gòu)成一個小集群,這樣可以提高系統(tǒng)的可用性
緩存,即將數(shù)據(jù)放在距離計算最近的位置以加快處理速度
CDN
反向代理
本地緩存
分布式緩存
異步,業(yè)務(wù)之間的消息傳遞不是同步調(diào)用,而是將一個業(yè)務(wù)操作分成多個階段,每個階段之間通過共享數(shù)據(jù)的方法異步進(jìn)行協(xié)作
1) 提高系統(tǒng)可用性;
2) 加快網(wǎng)站響應(yīng)速度;
3) 消除并發(fā)訪問高峰
通常需要使用消息隊列
帶來的好處:
冗余
集群帶來的必然結(jié)果
安全需求的必然結(jié)果
自動化,DevOps思維,盡量減少人工干預(yù)
自動化發(fā)布
自動化代碼管理
自動化測試
自動化安全監(jiān)測
自動化部署
自動化監(jiān)控
自動化報警
自動化失效轉(zhuǎn)移、恢復(fù)
自動化分配資源
......
安全
3 大型網(wǎng)站核心架構(gòu)要素
性能
一個性能問題可能會導(dǎo)致網(wǎng)站用戶嚴(yán)重流失
衡量性能的指標(biāo):響應(yīng)時間、TPS、系統(tǒng)性能計數(shù)器等
可用性
沒有網(wǎng)站可以完美的7*24運(yùn)行
網(wǎng)站高可用結(jié)構(gòu)的前提是必然會出現(xiàn)服務(wù)器宕機(jī),兒高可用設(shè)計的目標(biāo)是當(dāng)服務(wù)器宕機(jī)時,服務(wù)或者應(yīng)用依然可用
必要的手段是集群,即冗余
伸縮性,即通過不斷向集群中加入服務(wù)器的手段來環(huán)節(jié)不斷上升的用戶并發(fā)訪問壓力和不斷增長的數(shù)據(jù)存儲需求
衡量標(biāo)準(zhǔn):是否可以構(gòu)建集群;是否可以方便的向集群中添加新的服務(wù)器
擴(kuò)展性,直接關(guān)注網(wǎng)站的功能,保證可以快速響應(yīng)需求變更
衡量標(biāo)準(zhǔn): 網(wǎng)站增加新的業(yè)務(wù)產(chǎn)品時,是否對現(xiàn)有業(yè)務(wù)透明無影響
安全性
衡量標(biāo)準(zhǔn): 針對現(xiàn)存和潛在的各種攻擊和竊密手段,是否可以有效的應(yīng)對
4 瞬時響應(yīng) - 網(wǎng)站的高性能架構(gòu)
不同視角下的網(wǎng)站性能
用戶視角
主要是端到端的感覺
主要通過前段優(yōu)化的手段來提升用戶體驗
開發(fā)人員視角
主要關(guān)注應(yīng)用程序本身以及相關(guān)子系統(tǒng)的性能,包括響應(yīng)延遲、系統(tǒng)吞吐量、并發(fā)處理能力、系統(tǒng)穩(wěn)定性等
主要優(yōu)化手段: 使用緩存加速數(shù)據(jù)讀取、使用集群提高吞吐能力、使用異步消息加快請求響應(yīng)、使用代碼優(yōu)化提升程序性能
運(yùn)維人員視角
主要關(guān)注基礎(chǔ)設(shè)施性能和資源利用率
主要優(yōu)化手段: 建設(shè)優(yōu)化骨干網(wǎng)、使用高性價比定制服務(wù)器、利用虛擬化技術(shù)優(yōu)化資源利用率
性能測試指標(biāo)
響應(yīng)時間,即應(yīng)用執(zhí)行一個操作需要的時間,包括從發(fā)出請求開始到收到最后響應(yīng)數(shù)據(jù)所需要的時間
并發(fā)數(shù),即系統(tǒng)能夠同時處理的請求的數(shù)目,也反映了系統(tǒng)的負(fù)載特性
吞吐量,即單位時間內(nèi)系統(tǒng)處理的請求數(shù)量,體現(xiàn)系統(tǒng)的整理處理能力
性能計數(shù)器, 描述服務(wù)器或者操作系統(tǒng)性能的一些數(shù)據(jù)指標(biāo)
性能測試方法
性能測試,以系統(tǒng)設(shè)計初期規(guī)劃的性能指標(biāo)為預(yù)期目標(biāo),對系統(tǒng)不斷增壓,驗證系統(tǒng)在資源可接受范圍內(nèi),是否能達(dá)到性能預(yù)期
負(fù)載測試,對系統(tǒng)不斷的增加并發(fā)請求,知道系統(tǒng)的某項或者多項性能指標(biāo)達(dá)到安全臨界值
壓力測試,超過安全負(fù)載的情況下,繼續(xù)對系統(tǒng)增壓,直到系統(tǒng)崩潰或者不能再處理任何請求
穩(wěn)定性測試,在特定硬件、軟件、網(wǎng)絡(luò)情況下,給系統(tǒng)加載一定壓力,是系統(tǒng)運(yùn)行較長一段時間,來觀察系統(tǒng)是否穩(wěn)定
Web前端優(yōu)化
瀏覽器訪問優(yōu)化
減少http請求
使用瀏覽器緩存
啟用壓縮
CSS放在頁面最上面,JavaScript放在頁面最下面
減少Cookie傳輸
CDN加速
反向代理
應(yīng)用服務(wù)器性能優(yōu)化
分布式緩存
一般會使用消息隊列,帶來的額外好處是會削平峰值
1)不同的緩存服務(wù)器之間進(jìn)行通信,例如JBoss Cache;
2)不同緩存服務(wù)器之間不進(jìn)行通信,例如Memcached
緩存從本質(zhì)上來說,就是一個內(nèi)存hash表
緩存需要緩存那些讀寫比很高、很少變化的數(shù)據(jù),一般來說讀寫比在2:1以上時,緩存才有意義
應(yīng)用程序讀取數(shù)據(jù)時,首先到緩存中讀取,如果緩存不存在或者已失效,再訪問數(shù)據(jù)庫,同時將新的數(shù)據(jù)放入緩存
緩存也需要注意緩存熱點(diǎn)數(shù)據(jù)
緩存預(yù)熱,在新啟動的緩存系統(tǒng)中,在啟動時就加載熱點(diǎn)數(shù)據(jù),這樣啟動后就可以直接使用
緩存穿透, 應(yīng)用持續(xù)大量訪問不存在的數(shù)據(jù),因為這類數(shù)據(jù)不存在于緩存中,因此會大量訪問數(shù)據(jù)庫,從而降低性能
對于分布式緩存來說,目前有兩類:
異步操作
使用集群
代碼優(yōu)化
多線程
1) 將對象設(shè)計成無狀態(tài)對象;
2) 使用局部對象;
3) 并發(fā)訪問資源時使用鎖
需要注意線程安全問題,方法:
資源復(fù)用
主要是單例和資源池(對象池)
數(shù)據(jù)結(jié)構(gòu),選擇合適的算法
垃圾回收
合理設(shè)置垃圾回收策略
存儲性能優(yōu)化
機(jī)械硬盤 vs 固態(tài)硬盤
B+樹 vs LSM樹
RAID vs HDFS
5 萬無一失 - 網(wǎng)站的高可用架構(gòu)
網(wǎng)站可用性度量
網(wǎng)站不可用時間 = 故障修復(fù)時間點(diǎn) - 故障發(fā)現(xiàn)時間點(diǎn)
網(wǎng)站年度可用性指標(biāo) = (1 - 網(wǎng)站不可用時間/年度總時間)* 100%
一般以幾個9來表示,2個9是基本可用,網(wǎng)站年度不可用時間小于88小時;3個9是較高可用,網(wǎng)站年度不可用時間小于9小時;4個9是具有自動恢復(fù)能力的高可用,網(wǎng)站年度不可用時間小于53分鐘;5個9是極高可用性,網(wǎng)站年度不可用時間小于5分鐘
網(wǎng)站高可用架構(gòu)的設(shè)計目標(biāo)是保證服務(wù)器硬件故障時服務(wù)依然可用、數(shù)據(jù)依然保存并能夠被訪問
網(wǎng)站高可用架構(gòu)的主要手段:數(shù)據(jù)和服務(wù)的冗余備份以及失效轉(zhuǎn)移,一旦服務(wù)器宕機(jī),就將服務(wù)切換至其他可用的服務(wù)器上。
高可用的應(yīng)用
無狀態(tài)應(yīng)用: 應(yīng)用服務(wù)器不保存業(yè)務(wù)的上下文信息,而僅根據(jù)每次請求提交的數(shù)據(jù)進(jìn)行相應(yīng)的業(yè)務(wù)邏輯處理,多個服務(wù)實例之間完全對等,請求提交到任何一個服務(wù)器上,處理的結(jié)構(gòu)都是相同的。
通過負(fù)載均衡進(jìn)行無狀態(tài)服務(wù)的失效轉(zhuǎn)移
負(fù)載均衡: 主要使用在業(yè)務(wù)量和數(shù)據(jù)量較高的情況下,當(dāng)單臺服務(wù)器不足以承擔(dān)所有的負(fù)載壓力時,通過負(fù)載均衡手段,將流量和數(shù)據(jù)分?jǐn)偟揭粋€集群組成的多臺服務(wù)器上, 以提升整體的負(fù)載處理能力
應(yīng)用服務(wù)器集群的Session管理
Session復(fù)制
Session綁定
利用Cookie記錄Session
Session服務(wù)器
高可用的服務(wù)
分級管理
核心服務(wù)與非核心服務(wù)隔離
核心服務(wù)優(yōu)先使用高性能服務(wù)器
超時設(shè)置
異步調(diào)用
必須滿足可以使用異步調(diào)用方式
服務(wù)降級
冪等性設(shè)計
服務(wù)高可用(高可靠)一直是美團(tuán)外賣的第一要求,為了提高可用性,做了很多策略,包括并不限于上文提出的各種架構(gòu)設(shè)計方案。
其實造成線上問題的很大一部分原因是由于發(fā)版造成的,也體現(xiàn)出了SOP的重要性。
關(guān)于降級與依賴隔離,可以考慮采用Hystrix實現(xiàn)自動降級與依賴隔離 。
高可用的數(shù)據(jù)
數(shù)據(jù)一旦出現(xiàn)問題,對于網(wǎng)站往往是毀滅性的打擊,因此保護(hù)網(wǎng)站的數(shù)據(jù)就是保護(hù)企業(yè)的命脈。
主要手段:數(shù)據(jù)備份和失效轉(zhuǎn)移
緩存服務(wù)高可用
觀點(diǎn)一:緩存服務(wù)已經(jīng)承擔(dān)了業(yè)務(wù)中絕大多數(shù)的數(shù)據(jù)讀取訪問,因此需要同樣保證高可用
觀點(diǎn)二:緩存服務(wù)并不是數(shù)據(jù)存儲服務(wù),出現(xiàn)服務(wù)不可用導(dǎo)致數(shù)據(jù)丟失應(yīng)從別的手段解決,而不是提高緩存服務(wù)本身高可用
緩存服務(wù)器集群中單機(jī)故障,集群規(guī)模較大時,數(shù)據(jù)丟失比例和數(shù)據(jù)負(fù)載壓力影響很小。
CAP原理: 一個提供數(shù)據(jù)服務(wù)的存儲系統(tǒng)無法同時滿足數(shù)據(jù)一致性(Consistency)、數(shù)據(jù)可用性(Availibility)、分區(qū)耐受性(Parition Tolerance)這三個條件
數(shù)據(jù)高可用含義:
副本間數(shù)據(jù)一致
多個副本可讀
同時寫入數(shù)據(jù)副本
1)數(shù)據(jù)持久性
2)數(shù)據(jù)可訪問性
3)數(shù)據(jù)一致性
數(shù)據(jù)一致性分類:
1) 數(shù)據(jù)強(qiáng)一致;
2) 數(shù)據(jù)用戶一致;
3) 數(shù)據(jù)最終一致
數(shù)據(jù)備份
1) 異步熱備;
2) 同步熱備
冷備的優(yōu)點(diǎn)是簡單和廉價,成本和技術(shù)難度較低,缺點(diǎn)是不能保證數(shù)據(jù)最終一致
熱備分為兩種:
失效轉(zhuǎn)移
1) 心跳檢測(Keepalived、Heartbeat);
2) 應(yīng)用程序訪問失敗報告
失效確認(rèn):
訪問轉(zhuǎn)移
數(shù)據(jù)恢復(fù)
高可用網(wǎng)站的軟件質(zhì)量保證
網(wǎng)站發(fā)布,它的過程和服務(wù)器宕機(jī)效果箱單,其對系統(tǒng)可用性的影響也 類似
一般采取批量更新的方式進(jìn)行,不會一次關(guān)掉集群中的全部服務(wù)器
自動化測試
一般使用Selenium來進(jìn)行測試
預(yù)發(fā)布驗證
預(yù)發(fā)布服務(wù)器是一種特殊用途的服務(wù)器,它和線上的正式服務(wù)器唯一的區(qū)別是沒有配置在負(fù)載均衡服務(wù)器上,外部用戶無法訪問
代碼控制
主干開發(fā),分支發(fā)布
分支開發(fā),主干發(fā)布,這是目前使用的主流方式
自動化發(fā)布
火車模型:將每個應(yīng)用的發(fā)布過程看做一次火車旅程,火車定點(diǎn)運(yùn)行,期間有若干站點(diǎn),每一站都進(jìn)行例行檢查,不通過的項目下車,通過的項目繼續(xù)坐著火車旅行,直到火車到達(dá)終點(diǎn)。
實際中,可能所有項目在途中都下車了,這樣火車不得不回到原點(diǎn),等待?...