摘要:使用反向代理和加速網(wǎng)站響應(yīng)在性能權(quán)威指南中有講到,網(wǎng)站性能的瓶頸,大部分時間都浪費在的握手和傳輸上。因此可以通過和反向代理的方式來加快響應(yīng)。分布式數(shù)據(jù)庫是數(shù)據(jù)庫拆分的最后手段,只用在單表數(shù)據(jù)規(guī)模特別龐大的時候才使用。
前幾天跟一個朋友聊了一些關(guān)于網(wǎng)站緩存分布式的一些東西,發(fā)現(xiàn)自己的知識還是太過貧瘠。理論+協(xié)議,這是現(xiàn)在我亟待加強的。這個周末買了兩本關(guān)于分布式網(wǎng)站的書,本著好記性不如爛筆頭,便有了這樣一系列的文章。希望一同分享,也請多指教。
前言code less, play more!
這個世界上沒有哪個網(wǎng)站從誕生起就是大型網(wǎng)站;也沒有哪個網(wǎng)站第一次發(fā)布的時候就擁有龐大的用戶,高并發(fā)的訪問,海量的數(shù)據(jù);大型網(wǎng)站都是從小型網(wǎng)站發(fā)展而來。網(wǎng)站的價值在于它能給用戶提供什么家宅,在于網(wǎng)站能做什么,而不在于它是怎么做的,所以網(wǎng)站在小的時候就去追求網(wǎng)站的架構(gòu)是舍本逐末,得不償失的。小型網(wǎng)站最需要做的就是為用戶提供更好的服務(wù)來創(chuàng)造價值,得到用戶認可,活下去,野蠻生長。
大型網(wǎng)站軟件系統(tǒng)的特點高并發(fā),大流量
高可用
海量數(shù)據(jù)
用戶分布廣泛,網(wǎng)絡(luò)情況復(fù)雜
安全環(huán)境惡劣
需求快速變更,發(fā)布平頻繁
漸進式發(fā)展
大型網(wǎng)站的發(fā)展歷程初始階段的網(wǎng)站架構(gòu)
最開始沒有多少人訪問,所以應(yīng)用程序,數(shù)據(jù)庫,文件都在同一臺機器上。
應(yīng)用服務(wù)器和數(shù)據(jù)服務(wù)分離
應(yīng)用和數(shù)據(jù)分離之后,一般需要三臺服務(wù)器。應(yīng)用服務(wù)器,文件服務(wù)器和數(shù)據(jù)庫服務(wù)器,這三種服務(wù)器對于硬件要求各不相同。
應(yīng)用服務(wù)器:更強大的CPU
數(shù)據(jù)庫服務(wù)器:更快速的磁盤和更大的內(nèi)存
文件服務(wù)器:容量更大的硬盤
使用緩存改善性能
網(wǎng)站的訪問也遵循二八定律:80%的業(yè)務(wù)集中在20%的數(shù)據(jù)上。因此可以把這一小部分數(shù)據(jù)緩存在內(nèi)存中,減少數(shù)據(jù)庫的訪問壓力。
網(wǎng)站的緩存可以分為兩種:
本地緩存:緩存在應(yīng)用服務(wù)器上。本地緩存訪問速度快,但是受制于內(nèi)存限制,緩存數(shù)量有限,而且也會出現(xiàn)和應(yīng)用程序爭搶內(nèi)存的情況。
遠程分布式緩存:以集群的方式,緩存在大內(nèi)存的專用緩存服務(wù)器。可以在理論上做到不受內(nèi)存容量限制。
使用應(yīng)用服務(wù)器集群提高并發(fā)能力
當(dāng)一臺服務(wù)器的處理能力和存儲空間不足的時候,不要企圖更換更強大的服務(wù)器。對于大型網(wǎng)站來說,不管多么強大的服務(wù)器,都滿足不了網(wǎng)站持續(xù)增長的業(yè)務(wù)需求。此時就可以考慮集群的方式,通過負載均衡調(diào)度服務(wù)器,可以將來自用戶的請求分發(fā)到應(yīng)用服務(wù)器集群中的任何一臺服務(wù)器上。
數(shù)據(jù)庫讀寫分離
使用緩存后,大部分的數(shù)據(jù)讀操作訪問都可以不通過數(shù)據(jù)庫完成,但是仍有部分讀操作(如緩存過期,緩存不命中)和全部的寫操作需要訪問數(shù)據(jù)庫。
目前大部分數(shù)據(jù)庫都提供主從熱備的功能,在寫數(shù)據(jù)的時候,訪問主庫,主庫通過主從復(fù)制機制將數(shù)據(jù)更新同步至從數(shù)據(jù)庫,在讀的時候就可以通過從數(shù)據(jù)庫獲取數(shù)據(jù)。
使用反向代理和CDN加速網(wǎng)站響應(yīng)
在《web性能權(quán)威指南》中有講到,網(wǎng)站性能的瓶頸,大部分時間都浪費在TCP的握手和傳輸上。因此可以通過CDN和反向代理的方式來加快響應(yīng)。
CDN和反向代理的本質(zhì)都是通過緩存,不同的主要是:
CDN部署在服務(wù)器器上的機房,用戶在請求時,從距離自己最近的機房獲取數(shù)據(jù)。
反向代理是部署在中心機房,用戶請求到達中心機房之后,首先訪問的服務(wù)器是反向代理的拂去其,如果反向代理服務(wù)器中緩存著用戶請求的額資源,就將其返回給用戶。
使用分布式文件系統(tǒng)和分布式數(shù)據(jù)庫系統(tǒng)
隨著業(yè)務(wù)的發(fā)展,依舊不能滿足的時候,就采用分布式的文件和分布式的數(shù)據(jù)庫系統(tǒng)。
分布式數(shù)據(jù)庫是數(shù)據(jù)庫拆分的最后手段,只用在單表數(shù)據(jù)規(guī)模特別龐大的時候才使用。更常用的拆分手段是業(yè)務(wù)分庫,將不同的業(yè)務(wù)數(shù)據(jù)存儲在不同的數(shù)據(jù)庫中。
使用NoSQL和搜索引擎
對數(shù)據(jù)檢索和存儲越來越復(fù)雜的時候,就可以采用一些非關(guān)系型數(shù)據(jù)庫如HBase和非數(shù)據(jù)庫查詢技術(shù)如ElasticSearch等等
業(yè)務(wù)拆分
業(yè)務(wù)場景復(fù)雜的時候,一般講整個網(wǎng)站業(yè)務(wù)分為不同的產(chǎn)品線,如首頁,訂單,買家,賣家等等。
技術(shù)上也會根據(jù)產(chǎn)品線劃分,將一個網(wǎng)站分為許多不同的應(yīng)用,每個應(yīng)用獨立部署維護,應(yīng)用之間可以通過一個超鏈接建立聯(lián)系,也可以通過消息隊列進行數(shù)據(jù)分發(fā),當(dāng)然最多的還是通過訪問同一個數(shù)據(jù)存儲系統(tǒng)來構(gòu)成一個關(guān)聯(lián)的完整系統(tǒng)。
分布式服務(wù)
隨著業(yè)務(wù)越拆越小,存儲越來越大,維護越來越困難。此時就可以將相同業(yè)務(wù)操作的提取出來,獨立部署。應(yīng)用系統(tǒng)只需要管理用戶界面,通過分布式服務(wù)調(diào)用共同的業(yè)務(wù)服務(wù)完成具體的業(yè)務(wù)操作。也就是最近概念越來越火的——微服務(wù)。
云計算
大型網(wǎng)站架構(gòu)解決了海量數(shù)據(jù)庫管理和高并發(fā)事務(wù)處理,可以將這些解決方案應(yīng)用到網(wǎng)站自身以外的業(yè)務(wù)上。現(xiàn)在像阿里云,亞馬遜等云計算平臺,將計算作為一種基礎(chǔ)資源出售,中小網(wǎng)站不需要關(guān)系技術(shù)架構(gòu)等問題,只需要按需付費,就可以使網(wǎng)站隨著業(yè)務(wù)的增長獲得更大的存儲和計算資源。
未來
未來還能變成什么樣子,我也不清楚,也許以后都不是開發(fā)人員來維護了,所有的這些都是AI來完成,程序員要做的就是如何完善AI。也許AI發(fā)展到最后,人類都不需要存在了吧。
結(jié)語網(wǎng)站的技術(shù)是為業(yè)務(wù)而存在的,除此以外毫無意義。在技術(shù)選型和架構(gòu)設(shè)計中,脫離業(yè)務(wù)發(fā)展實際,一味的追求新技術(shù),可能會把技術(shù)發(fā)展引入一個歪路。
技術(shù)是用來解決業(yè)務(wù)的問題,而技術(shù)不可能將所有問題都解決掉,涉及業(yè)務(wù)自身的問題,還是要通過業(yè)務(wù)手段去解決。
文章版權(quán)歸作者所有,未經(jīng)允許請勿轉(zhuǎn)載,若此文章存在違規(guī)行為,您可以聯(lián)系管理員刪除。
轉(zhuǎn)載請注明本文地址:http://specialneedsforspecialkids.com/yun/70651.html
摘要:阿里巴巴的共享服務(wù)理念以及企業(yè)級互聯(lián)網(wǎng)架構(gòu)建設(shè)的思路,給這些企業(yè)帶來了不少新的思路,這也是我最終決定寫這本書的最主要原因。盡在雙阿里巴巴技術(shù)演進與超越是迄今唯一由阿里巴巴集團官方出品全面闡述雙八年以來在技術(shù)和商業(yè)上演進和創(chuàng)新歷程的書籍。 showImg(https://segmentfault.com/img/remote/1460000015386860); 1、大型網(wǎng)站技術(shù)架構(gòu):核...
摘要:使用緩存兩個前提條件數(shù)據(jù)訪問熱點不均衡數(shù)據(jù)某時段內(nèi)有效,不會很快過期反向代理本地緩存分布式緩存異步旨在系統(tǒng)解耦。 大型網(wǎng)站技術(shù)架構(gòu)-入門梳理 標(biāo)簽 : 架構(gòu)設(shè)計 [TOC] 羅列了大型網(wǎng)站架構(gòu)涉及到的概念,附上了簡單說明 前言 本文是對《大型網(wǎng)站架構(gòu)設(shè)計》(李智慧 著)一書的梳理,類似文字版的思維導(dǎo)圖 全文主要圍繞性能,可用性,伸縮性,擴展性,安全這五個要素 性能,可用性,伸縮性...
摘要:本項目主要收集國內(nèi)外各大互聯(lián)網(wǎng)公司技術(shù)大牛們出版的值得一看的書籍,歡迎推薦書籍完善內(nèi)容和排版。逆流而上阿里巴巴技術(shù)成長之路阿里巴巴集團成長集編委會總結(jié)阿里巴巴技術(shù)團隊在基礎(chǔ)架構(gòu)中間件數(shù)據(jù)庫業(yè)務(wù)開發(fā)等領(lǐng)域的經(jīng)典實踐以及對未來的思考。 出自 GitHub 開源組織 Doocs源地址:https://github.com/doocs/tech... 后面將會在 GitHub 陸續(xù)更新書籍清...
閱讀 3318·2019-08-29 16:17
閱讀 1975·2019-08-29 15:31
閱讀 2645·2019-08-29 14:09
閱讀 2548·2019-08-26 13:52
閱讀 744·2019-08-26 12:21
閱讀 2125·2019-08-26 12:08
閱讀 991·2019-08-23 17:08
閱讀 1922·2019-08-23 16:59