高效能與可擴充套件

2021-09-06 09:11:46 字數 702 閱讀 8422

效能低主要是由於i/o操作導致的延遲,導致了等待

==>cpu很閒,處理速率卻上不去

解決辦法:

減少i/o操作:

加入快取來緩解i/o操作

讓出主線程,開啟單獨執行緒來處理i/o操作(主線程就能處理更多的iis請求)

把大面積的資料(比如某字段中儲存了1w個字串,並且select了多行...omg!),壓縮後儲存到磁碟,也能減少i/o消耗的時間

如果系統是分多個物理計算機通訊的,也要壓縮message的內容,比如wcf

可是,問題又來了:

cpu現在很高了,咋辦?

那麼又要來解決辦法了:

可擴充套件是考慮未來一段時間而提出的部分提前設計概念,一般用得多的是在框架平台中,抽象的說法就是:抽象+隔離具體實現+暴露熱點

抽象:橋接模式、模版模式

隔離具體實現:定義介面、使用介面、然後啥都不做,就等著別人去實現...

暴露熱點:就是鉤子,提供預設實現,允許別人自定義

例子(記錄日誌):

只要寫個ilog介面,提供乙個方法write(str),然後就用吧,別管其他的了,管它是寫檔案?寫db?寫msmq?寫service broker?寫window事件?在當前計算機上寫?在其他計算機上寫?都不管,這裡只管呼叫

具體咋處理完全不管,讓應該管的去管吧,夠抽象了吧,夠隔離了吧,夠暴露...

這次確實沒啥料,就免點「推薦」了...

echo 高效能,可擴充套件,極簡的Go Web框架

以前學習nodejs的時候,使用過express,這是乙個基於 node.js 平台,快速 開放 極簡的 web 開發框架。echo是乙個高效能,可擴充套件,極簡的go web框架。其官網如下圖所示 具體使用見官方指南 在github上面建立乙個go echo helloweb的空倉庫,如下圖所示 ...

高併發 (極客)(高效能 高可用 高可擴充套件)

三高 高效能 高可用 高可擴充套件 提公升單機效能 多機 集群 快取非同步 資源池化 指標 響應平均值,最大值,分位值,吞吐量 1.資料庫 資料庫擴充套件 讀寫分離 減少讀操作的壓力 分庫分表 sharding redo log mysql 裡經常說到的 wal 技術,wal 的全稱是 write ...

多執行緒效能與可伸縮性

1 單執行緒程式不需要執行緒排程也不需要同步開銷,而且不需要使用鎖來保證資料結構的一致性。在多執行緒的排程和協調中都需要一定的效能開銷。對於為了效能而引入多執行緒的程式,並行帶來的效能提公升必須要超過併發導致的開銷。2 上下文切換 如果可執行的執行緒數大於 cpu 的數量,那麼作業系統最終會將某個正...