分散式架構設計:1、橫向分層,將系統在橫向維度上切分成幾個部分,每個部分負責一部分相對比較單一的職責,例如:MVC經典模式。2、縱向分割,將系統功能模塊歸類切分成幾個部分,包裝成高內聚低耦合的模塊單元,不同功能模塊直接通過遠程調用協助工作。3、緩存技術,將是改善系統性能的第一手段,從上到下依次:瀏覽 ...
分散式架構設計:
1、橫向分層,將系統在橫向維度上切分成幾個部分,每個部分負責一部分相對比較單一的職責,例如:MVC經典模式。
2、縱向分割,將系統功能模塊歸類切分成幾個部分,包裝成高內聚低耦合的模塊單元,不同功能模塊直接通過遠程調用協助工作。
3、緩存技術,將是改善系統性能的第一手段,從上到下依次:瀏覽器緩存、反向代理緩存、靜態文件緩存、數據層緩存。
4、非同步處理,將一個複雜業務操作分成幾個階段,每個階段之間通過共用數據的方式進行非同步執行。
5、事件驅動,通過在低耦合的模塊之間傳輸事件消息,以保持模塊的鬆散耦合,並藉助事件消息的通信完成模塊之間的合作。發佈-訂閱模式,新增業務,只要對該類消息感興趣,即可訂閱該消息,對原有系統沒有任何影響。
6、數據存儲,關係資料庫、NoSql、日誌文件。
考慮問題
性能問題
1、web端,負載降低服務處理請求壓力,使用瀏覽器緩存,磁碟啟用壓縮,代碼設計上CSS放在上面、JS放在下麵,先渲染樣式。減少Cookie傳輸,推薦CDN加速。
2、ws端,緩存,緩存,還是緩存。遵循二八定律:80%的訪問落在20%的數據上,利用Hash表和記憶體的高速訪問特性,將這20%的數據緩存起來。SQL優化、服務介面復用,多線程。
3、存儲端,在關係型資料庫mysql中普遍使用B+樹作為索引,在實際中索引也分為聚集索引和非聚集索引,而在hbase中則採用的是LMS樹組織數據的。兩者各有優劣協作使用。MySql實現主從同步讀寫分離。
安全問題
1、XSS攻擊,跨站點腳本攻擊;黑客通過篡改網頁,註入惡意HTML腳本,用戶在瀏覽網頁時,控制用戶瀏覽器進行惡意操作
2、註入(SQL/OS)
3、CSRF攻擊,跨站點請求偽造,利用瀏覽器Cookie或者伺服器Session策略,盜取用戶身份
4、Error Code
5、邏輯跳過
6、敏感數據
7、HTML註釋等
服務策略
1、服務分級,將核心業務和服務集群與優先使用更好的資源。
2、服務熔斷,避免服務故障引發雪崩。
3、服務超時,設置超時;一旦超時,框架拋出異常。
4、服務降級,為了保證核心應用和功能的正常運行,需要對服務進行降級處理
5、冪等性,在服務層保證服務重覆調用和調用一次產生的結果相同。
——————————————
推薦閱讀:
filebeat+kafka+strom+logstash+es 輿情採集系統