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/
本文著作權歸作者所有,任何人或團體、機構全部轉載或者部分轉載、摘錄,請在文章明顯位置注明作者和原文鏈接,
轉載請註明出處,本文鏈接:https://www.uj5u.com/shujuku/452069.html
標籤:其他
