Ⅰ 如何搭建大型網站系統
程序員們都希望能通過自己的努力學習,技術提升,拿到更好的收入,技術提升和高收入雖然不是輕易就能實現的,但總是有章可循。
一個成熟的大型網站(如淘寶、京東等)的系統架構並不是開始設計就具備完整的高性能、高可用、安全等特性,它總是隨著用戶量的增加,業務功能的擴展逐漸演變完善的,在這個過程中,開發模式、技術架構、設計思想也發生了很大的變化,就連技術人員也從幾個人發展到一個部門甚至一條產品線。所以成熟的系統架構是隨業務擴展而完善出來的,並不是一蹴而就;不同業務特徵的系統,會有各自的側重點,例如淘寶,要解決海量的商品信息的搜索、下單、支付,例如騰訊,要解決數億的用戶實時消息傳輸,網路它要處理海量的搜索請求,他們都有各自的業務特性,系統架構也有所不同。盡管如此我們也可以從這些不同的網站背景下,找出其中共用的技術,這些技術和手段可以廣泛運行在大型網站系統的架構中,下面就通過介紹大型網站系統的演化過程,來認識這些技術和手段。
一、最開始的網站架構
最初的架構,應散基用程序、資料庫、文件都部署在一台伺服器上,如圖:
二、應用、數據、文件分離
隨著業務的擴展,一台伺服器已經不能滿足性能需求,故將應用程序、資料庫、文件各自部署在獨立的伺服器上,並且根據伺服器的用途配置不同的硬體,達到最佳的性能效果。
三、利用緩存改善網站性能
在硬體優化性能的同時,同時也通過軟體進行性能優化,在大部分的網站系統中,都會利用緩存技術改善系統的性能,使用緩存主要源於熱點數據的存在,大部分網站訪問都遵循28原則(即80%的訪問請求,最終落在20%的數據上),所以我們可以對熱點數據進行緩存,減少這些數據的訪問路徑,提高用戶體驗。
緩存實現常見的方式是本地緩存、分布式緩存。當然還有CDN、反向代理等,這個後面再講。本地緩存,顧名思義是將數據緩存在應用伺服器本地,可以存在內存中,也可以存在文件,OSCache就是常用的本地緩存組件。本地緩存的特點是速度快,但沖薯謹因為本地空間有限所以緩存數據量也有限。分布式緩存的特點是,可以緩存海量的數據,並且擴展非常容易,在門戶類網站中常常被使用,速度按理沒有本地緩存快,常用的分布式緩存是Memcached、Redis。
四、使用集群改善應用伺服器性能
應用伺服器作為網站的入口,會承擔大量的請求,我們往往通過應用伺服器集群來分擔請求數。應用伺服器前面部署負載均衡伺服器調度用戶請求,根據分發策略將請求分發到多個應用伺服器節點。
常用的負載均衡技術硬體的有F5,價格比較貴,軟體的有LVS、Nginx、HAProxy。LVS是四層負載均衡,根據目標地址和埠選擇內部伺服器,Nginx是七層負載均衡和HAProxy支持四層、七層負載均衡,可以根據報文內容選擇內部伺服器,因此LVS分發路徑優於Nginx和HAProxy,性能要高些,而Nginx和HAProxy則更具配置性,如可以用來做動靜分離(根據請求報文特徵,選擇靜態資源伺服器還是應用伺服器)。
五、資料庫讀寫分離和分庫分表
隨著用戶量的增加,資料庫成為最大的瓶頸,改善資料庫性能常用的手段是進行讀寫分離以及分表,讀寫分離顧名思義就是將資料庫分為讀庫和寫庫,通過主備功能實現數據同步。分庫分表則分為水平切分和垂直切分,水平切換則是對一個資料庫特大的表進行拆分,例如用戶表。垂直切分則是根據業務不同來切換,如用戶業務、商品業務相關的表放在不同的資料庫中。
六、使用CDN和反向代理提高網站性能
假如我們的伺服器都部署在成都的機房,對於四川的用戶來說訪問是較快的,而對於北京的用戶訪問是較慢的,這是由於四川和北京分別屬於電信和聯通的不同發達地區,北京用戶訪問需要通過互聯路由器經過較長的路徑才能訪問到成都的伺服器,返迴路徑也一樣,所以數據傳輸時間比較長。對於這種情況,常常使用CDN解決,CDN將數據內容緩存到運營商的機房,用戶訪問時先從最近的運營商獲取數據,這樣大大減少了網路訪問的路徑。比較專業的CDN運營商有藍汛、網宿。
而反向代理,則是部署在網站的機房,當用戶請求達到時首先訪問反向代理伺服器,反向代理伺服器將緩存的數據返回給用戶,如果沒有沒有緩手冊存數據才會繼續走應用伺服器獲取,也減少了獲取數據的成本。反向代理有Squid,Nginx。
七、使用分布式文件系統
用戶一天天增加,業務量越來越大,產生的文件越來越多,單台的文件伺服器已經不能滿足需求。需要分布式的文件系統支撐。常用的分布式文件系統有NFS。
八、使用NoSql和搜索引擎
對於海量數據的查詢,我們使用nosql資料庫加上搜索引擎可以達到更好的性能。並不是所有的數據都要放在關系型數據中。常用的NOSQL有mongodb和redis,搜索引擎有lucene。
九、將應用伺服器進行業務拆分
隨著業務進一步擴展,應用程序變得非常臃腫,這時我們需要將應用程序進行業務拆分,如網路分為新聞、網頁、圖片等業務。每個業務應用負責相對獨立的業務運作。業務之間通過消息進行通信或者同享資料庫來實現。
十、搭建分布式服務
這時我們發現各個業務應用都會使用到一些基本的業務服務,例如用戶服務、訂單服務、支付服務、安全服務,這些服務是支撐各業務應用的基本要素。我們將這些服務抽取出來利用分部式服務框架搭建分布式服務。淘寶的Dubbo是一個不錯的選擇。
大型網站的架構是根據業務需求不斷完善的,根據不同的業務特徵會做特定的設計和考慮,本文只是講述一個常規大型網站會涉及的一些技術和手段。
如果你還有這些疑問,成熟的網站架構師需要學什麼核心技能?Java程序員如何晉升為互聯網架構師?Java語言在架構搭建中扮演什麼角色?怎樣成為年收入幾十萬的架構師?歡迎來電來訪昌平北大青鳥java培訓。
Ⅱ 如何開發大型網站
如何開發大型網站?
1.大型網站定位。
找到一個好的大型網站定位很重要,這也是大型網站建設的核心主題。思考一下你想要建立怎樣的大型網站?就是一個展示大型網站,吸引人氣,互動交流?或者是銷售商品推廣渠道的營銷類大型網站?我們面臨著哪些服務人群?對象顧客有哪些特定特點?
2.大型網站內容。
依據大型網站定位,確定好大型網站所需包含的具體內容。比如,需要包括什麼標題.文字.圖片.視頻.欄目.網頁等。同時,我們也要制定好大型網站內容更新的跟蹤計劃,如定期更新定量文章,及時分析熱門關鍵詞的走向等等。
3.設計大型網站。
首先要根據前面准備的材料,設計出大型網站框線圖,清楚地表達了大型網站的整體結構和交互邏輯。接著我們還需要對大型網站界面進行具體的設計,包括對大型網站的風格,構件構架,背景配色,字體大小等方面的設計。在設計大型網站時,應遵循實用性和美觀性的標准,根據目標用戶的偏好來進行。
4.項目人員。
誰是大型網站建設總項目的確定管理者?站點設計者.程序開發者.是大型網站測試師?站點維護和後勤人員是怎麼安排的?我們要制定明確的分工計劃。
5.建造站預算。
為大型網站搭建做一份預算,計算一下大型網站域名.伺服器.設計.程序.素材各需多少費用,合理安排預算經費。
6.發展大型網站。
按照以上總體規劃,開展公司大型網站建設的發展工作。
7.現場檢驗。
站點測試為了在大型網站正式上線之前,盡可能排除大型網站建設中存在的漏洞和問題。如瀏覽器與終端是否適合.按鈕連接是否能正確使用.顯示界面是否完整等。要提前確定測試所需的方向、內容、具體步驟和工具。
8.大型網站維護。
具體措施是在大型網站上線後進行維護。例如新內容的發布頻度,大型網站推廣的方法策劃,系統安全保障措施.意見反饋的收集處理等。
Ⅲ 關於大型網站架構問題
1、HTML靜態化
其實大家都知道,效率最高、消耗最小的就是純靜態化的html頁面,所以我們盡可能使我們的網站上的頁面採用靜態頁面來實現,這個最簡單的方法其實也是最有效的方法。但是對於大量內容並且頻繁更新的網站,我們無法全部手動去挨個實現,於是出現了我們常見的信息發布系統CMS,像我們常訪問的各個門戶站點的新聞頻道,甚至他們的其他頻道,都是通過信息發布系統來管理和實現的,信息發布系統可以實現最簡單的信息錄入自動生成靜態頁面,還能具備頻道管理、許可權管理、自動抓取等功能,對於一個大型網站來說,擁有一套高效、可管理的CMS是必不可少的。
除了門戶和信息發布類型的網站,對於交互性要求很高的社區類型網站來說,盡可能的靜態化也是提高性能的必要手段,將社區內的帖子、文章進行實時的靜態化,有更新的時候再重新靜態化也是大量使用的策略,像Mop的大雜燴就是使用了這樣的策略,網易社區等也是如此。
同時,html靜態化也是某些緩存策略使用的手段,對於系統中頻繁使用資料庫查詢但是內容更新很小的應用,可以考慮使用html靜態化來實現,比如論壇中論壇的公用設置信息,這些信息目前的主流論壇都可以進行後台管理並且存儲再資料庫中,這些信息其實大量被前台程序調用,但是更新頻率很小,可以考慮將這部分內容進行後台更新的時候進行靜態化,這樣避免了大量的資料庫訪問請求。
2、圖片伺服器分離
大家知道,對於Web伺服器來說,不管是APACHE、IIS還是其他容器,圖片是最消耗資源的,於是我們有必要將圖片與頁面進行分離,這是基本上大型網站都會採用的策略,他們都有獨立的圖片伺服器,甚至很多台圖片伺服器。這樣的架構可以降低提供頁面訪問請求的伺服器系統壓力,並且可以保證系統不會因為圖片問題而崩潰,在應用伺服器和圖片伺服器上,可以進行不同的配置優化,比如apache在配置ContentType的時候可以盡量少支持,盡可能少的LoadMole,保證更高的系統消耗和執行效率。
3、資料庫集群和庫表散列
大型網站都有復雜的應用,這些應用必須使用資料庫,那麼在面對大量訪問的時候,資料庫的瓶頸很快就能顯現出來,這時一台資料庫將很快無法滿足應用,於是我們需要使用資料庫集群或者庫表散列。
在資料庫集群方面,很多資料庫都有自己的解決方案,Oracle、Sybase等都有很好的方案,常用的MYSQL提供的Master/Slave也是類似的方案,您使用了什麼樣的DB,就參考相應的解決方案來實施即可。
上面提到的資料庫集群由於在架構、成本、擴張性方面都會受到所採用DB類型的限制,於是我們需要從應用程序的角度來考慮改善系統架構,庫表散列是常用並且最有效的解決方案。我們在應用程序中安裝業務和應用或者功能模塊將資料庫進行分離,不同的模塊對應不同的資料庫或者表,再按照一定的策略對某個頁面或者功能進行更小的資料庫散列,比如用戶表,按照用戶ID進行表散列,這樣就能夠低成本的提升系統的性能並且有很好的擴展性。sohu的論壇就是採用了這樣的架構,將論壇的用戶、設置、帖子等信息進行資料庫分離,然後對帖子、用戶按照板塊和ID進行散列資料庫和表,最終可以在配置文件中進行簡單的配置便能讓系統隨時增加一台低成本的資料庫進來補充系統性能。
4、緩存
緩存一詞搞技術的都接觸過,很多地方用到緩存。網站架構和網站開發中的緩存也是非常重要。這里先講述最基本的兩種緩存。高級和分布式的緩存在後面講述。
架構方面的緩存,對Apache比較熟悉的人都能知道Apache提供了自己的緩存模塊,也可以使用外加的Squid模塊進行緩存,這兩種方式均可以有效的提高Apache的訪問響應能力。
網站程序開發方面的緩存,LINUX上提供的Memory Cache是常用的緩存介面,可以在web開發中使用,比如用JAVA開發的時候就可以調用MemoryCache對一些數據進行緩存和通訊共享,一些大型社區使用了這樣的架構。另外,在使用web語言開發的時候,各種語言基本都有自己的緩存模塊和方法,PHP有Pear的Cache模塊,Java就更多了,.net不是很熟悉,相信也肯定有。
、鏡像
鏡像是大型網站常採用的提高性能和數據安全性的方式,鏡像的技術可以解決不同網路接入商和地域帶來的用戶訪問速度差異,比如ChinaNet和ENet之間的差異就促使了很多網站在教育網內搭建鏡像站點,數據進行定時更新或者實時更新。在鏡像的細節技術方面,這里不闡述太深,有很多專業的現成的解決架構和產品可選。也有廉價的通過軟體實現的思路,比如Linux上的rsync等工具。
6、負載均衡
負載均衡將是大型網站解決高負荷訪問和大量並發請求採用的終極解決辦法。
負載均衡技術發展了多年,有很多專業的服務提供商和產品可以選擇,我個人接觸過一些解決方法,其中有兩個架構可以給大家做參考。
硬體四層交換
第四層交換使用第三層和第四層信息包的報頭信息,根據應用區間識別業務流,將整個區間段的業務流分配到合適的應用伺服器進行處理。 第四層交換功能就象是虛IP,指向物理伺服器。它傳輸的業務服從的協議多種多樣,有HTTP、FTP、NFS、Telnet或其他協議。這些業務在物理伺服器基礎上,需要復雜的載量平衡演算法。在IP世界,業務類型由終端TCP或UDP埠地址來決定,在第四層交換中的應用區間則由源端和終端IP地址、TCP和UDP埠共同決定。
在硬體四層交換產品領域,有一些知名的產品可以選擇,比如Alteon、F5等,這些產品很昂貴,但是物有所值,能夠提供非常優秀的性能和很靈活的管理能力。Yahoo中國當初接近2000台伺服器使用了三四台Alteon就搞定了。
軟體四層交換
大家知道了硬體四層交換機的原理後,基於OSI模型來實現的軟體四層交換也就應運而生,這樣的解決方案實現的原理一致,不過性能稍差。但是滿足一定量的壓力還是游刃有餘的,有人說軟體實現方式其實更靈活,處理能力完全看你配置的熟悉能力。
軟體四層交換我們可以使用Linux上常用的LVS來解決,LVS就是Linux Virtual Server,他提供了基於心跳線heartbeat的實時災難應對解決方案,提高系統的魯棒性,同時可供了靈活的虛擬VIP配置和管理功能,可以同時滿足多種應用需求,這對於分布式的系統來說必不可少。
一個典型的使用負載均衡的策略就是,在軟體或者硬體四層交換的基礎上搭建squid集群,這種思路在很多大型網站包括搜索引擎上被採用,這樣的架構低成本、高性能還有很強的擴張性,隨時往架構裡面增減節點都非常容易。這樣的架構我准備空了專門詳細整理一下和大家探討。
對於大型網站來說,前面提到的每個方法可能都會被同時使用到,我這里介紹得比較淺顯,具體實現過程中很多細節還需要大家慢慢熟悉和體會,有時一個很小的squid參數或者apache參數設置,對於系統性能的影響就會很大,希望大家一起討論,達到拋磚引玉之效。
其實這樣的手段還很多,總結:第一,頁面靜態化(CMS)
第二,用鏡像或者CDN(這一塊可以付費完成)
第三,資料庫庫表分離,並且部署多台資料庫伺服器集群
第四,分化伺服器,分成WEB伺服器,FTP伺服器,圖片伺服器,DNS伺服器.
第五,DNS伺服器,分流到各功能應用伺服器(如博客,論壇,問答)
此外,這樣的手段還有很多....注意重點學習,你一定會有所成就
Ⅳ 大型互聯網架構概述,看完文章又漲知識了
1. 大型網站系統的特點
2. 大型網站架構演化歷程
2.1. 初始階段架構
問題:網站運營初期,訪問用戶少,一台伺服器綽綽有餘。
特徵:應用程序、資料庫、文件等所有的資源都在一台伺服器上。
描述:通常服螞猛務臘枝器操作系統使用 linux,應用程序使用 PHP 開發,然後部署在 Apache 上,資料庫使用 Mysql,通俗稱為 LAMP。匯集各種免費開源軟體以及一台廉價伺服器就可以開始系統的發展輪物敏之路了。
2.2. 應用服務和數據服務分離
問題:越來越多的用戶訪問導致性能越來越差,越來越多的數據導致存儲空間不足,一台伺服器已不足以支撐。
特徵:應用伺服器、資料庫伺服器、文件伺服器分別獨立部署。
描述:三台伺服器對性能要求各不相同:應用伺服器要處理大量業務邏輯,因此需要更快更強大的 CPU;資料庫伺服器需要快速磁碟檢索和數據緩存,因此需要更快的硬碟和更大的內存;文件伺服器需要存儲大量文件,因此需要更大容量的硬碟。
2.3. 使用緩存改善性能
問題:隨著用戶逐漸增多,資料庫壓力太大導致訪問延遲。
特徵:由於網站訪問和財富分配一樣遵循二八定律:80% 的業務訪問集中在 20% 的數據上。將資料庫中訪問較集中的少部分數據緩存在內存中,可以減少資料庫的訪問次數,降低資料庫的訪問壓力。
描述:緩存分為兩種:應用伺服器上的本地緩存和分布式緩存伺服器上的遠程緩存,本地緩存訪問速度更快,但緩存數據量有限,同時存在與應用程序爭用內存的情況。分布式緩存可以採用集群方式,理論上可以做到不受內存容量限制的緩存服務。
2.4. 使用應用伺服器集群
問題:使用緩存後,資料庫訪問壓力得到有效緩解。但是單一應用伺服器能夠處理的請求連接有限,在訪問高峰期,成為瓶頸。
特徵:多台伺服器通過負載均衡同時向外部提供服務,解決單一伺服器處理能力和存儲空間不足的問題。
描述:使用集群是系統解決高並發、海量數據問題的常用手段。通過向集群中追加資源,提升系統的並發處理能力,使得伺服器的負載壓力不再成為整個系統的瓶頸。
2.5. 資料庫讀寫分離
問題:網站使用緩存後,使絕大部分數據讀操作訪問都可以不通過資料庫就能完成,但是仍有一部分讀操作和全部的寫操作需要訪問資料庫,在網站的用戶達到一定規模後,資料庫因為負載壓力過高而成為網站的瓶頸。
特徵:目前大部分的主流資料庫都提供主從熱備功能,通過配置兩台資料庫主從關系,可以將一台資料庫伺服器的數據更新同步到一台伺服器上。網站利用資料庫的主從熱備功能,實現資料庫讀寫分離,從而改善資料庫負載壓力。
描述:應用伺服器在寫操作的時候,訪問主資料庫,主資料庫通過主從復制機制將數據更新同步到從資料庫。這樣當應用伺服器在讀操作的時候,訪問從資料庫獲得數據。為了便於應用程序訪問讀寫分離後的資料庫,通常在應用伺服器端使用專門的數據訪問模塊,使資料庫讀寫分離的對應用透明。
2.6. 反向代理和 CDN 加速
問題:中國網路環境復雜,不同地區的用戶訪問網站時,速度差別也極大。
特徵:採用 CDN 和反向代理加快系統的靜態資源訪問速度。
描述:CDN 和反向代理的基本原理都是緩存,區別在於 CDN 部署在網路提供商的機房,使用戶在請求網站服務時,可以從距離自己最近的網路提供商機房獲取數據;而反向代理則部署在網站的中心機房,當用戶請求到達中心機房後,首先訪問的伺服器時反向代理伺服器,如果反向代理伺服器中緩存著用戶請求的資源,就將其直接返回給用戶。
2.7. 分布式文件系統和分布式資料庫
問題:隨著大型網站業務持續增長,資料庫經過讀寫分離,從一台伺服器拆分為兩台伺服器,依然不能滿足需求。
特徵:資料庫採用分布式資料庫,文件系統採用分布式文件系統。
描述:分布式資料庫是資料庫拆分的最後方法,只有在單表數據規模非常龐大的時候才使用。不到不得已時,更常用的資料庫拆分手段是業務分庫,將不同的業務資料庫部署在不同的物理伺服器上。
2.8. 使用 NoSQL 和搜索引擎
問題:隨著網站業務越來越復雜,對數據存儲和檢索的需求也越來越復雜。
特徵:系統引入 NoSQL 資料庫及搜索引擎。
描述:NoSQL 資料庫及搜索引擎對可伸縮的分布式特性具有更好的支持。應用伺服器通過統一數據訪問模塊訪問各種數據,減輕應用程序管理諸多數據源的麻煩。
2.9. 業務拆分
問題:大型網站的業務場景日益復雜,分為多個產品線。
特徵:採用分而治之的手段將整個網站業務分成不同的產品線。系統上按照業務進行拆分改造,應用伺服器按照業務區分進行分別部署。
描述:應用之間可以通過超鏈接建立關系,也可以通過消息隊列進行數據分發,當然更多的還是通過訪問同一個數據存儲系統來構成一個關聯的完整系統。
縱向拆分:將一個大應用拆分為多個小應用,如果新業務較為獨立,那麼就直接將其設計部署為一個獨立的 Web 應用系統。縱向拆分相對較為簡單,通過梳理業務,將較少相關的業務剝離即可。
橫向拆分:將復用的業務拆分出來,獨立部署為分布式服務,新增業務只需要調用這些分布式服務橫向拆分需要識別可復用的業務,設計服務介面,規范服務依賴關系。
2.10. 分布式服務
問題:隨著業務越拆越小,存儲系統越來越龐大,應用系統整體復雜程度呈指數級上升,部署維護越來越困難。由於所有應用要和所有資料庫系統連接,最終導致資料庫連接資源不足,拒絕服務。
特徵:公共業務提取出來,獨立部署。由這些可復用的業務連接資料庫,通過分布式服務提供共用業務服務。
3. 大型網站架構模式
3.1. 分層
大型網站架構中常採用分層結構,將軟體系統分為應用層、服務層、數據層:
分層架構的約束:禁止跨層次的調用(應用層直接調用數據層)及逆向調用(數據層調用服務層,或者服務層調用應用層)。
分層結構內部還可以繼續分層,如應用可以再細分為視圖層和業務邏輯層;服務層也可以細分為數據介面層和邏輯處理層。
3.2. 分割
將不同的功能和服務分割開來,包裝成高內聚低耦合的模塊單元。這有助於軟體的開發和維護,便於不同模塊的分布式部署,提高網站的並發處理能力和功能擴展能力。
3.3. 分布式
大於大型網站,分層和分割的一個主要目的是為了切分後的模塊便於分布式部署,即將不同模塊部署在不同的伺服器上,通過遠程調用協同工作。
分布式意味可以用更多的機器工作,那麼 CPU、內存、存儲資源也就更豐富,能夠處理的並發訪問和數據量就越大,進而能夠為更多的用戶提供服務。
分布式也引入了一些問題:
常用的分布式方案:
3.4. 集群
集群即多台伺服器部署相同應用構成一個集群,通過負載均衡設備共同對外提供服務。
集群需要具備伸縮性和故障轉移機制:伸縮性是指可以根據用戶訪問量向集群添加或減少機器;故障轉移是指,當某台機器出現故障時,負載均衡設備或失效轉移機制將請求轉發到集群中的其他機器上,從而不影響用戶使用。
3.5. 緩存
緩存就是將數據存放在距離最近的位置以加快處理速度。緩存是改善軟體性能的第一手段。
網站應用中,緩存除了可以加快數據訪問速度以外,還可以減輕後端應用和數據存儲的負載壓力。
常見緩存手段:
使用緩存有兩個前提:
3.6. 非同步
軟體發展的一個重要目標和驅動力是降低軟體耦合性。事物之間直接關系越少,彼此影響就越小,也就更容易獨立發展。
大型網站架構中,系統解耦的手段除了分層、分割、分布式等,還有一個重要手段——非同步。
業務間的消息傳遞不是同步調用,而是將一個業務操作拆分成多階段,每個階段間通過共享數據的方式非同步執行進行協作。
非同步架構是典型的生產者消費模式,二者不存在直接調用。非同步消息隊列還有如下特性:
3.7. 冗餘
大型網站,出現伺服器宕機是必然事件。要保證部分伺服器宕機的情況下網站依然可以繼續服務,不丟失數據,就需要一定程度的伺服器冗餘運行,數據冗餘備份。這樣當某台伺服器宕機是,可以將其上的服務和數據訪問轉移到其他機器上。
訪問和負載很小的服務也必須部署 至少兩台伺服器構成一個集群,目的就是通過冗餘實現服務高可用。數據除了定期備份,存檔保存,實現 冷備份 外;為了保證在線業務高可用,還需要對資料庫進行主從分離,實時同步實現 熱備份。
為了抵禦地震、海嘯等不可抗因素導致的網站完全癱瘓,某些大型網站會對整個數據中心進行備份,全球范圍內部署 災備數據中心。網站程序和數據實時同步到多個災備數據中心。
3.8. 自動化
大型網站架構的自動化架構設計主要集中在發布運維方面:
3.9. 安全
4. 大型網站核心架構要素
架構 的一種通俗說法是:最高層次的規劃,難以改變的決定。
4.1. 性能
性能問題無處不在,所以網站性能優化手段也十分繁多:
4.2. 可用性
可用性指部分伺服器出現故障時,還能否對用戶提供服務
4.3. 伸縮性
衡量伸縮的標准就是是否可以用多台伺服器構建集群,是否容易向集群中增刪伺服器節點。增刪伺服器節點後是否可以提供和之前無差別的服務。集群中可容納的總伺服器數是否有限制。
4.4. 擴展性
衡量擴展性的標准就是增加新的業務產品時,是否可以實現對現有產品透明無影響,不需要任何改動或很少改動,既有功能就可以上線新產品。主要手段有:事件驅動架構和分布式服務。
4.5. 安全性
安全性保護網站不受惡意攻擊,保護網站重要數據不被竊取。
歡迎工作一到五年的Java工程師朋友們加入Java程序員開發: 721575865
群內提供免費的Java架構學習資料(裡面有高可用、高並發、高性能及分布式、Jvm性能調優、Spring源碼,MyBatis,Netty,Redis,Kafka,Mysql,Zookeeper,Tomcat,Docker,Dubbo,Nginx等多個知識點的架構資料)合理利用自己每一分每一秒的時間來學習提升自己,不要再用"沒有時間「來掩飾自己思想上的懶惰!趁年輕,使勁拼,給未來的自己一個交代!