網(wǎng)站開發(fā) 單機(jī)時代的開發(fā)技術(shù),明顯不夠,可別以為的活好做動態(tài)網(wǎng)站后臺開發(fā)
2022-03-25
作者:acejoy 原文:https://acejoy.com/2017/12/19/350/
我喜歡讀書,而且我讀得很快。我一直在研究學(xué)習(xí)方法,我的學(xué)習(xí)能力還處于巔峰狀態(tài)。我特別喜歡主題閱讀,其中的細(xì)節(jié)因重點而異。事實上,這是對一類材料進(jìn)行深入研究的時期,它們的內(nèi)容可以相互補(bǔ)充和驗證,重復(fù)的內(nèi)容視為復(fù)習(xí)。
本文算是近期網(wǎng)站架構(gòu)研究的一個小總結(jié)。當(dāng)然,它肯定不全面。這個領(lǐng)域非常大。如果后面有新的見解,繼續(xù)補(bǔ)充說明。不過核心概念和基本原理很容易理解,剩下的就是工具的應(yīng)用和開發(fā)的細(xì)節(jié)了。然而,“魔鬼在細(xì)節(jié)中”,不要以為建筑師的工作很容易做到。
架構(gòu)問題是如何產(chǎn)生的?
當(dāng)然,它是信息社會從單機(jī)時代向網(wǎng)絡(luò)時代推進(jìn)的產(chǎn)物。在單機(jī)時代,人們通常會買一臺 PC,安裝一臺,然后玩玩。各種應(yīng)用基本隔離。如果要傳輸數(shù)據(jù),軟盤,刻錄CD,復(fù)制硬盤……因為就算以后有一些網(wǎng)絡(luò)應(yīng)用,幾十K的網(wǎng)速還能傳輸什么。所以那個時候,應(yīng)用軟件、游戲等基本都是在軟盤/CD上發(fā)行的,網(wǎng)絡(luò)也不能指望。
這個時代的軟件系統(tǒng)也很粗糙,架構(gòu)的思路哪里講,單機(jī)正常運(yùn)行也不錯,知足吧。后來有了一些進(jìn)展,出現(xiàn)了所謂“C/S”、“B/S”架構(gòu)的應(yīng)用模式,目前還處于原始階段。
架構(gòu)思維和相關(guān)技術(shù)伴隨著互聯(lián)網(wǎng)時代的快速發(fā)展而來?;ヂ?lián)網(wǎng)的速度開始提高,大量的網(wǎng)民出現(xiàn),大量的信息開始在網(wǎng)上被訪問。網(wǎng)絡(luò)游戲、電子商務(wù)等各種網(wǎng)絡(luò)應(yīng)用迅速發(fā)展。過去10年網(wǎng)站開發(fā),移動終端開始流行,原本的桌面操作系統(tǒng)變成了一種終端,不再是主角。外部環(huán)境的變化和需求催生了相關(guān)技術(shù)的發(fā)展。原來的單機(jī)應(yīng)用程序已經(jīng)轉(zhuǎn)移到網(wǎng)絡(luò),然后擴(kuò)展到手機(jī)。應(yīng)用時代的開發(fā)技術(shù)顯然是不夠的。如果機(jī)器上安裝了之前的程序,如果出現(xiàn)或者性能不佳的情況,也有可能是本地環(huán)境/硬件問題造成的。本軟件僅供您使用,與他人無關(guān)。但是,該網(wǎng)站對全世界開放,至少對一個國家的網(wǎng)民開放。如果操作良好,它會被大量用戶使用。在系統(tǒng)設(shè)計和開發(fā)中,這種情況下要考慮的問題與前一個時代完全不同。
即使是移動應(yīng)用,也基本是網(wǎng)站相關(guān)技術(shù)支持的,因為它需要與Web集成。依賴您自己的自定義協(xié)議和模式?利用現(xiàn)有成熟的工業(yè)技術(shù),哪里有可靠、快速的開發(fā)和易于擴(kuò)展的地方。
我看到的架構(gòu)知識和技術(shù)大部分來自流量巨大的大型網(wǎng)站,尤其是電子商務(wù)網(wǎng)站。這其實很容易理解。電子商務(wù)這幾年發(fā)展很快,網(wǎng)站經(jīng)常搞促銷和秒殺。這些活動給網(wǎng)站系統(tǒng)帶來了巨大的挑戰(zhàn)和巨大的壓力。經(jīng)過反復(fù)探索,相關(guān)開發(fā)者總結(jié)出了不錯的知識。阿里巴巴雙11零點的流量,足以壓垮任何沒有精心準(zhǔn)備的系統(tǒng)。爆款瞬間秒殺,瞬間流量也非常巨大。海量數(shù)據(jù)和高并發(fā)要求是典型特征。這個時候,不要指望單機(jī)的性能就能解決很多問題。不管是什么軟件/硬件,
撰寫本段時,小米正在進(jìn)行促銷活動,小米商城已關(guān)閉??磥砭W(wǎng)站結(jié)構(gòu)還是沒做好!:-)
怎么做?谷歌是怎么做到的?會不會是谷歌有幾臺用于搜索服務(wù)的巨型服務(wù)器?沒用,已經(jīng)發(fā)現(xiàn)不行了。其他場景類似。
網(wǎng)站架構(gòu)的核心概念是什么?
其實我覺得并不復(fù)雜,大部分核心屬性都很簡單。
架構(gòu)的理念是不斷發(fā)現(xiàn)系統(tǒng)的瓶頸和弱點,通過分治、緩存、異步等手段逐步解決,平衡處理系統(tǒng)各種需求(性能、安全性)的過程、可用性、可擴(kuò)展性、可擴(kuò)展性……)。這形成了結(jié)構(gòu)。
很容易理解,就是:兵來擋,水來掩。建筑必須做設(shè)計規(guī)劃,你必須知道該做什么。但是,不應(yīng)該過度設(shè)計,也沒有必要或完全照搬大網(wǎng)站的做法。它應(yīng)該適合你。“淘寶就是這樣做的!” - 你不是淘寶,你也不是谷歌。業(yè)務(wù)需求變化很快,留出適量的冗余就足夠了,否則會造成資源的浪費(fèi)。架構(gòu)隨著業(yè)務(wù)而變化。如果沒有業(yè)務(wù),則需要更改。
必須完全摒棄獨(dú)立思考。當(dāng)用戶的瀏覽器訪問一個網(wǎng)站頁面時,從打開網(wǎng)址到最終看到結(jié)果,中間有一條很長的操作鏈。通常的訪問順序是:瀏覽器發(fā)送請求->DNS解析域名->瀏覽器連接服務(wù)器->服務(wù)器訪問數(shù)據(jù)庫->服務(wù)器計算數(shù)據(jù)結(jié)果->返回數(shù)據(jù)給服務(wù)器瀏覽器。文章其實是從各個鏈條上做的。每個不同的動作都有機(jī)會增加流量的擴(kuò)展和分解網(wǎng)站建設(shè),于是架構(gòu)產(chǎn)生,系統(tǒng)開始擴(kuò)展。
DNS解析域名,智能解析到不同區(qū)域、不同服務(wù)器區(qū)域,就近分配計算資源。
當(dāng)瀏覽器連接到服務(wù)器時,它可以使用負(fù)載均衡、反向代理等技術(shù)訪問服務(wù)器集群,并將訪問分發(fā)到不同的設(shè)備,但可以返回相同的結(jié)果。
服務(wù)器在訪問數(shù)據(jù)庫時,可以根據(jù)數(shù)據(jù)庫讀多寫少的現(xiàn)象進(jìn)行讀寫分離。應(yīng)用還可以用來緩存熱點數(shù)據(jù),分割業(yè)務(wù)塊,緩解數(shù)據(jù)庫訪問壓力。以后也可以作為訪問代理網(wǎng)站開發(fā),數(shù)據(jù)存儲集群化。
服務(wù)器計算數(shù)據(jù)結(jié)果,可以使用適當(dāng)?shù)恼Z言和技術(shù)對數(shù)據(jù)進(jìn)行適度緩存??梢允褂孟㈥犃?、RPC、異步處理和平滑訪問洪峰。
返回數(shù)據(jù)給瀏覽器,系統(tǒng)可以添加CDN就近訪問靜態(tài)資源??梢源罅κ褂脼g覽器緩存來避免不必要的更新和訪問需求。
看,每一筆交易都跟著一堆知識,而且是非常專業(yè)的工作。這需要各專業(yè)人士的配合。當(dāng)然,由于IT行業(yè)的發(fā)展,各個鏈都有好的資源/專業(yè)的服務(wù)商/軟件/工具鏈/中間件產(chǎn)品,開發(fā)出來供選擇使用。具體來說,在需要的時候網(wǎng)站制作,研究一下使用細(xì)節(jié)以及如何搭配。
在許多地方,它在需要時使用。很多事情,沒有遇到就想不到重點或者坑,所以冷靜的接受吧。
網(wǎng)站架構(gòu)的常見演進(jìn)路徑是什么?
使用圖片來表示它是理想的。直接復(fù)制到這里。圖片來自李志輝的《大型網(wǎng)站的技術(shù)架構(gòu)——核心原理與案例分析》一書。注意它的變化不是固定的,不要死板的應(yīng)用,因為它是一個電子商務(wù)業(yè)務(wù),它的進(jìn)化過程和設(shè)計可能不適合你的應(yīng)用,你必須學(xué)會??靈活地處理它。
1、初始站點架構(gòu)
2、應(yīng)用服務(wù)和數(shù)據(jù)服務(wù)分離
3、網(wǎng)站使用緩存
4、應(yīng)用服務(wù)器集群部署
5、數(shù)據(jù)庫讀寫分離
6、網(wǎng)站使用反向代理和CDN加速訪問
7、使用分布式文件和分布式數(shù)據(jù)庫系統(tǒng)
8、使用系統(tǒng)和搜索引擎
9、應(yīng)用拆分
10、分布式服務(wù)
網(wǎng)站架構(gòu)常用的工具包有哪些?
其實就是根據(jù)需求和業(yè)務(wù)特點做出合適的選擇,開發(fā)這些工具包是為了解決具體的問題。但是常用的產(chǎn)品基本上都是平臺上的開源產(chǎn)品,而且很多中間件/工具包都是用Java開發(fā)的——它的常青樹是有原因的。但是很多中小型網(wǎng)站也使用PHP,因為可以處理的數(shù)據(jù)量足夠,開發(fā)方便,成本也比較低。一些產(chǎn)品應(yīng)用廣泛,比如,幾乎已經(jīng)成為標(biāo)準(zhǔn)架構(gòu),甚至可以從一開始就用來緩存系統(tǒng)的熱點數(shù)據(jù),以減少數(shù)據(jù)庫的訪問和計算。
其他工具包,在需要時找到合適的工具包。
隨著信息社會的發(fā)展和進(jìn)步,新的產(chǎn)品/應(yīng)用會出現(xiàn),系統(tǒng)架構(gòu)也會進(jìn)一步演進(jìn)以滿足需求。