資料庫讀寫分離的目的是什麼;讀寫分離會帶來什麼問題?如何解決;MySQL主從複製的原理清楚嗎;讀寫分離具體怎麼實施呢 ...
1. 資料庫讀寫分離的目的是什麼?
通常業務系統是讀多寫少,讀寫分離是將對資料庫的讀寫操作分散到不同的節點上,能夠小幅提升寫性能,大幅提升讀性能。通常採用資料庫一主多從的方式,主庫可以讀寫,從庫只讀。
2. 讀寫分離會帶來什麼問題?如何解決?
主庫和從庫的數據存在延遲。比如寫完主庫之後,主庫的數據同步到從庫是需要時間的,這個時間差就導致了主庫和從庫的數據不一致性問題。解決辦法是在不能忍受延遲的場景強制讀主庫。
3. MySQL主從複製的原理清楚嗎?
- 主庫將資料庫中數據的變化寫入到 binlog
從庫連接主庫。 - 從庫會創建一個I/O線程向主庫請求更新的 binlog。
- 主庫會創建一個 binlog dump 線程來發送 binlog ,從庫中的 I/O 線程負責接收。
- 從庫的 I/O 線程將接收的 binlog 寫入到 relay log 中。
- 從庫的 SQL 線程讀取 relay log 同步數據本地(也就是再執行一遍 SQL )。
4. 讀寫分離具體怎麼實施呢?
常用組件有下麵2個:
- Sharding-JDBC:定位為輕量級Java框架,在Java的JDBC層提供的額外服務。它使用客戶端直連資料庫,以jar包形式提供服務,無需額外部署和依賴,可理解為增強版的JDBC驅動,完全相容JDBC和各種ORM框架。
- MyCat:實現了MySQL協議的伺服器,前端用戶可以把它看作是一個資料庫代理,用MySQL客戶端工具和命令行訪問,而其後端可以用MySQL原生協議與多個MySQL伺服器通信,也可以用JDBC協議與大多數主流資料庫伺服器通信,其核心功能是分庫分表,配合資料庫的主從模式還可實現讀寫分離。
參考(摘抄的文字版權屬於原作者):
https://javaguide.cn/high-performance/read-and-write-separation-and-library-subtable.html
https://time.geekbang.org/column/article/77636
https://zhuanlan.zhihu.com/p/66245006
https://www.codingbrick.com/archives/546.html
公眾號:編碼磚家
出處:https://www.cnblogs.com/xiaoyangjia/
本文版權歸作者所有,任何人或團體、機構全部轉載或者部分轉載、摘錄,請在文章明顯位置註明作者和原文鏈接。