《從0開始學架構》 02 高效能架構模式

2022-07-11 01:51:11 字數 1563 閱讀 3364

目錄

讀寫分離:資料庫主從集群(一主一從或一主多從),主負責讀寫、從僅負責讀

適用場景:分散了資料庫讀寫操作的壓力,適用於讀多寫少的情況。

兩個設計細節點:主從複製延遲問題和實現方式

1)主從複製延遲

2)實現方式

使用場景:分散了資料庫的儲存壓力。

分庫:按業務模組將資料分散到不同資料庫上。

帶來的問題

1)join操作問題。原本在同一資料庫中的表分散到不同資料庫中,導致無法使用join查詢

2)事務問題。表分散到不同資料庫中,無法通過事務統一修改。

3)成本問題。本來一台機器的事情,現在要多台。

分表:對單錶資料進行拆分。

兩種方式:垂直分表和水平分表。注意:可能不止分一次。

垂直分表

水平分表帶來的問題

適合錶行數特別大的表。當表的資料量達到千萬級別時,要警覺起來,這很可能是架構效能瓶頸或隱患。

hash路由

配置路由

join操作

count()操作

增加記錄數表,包含table_name、row_count兩個字段,每次插入或刪除子表資料都更新記錄數表

order by操作

實現方式:程式**封裝和中介軟體封裝。

關聯式資料庫的缺點

常見nosql方案

快取典型使用場景

「程式**實現」的中間層方式 或者 獨立的中介軟體

單伺服器高效能關鍵之一:伺服器採取的併發模型。

io模型:阻塞、非阻塞、同步、非同步。

程序模型:單程序、多程序、多執行緒。

參考《unix網路程式設計(三卷本)》

ppc:process per connection*(乙個連線乙個程序)

優點都是實現簡單,缺點是都無法支撐高併發的場景

單伺服器高效能模式:reactor與proactor

io多路復用

io多路復用實現方式:select、poll、epoll

reactor

高效能集群的複雜性體現在需要增加乙個負載均衡器及選擇乙個合適的負載均衡演算法。

負載均衡分類

dns負載均衡本質是dns解析同乙個網域名稱可以返回不同ip位址,常用來實現地理級別的均衡。

缺點:缺點:

3種負載均衡可以組合使用。組合原則為:dns負載均衡用於實現地理級別的負載均衡;硬體負載均衡用於實現集群級別的負載均衡;軟體負載均衡用於實現機器級別的負載均衡。

負載均衡演算法較多,大致可分為以下幾類:

負載均衡類:根據伺服器負載進行分配,連線數、io使用率等

效能最優類:優先將新任務分配給響應最快的伺服器

hash類:常見的有源位址hash,session id hash

從0開始學架構 高效能架構模式

目錄 儲存高效能 關係型資料庫 nosql 快取 計算高效能 單伺服器高效能 集群高效能 讀寫分離 一主多從,一主一從 主從複製延遲解決方案 1.寫操作後的讀操作指定發給資料庫主伺服器 2.讀從機失敗後再讀一次主機 3.關鍵業務讀寫操作全部指向主機,非關鍵業務採用讀寫分離 分庫分表 業務分庫 joi...

從0開始學架構 推薦

程式設計師的成長繞不開架構設計,有時架構設計就像鴻溝一樣擋在程式設計師晉公升之路上,只要跨過去就可以海闊天空。但不少技術能力很強的程式設計師依然不能完全掌握架構設計,這與架構設計的思維方式和訓練機制與寫 有很大差異有關,加之人們對架構設計存在很多誤區,缺乏一套行之有效的架構設計方 就可能導致在實踐過...

《從0開始學架構》 學習筆記(基礎篇和高效能篇)

4月份在某網訂閱了李運華先生的 從0開始學架構 課程,目前已經更新了22期,其中前21期介紹的是架構基礎知識篇和高效能篇,學習完後對整體的架構知識增進了一些了解,所以把心得整理記錄下來。要說對這個課程的評價如何呢?總體而言還是不錯的,尤其是適用於從0開始未接觸過架構設計的同學們,但如果對於有些架構經...