架構中五個重要的核心指標,分別是效能、可用性、伸縮性、擴充套件性和安全性這5個架構指標
瀏覽器訪問優化(瀏覽器快取、頁面壓縮傳輸、合理布局頁面、減少cookie傳輸)
2.cdn加速
3.反向**
如果請求靜態介面不卡了,但是動態資料還是卡,說明mysql處理的請求太多了,可以使用伺服器本地快取和分布式快取,也可以通過非同步操作方式來加快響應,在高併發請求的情況下,可以將多台應用伺服器組成乙個集群共同對外服務,提高整體處理能力,改善效能,具體如下:
一般來說,存入cache的資料的讀寫比在2:1以上;且應該是熱點資料。
需要考慮如果採用快取則可能帶來的資料短期內的不一致,或者如果實時更新快取可能帶來的效能和資源開銷。
需要考慮cache一旦失效,大量請求直接命中db可能帶來的服務效能雪崩。所以可以對cache採用集群化部署,以此避免丟失過多資料造成服務壓力陡增。
對於熱點資料考慮進行快取的預熱載入。比如高峰期來臨前,先將熱點資料提前存入快取。以此提高高峰期的服務效能。
為了避免惡意攻擊,一直query不存在的資料,導致cache無法命中而頻繁訪問db,可以將不存在的資料也進行快取並定期清理。同時有機制對惡意請求進行識別和封禁。
分布式快取應該去中心化並集中管理。通過不同例項間的互不通訊和同構來保證可擴充套件性,並降低系統複雜度。
2.非同步化(任何可以晚點做的事情都應該晚點再做,感覺像懶載入)
通過分布式訊息佇列來實現削峰的目的。通過業務配合技術來解決問題。比如12306的排隊。
3.集群
採用集群也是服務虛擬化的乙個體現。用以避免單點問題,同時提供更加高可用,高效能的服務。
4.**優化
進行資源復用。比如採用單例模式,比如採用連線池。
合理設定jvm引數,以最大程度避免不合理的full gc。
5.儲存效能優化
關係型資料庫的索引採用b+樹進行實現。而很多的nosql資料庫則採用了lsm樹進行儲存。lsm在記憶體中保留最新增刪改查的資料,直到記憶體無法放下,則與磁碟的下一級lsm樹進行merge。所以對於寫操作較多,而讀操作更多的是查詢最近寫入資料的場景,其效能遠高於b+樹;採用hdfs結合map reduce進行海量資料儲存和分析。其能自動進行併發訪問和冗餘備份,具有很高的可靠性。其等於是實現了raid的功能。
響應時間。
併發數。如果暫時沒有對應的準確監控,針對不同業務模型,可以有不一樣的併發數的預估。我們的系統進行峰值併發數預估的話,有一種比較粗略的計算方式,即全天請求平均每秒併發數 * 3。但也需要case by case。
吞吐量。比較常見的有qps(每秒查詢數)、hps(每秒http請求數)以及tps(每秒處理事務數)。
效能計數器。包括系統負載、執行緒數、cpu、記憶體使用情況等。可以用top、free、cat /proc/cpuinfo等命令來檢視。系統負載的定義為當前被cpu執行的執行緒數/等待被cpu執行的匯流排程數。當其值與邏輯cpu個數相同時是最佳狀態,其代表所有的資源都被最大限度地被利用。但也有人認為當負載為0.7倍邏輯cpu數時最佳。
網際網路是開放的,任何人在任何地方都可以訪問**。**的安全架構就是保護**不受惡意訪問和攻擊,保護**的重要資料不被竊取。
安全的5個要素:機密性、完整性、可用性、可控性和可審查性。
1、安全系統架構
1)安全服務是指計算機網路提供的安全防護措施,包括認證服務、訪問控制、資料機密性服務、資料完整性服務和不可否認服務。
2)特定的安全機制是用來實施安全服務的機制,包括加密機制、資料簽名機制、訪問控制機制、資料完整性機制、認證交換機制、流量填充機制、路由控制機制和公證機制。
3)普遍性的安全機制不是為任何特定的服務而特設的,屬於安全管理方面,分為可信功能度、安全標記、事件檢測、安全審計跟蹤和安全恢復。
2、安全保護等級
1)使用者自主保護級
2)系統審計保護級
3)安全標記保護級
4)結構化保護級
5)訪問驗證保護級
衡量**安全架構的標準就是針對現存和潛在的各種攻擊和竊密手段,是否有可靠的應對策略。
衡量乙個系統架構設計是否滿足高可用的目標,就是假設系統中任何一台或者多台伺服器宕機時,以及出現各種不可預期的問題時,系統整體是否依然可用。
一般就三個手段、冗餘、集群化、分布式。
**高可用的主要手段就是冗餘,應用部署在多台伺服器上同時提供服務,資料儲存在多台伺服器上相互備份,任何一台伺服器都不會影響應用的整體可以,通常的實現手段即把多台伺服器通過負載均衡裝置組成乙個集群。
擴充套件性(extensibility)指對現有系統影響最小的情況下,系統功能可持續擴充套件或提公升的能力。表現在系統基礎設施穩定不需要經常變更,應用之間較少依賴和耦合,當系統增加新功能時,不需要對現有系統的結構和**進行修改。這個沒啥好說。擴充套件性依賴於前期良好的架構設計。合理業務邏輯抽象,水平/垂直切割分布式化等等。
**可擴充套件架構的主要手段是事件驅動架構和分布式服務。
事件驅動通常利用訊息佇列實現,通過這種方式將訊息生產和處理邏輯分隔開。
伺服器服務則是將業務和可復用服務分離開來,通過分布式服務框架呼叫。新增加產品可用通過呼叫可復用的服務來實現自身的業務邏輯,而對現有產品沒有任何影響。
對此,《可擴充套件的藝術》一書提出了乙個更加系統的可擴充套件模型—— akf可擴充套件立方 (scalability cube)。這個立方體中沿著三個座標軸設定分別為:x、y、z。
整個擴充套件模型,用下圖來表示,其中原點代表完全無擴充套件的狀態。
服務盡量同構。db、cache在考慮分布式時盡量提前設計好擴充套件方案。也可以採用一些主流的對水平伸縮支援較好的nosql、memcached、hbase等。
(1)橫向分離:將不同的業務模組分離部署,實現系統的伸縮性;
(2)縱向分離:將業務處理流程上得不同部分分離部署,實現系統的伸縮性;
什麼是架構設計的五個核心要素
架構中五個重要的核心指標 分別是效能 可用性 伸縮性 擴充套件性和安全性。瀏覽器訪問優化 瀏覽器快取 頁面壓縮傳輸 合理布局頁面 減少cookie傳輸 2.cdn加速 3.反向 如果請求靜態介面不卡了,但是動態資料還是卡,說明mysql處理的請求太多了,可以使用伺服器本地快取和分布式快取,也可以通過...
職業成長的核心要素
道 1 定位 內驅力 內驅力是拉開人與人距離的發動機,也是提公升自我最核心的要素。是否真正的想提公升自己,慾望和野心有多強烈,就會決定自己能成為怎麼樣的人。2 本質 深度思考 要判斷是否正確?就要多問自己幾個問題?比如這件事情有多大的社會價值?是利己還是利他?與我的長遠人生目標是否一致?格局是否達到...
成功架構設計的關鍵要素
下面內容來自 軟體架構設計 是我的學習筆記。成功架構設計的關鍵要素 1 是否遺漏了至關重要的非功能性需求。非功能性需求 1 客戶 易用性,效能,可伸縮性,持續可用性和魯棒性 2 開發人員和維護人員 可擴充套件性,可重用性,可移植性,易理解性和易測試性等軟體開發期質量屬性。3 客戶組織 成本,上線時間...