談談網站架構設計開發的一些來龍去脈

      網友投稿 601 2022-05-28

      這篇就當成最近研究網站架構問題的一個小小的總結記錄,當然肯定不全面,這個領域很大的。后面如果有新的認知,繼續補充說明。但是核心的概念和基本原理搞明白就好辦,剩下的就是工具應用和開發細節問題了。不過,“細節出魔鬼”,可別以為架構師的活好做。

      架構這個問題怎么出現的?

      當然是信息社會從單機時代推進到網絡時代的產物。單機時代,大家一般買臺PC,裝個Windows,自己搗鼓著玩。各種應用基本都是隔離的。如果你想傳輸數據,軟盤、刻錄光盤、拷貝硬盤…因為即便后來有了點網絡應用,幾十K的網速你還能傳啥呢。所以那個時候,應用軟件、游戲等等基本都是軟盤/光盤發行,網絡還指望不上。

      這個時代的軟件系統也很粗糙,哪里談的上架構思想,單機能正常跑就不錯了,知足吧。后來有點進步,出現所謂“C/S”、“B/S”架構的應用模式,還處于原始階段。

      架構思維和相關技術,是跟著網絡時代的迅猛發展到來的。網速開始提升,大量的網民出現,海量的信息開始上網,各種網絡應用迅速發展,網游、電商等等。最近10年,移動端風生水起,原本的桌面操作系統成了終端的一種,不再是主角。外部環境的變化和需求,催生了相關技術的發展。原本的單機應用,紛紛轉移到網絡,再延伸到手機端。Windows應用時代的開發技術,明顯不夠了。以前的程序,裝到機器上,如果出現崩潰、性能差,還可能是本機環境/硬件問題導致的,軟件就你一個人用,跟別人無關。可是網站面向全世界,最少面向一個國家的網民開放,運營的好,就是巨量的用戶在使用,如果癱瘓大家都不能打開,影響巨大。在系統設計、開發里面,這種情況下要考慮的問題是跟前面的時代截然不同的。

      即使是手機應用程序,后面基本還是網站相關的技術在支撐,因為要跟Web整合。全靠自己自定義協議和模式?哪里有使用已有的成熟工業技術來的可靠,開發的快,擴展還容易。

      我看到的架構知識和技術,大半來自于流量巨大的大型網站,特別是電商網站。這其實很容易理解的。電商這些年發展的非常快,網站經常搞促銷、秒殺。這些活動,給網站系統帶來極大的挑戰,壓力很大,相關的開發人員經過反復探索,總結出了很好的知識。阿里巴巴雙11的零點那一瞬間的流量,足以擊垮任何未經精心準備的系統。熱門產品的秒殺,瞬間的流量也十分的巨大。海量數據、高并發需求,是很典型的特征。這個時候,別指望什么單機的性能可以解決多少問題了,無論什么軟件/硬件,上限很快就到了,向上擴展單機處理性能是不行的。

      怎么辦?谷歌怎么干的?難道谷歌搞了幾個巨無霸服務器做搜索服務?沒用的,它早就發現行不通。其它場景也是類似的道理。

      網站架構核心的理念是什么?

      其實我覺得并不復雜,核心性質的東西大都是很簡單的。

      談談網站架構設計開發的一些來龍去脈

      架構的理念,就是不斷找到系統的瓶頸和弱點,采用分而治之、緩存、異步等手段逐漸化解,并平衡處理系統各項要求(性能、安全、可用性、伸縮性、擴展性…)的過程。由此形成了架構。

      很好理解,就是:兵來將擋,水來土掩。架構必須做設計規劃,你必須得懂得要做什么。但是又不能過度設計,不必也不能完全抄襲大網站的做法,要適合自己。“淘寶就是這么做的!” – 你不是淘寶,你也不是谷歌。業務需求變化快,留個適度冗余就夠了,不然會很浪費資源。架構是隨著業務變的,如果沒業務需要你變個啥。

      單機思維要徹底拋棄才行。用戶瀏覽器訪問網站頁面,從打開網址,到最后看到結果,中間是一個較長的操作鏈條。通常的訪問順序是這樣:瀏覽器發出請求->DNS解析域名->瀏覽器連接服務器->服務器訪問數據庫->服務器計算數據結果->返回數據給瀏覽器。文章其實就是從每個鏈條里面做。每個不同的動作,都有增加擴展、分解流量的機會,于是乎,架構產生,系統開始膨脹起來了。

      DNS解析域名,可以智能化解析到不同的地域,不同的服務器區域,就近分配計算資源。

      瀏覽器連接服務器,可以使用負載均衡、反向代理等技術,接入服務器集群,把訪問分散到不同的設備上,卻可以返回同樣的結果。

      服務器訪問數據庫,可以根據數據庫讀多寫少的現象,做讀寫分離。還可以采用NoSQL應用,緩存熱點數據,可以分割業務區塊,緩解數據庫訪問的壓力。再后面還可以做訪問代理,數據存儲集群化。

      服務器計算數據結果,可以采用合適的語言和技術,適度緩存數據。可以采用消息隊列、RPC,異步處理,平滑訪問洪峰。

      返回數據給瀏覽器,系統可以加CDN,靜態資源就近訪問。可以大力使用瀏覽器緩存手段,規避不需要的更新和訪問需要。

      看吧,每項事務,后面都是一堆學問,都是非常專業的工作。由此才需要各類專業人才通力合作完成。當然,因為IT產業的發展,每個鏈條都有不錯的資源/專業服務商/軟件包/工具鏈/中間件產品,開發出來供選擇使用。具體在需要的時候,研究使用細節、如何搭配就可以了。

      好多地方,是需要的時候再用。好多的事情,不遇到你也想不出關鍵點在什么地方,坑在哪里,所以坦然接受吧。

      網站架構的常見演化路徑是什么?

      用圖表示比較理想,這里直接抄來吧,圖片來自李智慧的書《大型網站技術架構-核心原理與案例分析》。注意,它的變化不是固定的,千萬別死板的套用,因為它是電商的,它的演化過程、設計不一定適合你的應用,要學會靈活應對。

      1、初始階段的網站架構

      2、應用服務和數據服務分離

      3、網站使用緩存

      4、應用服務器集群部署

      5、數據庫讀寫分離

      6、網站使用反向代理和CDN加速訪問

      7、使用分布式文件和分布式數據庫系統

      8、使用NoSQL系統和搜索引擎

      9、應用拆分

      10、分布式服務

      網站架構常用的工具包是什么?

      實際上要根據需求和業務特性進行適當的選擇,這些工具包都是為了解決具體問題而開發的。但是通常用的產品,基本都是Linux平臺上的開源產品,很多中間件/工具包使用Java開發 – 它是常青樹是有原因的。但中小型網站使用PHP也很多,因為數據的量級內還足夠處理,開發又方便,成本更低。一些產品使用很廣泛,比如NoSQL類的Redis,已經幾乎成了架構標配,甚至一開始就可以用它緩存系統的熱點數據,減少數據庫訪問和計算。

      其它工具包,在需要的時候去找合適的采用。

      隨著信息化社會的發展進步,新的產品/應用還會出現,系統的架構還會進一步演化,適應需求。

      架構設計 網站 緩存

      版權聲明:本文內容由網絡用戶投稿,版權歸原作者所有,本站不擁有其著作權,亦不承擔相應法律責任。如果您發現本站中有涉嫌抄襲或描述失實的內容,請聯系我們jiasou666@gmail.com 處理,核實后本網站將在24小時內刪除侵權內容。

      上一篇:了解真正的服務器
      下一篇:【技術補給站】第10期:分析內部運行機制,教你解決Redis性能問題
      相關文章
      亚洲色成人WWW永久在线观看| 久久精品国产亚洲麻豆| 亚洲中文字幕第一页在线| 国产精品亚洲精品爽爽| 亚洲三级中文字幕| 亚洲av永久无码精品三区在线4| 亚洲视频免费播放| 久久精品国产亚洲av水果派| 久久久亚洲精品视频| 亚洲国产精品一区| 亚洲人成网www| 亚洲综合久久1区2区3区| 亚洲精品国产成人中文| 亚洲国产成人精品无码区在线网站 | 亚洲成a人片77777群色| 亚洲欧洲国产综合| 亚洲国产成人久久三区| 中文字幕亚洲男人的天堂网络| 77777亚洲午夜久久多喷| 亚洲人成欧美中文字幕| 亚洲国产精品嫩草影院| 爱情岛亚洲论坛在线观看| 亚洲国产激情一区二区三区| 亚洲综合精品网站| 亚洲色成人网站WWW永久| 亚洲av永久无码精品国产精品| 亚洲成人动漫在线| 亚洲欧洲日产国产最新| 午夜在线a亚洲v天堂网2019| 亚洲人成色777777精品| mm1313亚洲精品无码又大又粗| 国产成人99久久亚洲综合精品| 国产亚洲av片在线观看18女人| 久久久青草青青亚洲国产免观| 亚洲男人的天堂在线播放| 亚洲欧洲精品视频在线观看| 精品国产成人亚洲午夜福利| 色噜噜的亚洲男人的天堂| 黑人大战亚洲人精品一区| 婷婷亚洲久悠悠色悠在线播放| 亚洲婷婷天堂在线综合|