讀執行緒遠遠大於寫執行緒,那麼這個系統可以算上是OLAP型別的系統,併發問題需要具體問題具體分析。
一、資料庫層面
1、從查詢SQL層面去最佳化,結合業務,儘量做到最優,結合業務建議最優索引,儘量使用覆蓋索引,或是有排序場景則利用索引本身的排序。
2、從引數配置最佳化,資料庫的cache pool,和各種buffer size要設定合理,避免非熱點資料汙染熱點資料。
3、從架構層面最佳化,一主多從,讀寫分離,也可使用資料庫代理Proxy或是Mycat等做請求的負載均衡,資料量比較大時,做好資料庫的分庫、分表、分割槽等。
二、快取層
1、快取分為本地快取,遠端快取,本地快取如程序內的Map、List、Queue等,這種快取速度最快的,遠端快取比較常見有Memecached、Redis等因為更新少,熱點資料儘量儲存在快取中,應用層直接訪問快取層,快速返回資料,不過要注意快取的更新機制。
2、適當時,也需要採用分散式架構。
三、應用層
1、應用本身做好最佳化能夠極大地增加併發數,如運用無鎖佇列,CAS、分段鎖技術、執行緒池等都可以大大提高併發性。
2、業務上的最佳化,複雜業務簡單化,拆分,編排業務。
2、應用層採用分散式部署、避免單點故障
四:代理層
2、靜態資源使用CDN加速
讀執行緒遠遠大於寫執行緒,那麼這個系統可以算上是OLAP型別的系統,併發問題需要具體問題具體分析。
一、資料庫層面
1、從查詢SQL層面去最佳化,結合業務,儘量做到最優,結合業務建議最優索引,儘量使用覆蓋索引,或是有排序場景則利用索引本身的排序。
2、從引數配置最佳化,資料庫的cache pool,和各種buffer size要設定合理,避免非熱點資料汙染熱點資料。
3、從架構層面最佳化,一主多從,讀寫分離,也可使用資料庫代理Proxy或是Mycat等做請求的負載均衡,資料量比較大時,做好資料庫的分庫、分表、分割槽等。
二、快取層
1、快取分為本地快取,遠端快取,本地快取如程序內的Map、List、Queue等,這種快取速度最快的,遠端快取比較常見有Memecached、Redis等因為更新少,熱點資料儘量儲存在快取中,應用層直接訪問快取層,快速返回資料,不過要注意快取的更新機制。
2、適當時,也需要採用分散式架構。
三、應用層
1、應用本身做好最佳化能夠極大地增加併發數,如運用無鎖佇列,CAS、分段鎖技術、執行緒池等都可以大大提高併發性。
2、業務上的最佳化,複雜業務簡單化,拆分,編排業務。
2、應用層採用分散式部署、避免單點故障
四:代理層
2、靜態資源使用CDN加速