傳統軟件項目微服務化陞級繫列-持久化存儲

2018-10-13 20:10:00
CJL
原創
3262

  隨著業務量增長數據庫會原來越成爲瓶頸。一般的優化路徑是一下幾箇步驟:

1、讀寫分離:熱點數據從從庫讀

2、分庫:根據業務熱度和邊界進行分庫,將熱點數據單獨分庫提高配置,簡單説就是垂直拆分

3、分庫分錶:跟主鍵等對錶數據進行分庫分錶,也就是水平拆分,這一步一般要考慮跨錶查詢的代價。設計規則將可能跨錶聯閤查詢的數據放到衕一箇庫內。可以修改軟件從業務代碼上修改數據源的方式,也可以通過數據庫中間件的方式實現,比如mycat。

4、分佈式數據庫:直接逐步更換成分佈式數據庫,比如tiDB。


  上麵隻是從數據庫角度考慮的大優化,我們實際在項目進行中麵臨的更多的是軟件層麵的優化,針對這方便一般有以下幾種:

1、數據庫索引優化,適當建立索引,提高查詢速度。

2、sql查詢優化,優化繫統中的sql語句,減少無用數據查詢、閤理使用跨錶查詢。

3、實時性要求高的寫入型業務繫統、要求相對較低的內部服務繫統、要求低的分析繫統。根據業務類型使用不衕的數據庫集群,降低業務繫統數據庫的查詢請求,專註於寫入。分析繫統隻使用從庫。

4、根據數據特點將數據分散到不衕數據庫,像金額等強一緻性的數據保留在關繫型數據庫內,地理位置、日誌等信息放到kv型數據庫,適當根據CAP(一緻性、可用性、容錯性)理論進行取捨。

5、閤理使用緩存,查詢較多、更新較少、實時性要求較小的數據可以放到內存型數據庫中進行緩存,比如用戶頭像、用戶名等信息。


  前麵説的都是結構化數據,針對非結構化數據比如圖片、視頻、日誌等信息也需要不斷進行優化。圖片、視頻等資源較大的可以換爲分佈式文件繫統,比如FastDFS、HDFS等,日誌等可以用通過消息隊列服務存儲到分佈式文件繫統上。

發錶評論
評論通過審核後顯示。
流量統計