web系統架構設計中需要知道的點(前端篇)


上周沒寫東西,這周寫點互聯網系統開發中需要了解的技術點,每個點都可以發散出去,連接更多的知識點,打算做個逐步細化的記錄。

一個應用的整個生命周期中(生,老,病,死)都需要有一個整體規划.

前期##

評估需求,根據需求提煉出其中隱含的非功能性要求,做為容量評估的參考。一般就是大致估算一下,技術發展到現在,如果是聊天或游戲應用,隨便一個服務器單機能能維持100W-160W左右的tcp長連接並進行通訊。所以普通的創業起步階段的應用一般不必太擔心設計問題,可以等業務量慢慢上來慢慢調整系統架構。

互聯網上許多數不清的小系統上線就是在碰運氣,在精益創業的指導下,為了測試業務模式,先弄個原型系統上了再說。有時沒用戶,用戶多了又頂不住,要找一群外援專家來救火,也算是幸福的煩惱。有些移動應用作者自己也不知道為什么突然就火了,然后又快速消失在市場中。

前端系統設計模式##

以http請求到達服務器的整個處理過程來說明。從服務器接收到http請求,在整個反應鏈路上直到打到最終數據庫上,每個可能的瓶頸點上都有相應地技術來支撐性能上的優化。

負載均衡###

如一個業務系統用戶有五百萬,需要根據活躍用戶在業務的高峰時期估算最大http請求數量,根據請求量設計前端反向代理,負載均衡策略;這塊要考慮常見(軟/硬負載方式)反向代理設施的差異性(nginx,lvs,f5,haproxy)

Nginx####

Nginx:HTTP層負載均衡,反向代理,跑遍全球的選擇。由於工作在七層上,所以可以支持對http url級別的轉發。隨便在網上偶遇個bug可能都是曝出一個enginx bad gateway的錯。

LVS####

lvs:tcp/udp層負載均衡,由於工作在四層,面對的都是連接,處理的都是dst ip,port;src ip,port的東西。

常用的轉發模式有DR(修改目標地址MAC),流量經過lvs,但ip包的返回不經過lvs,性能較好,lvs不會成為瓶頸。

NAT:網絡包的進出都要經過lvs,對lvs的負載會比DR模式高。

為了除單點,lvs的高可用需要用keepalived做雙機主備。

F5####

硬件產品,價格昂貴,價格很容易上百萬,有問題找廠家,其實這樣有時找線上找問題反而受到制約。

http緩存###

均衡器之后就是這里,這層級的緩存是為了減少應用服務器上大量靜態小文件(css,js,jpg)的讀取壓力。可選的有varnish,squid等。

Squid:老牌產品,支持正向/反向代理緩存,作為可持久化緩存,可以支持較大的容量,有自有的內存頁/磁盤頁管理,有些cdn產品也是基於此產品改造。

Varnish:設計為內存緩存,內存管理由操作系統控制,對於無持久化需求的靜態文件性能不錯,如圖片。

ngnix:擴展功能不錯,也有個緩存模塊,不過通常都是緩存自身的一些page。

Apache Traffic Server: Apache出品,也可作為一個不錯的選擇。

應用服務器###

反向代理之后的應用服務器數量(tomcat,jetty)要考量應用服務器本身的處理能力,如常規tomcat基准數據是1000qps,這個只是tomcat在開nio情況下平均的水平。

其處理性能還受到應用程序內處理邏輯,如緩存的應用,服務化應用在應用間rpc的消耗的時間。

最后打在數據庫上數據庫上之前還有大把的活需要做,減少數據庫的負擔。
又十點多了,下次再繼續吧。


文章來自微信平台「麥芽面包」。轉載請注明。


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM