Open 0x171-0 opened 2 years ago
在程式當中會需要設定不同連線嗎?還是說 DB 會自動做 Load Balance?好像 Mongo 會自動做?
現在很多 ORM 好像都可以設定 read/write 的連線 ex: NodeJS Sequelize
ㄧ主多從下在 Slaves 前面可以放 Load Balancer ex: HA Proxy (ex: https://www.serverlab.ca/tutorials/linux/network-services/using-haproxy-to-load-balance-mysql-slave-servers/)
DB 有沒有自己的機制我就不清楚了🧐
感謝大家分享,我昨天照著 AK4codee 分享的 MySQL 主從設定 實作有成功喔,Kyle 分享的 ORM 的部分,我也查了我們公司使用的 TypeORM,目前我們搭配 Posgres 最多,也是可以在連接的 config 直接設定,可以參照 官方文件 Replication 的章節 看起來跟 Sequelize 設定方式幾乎一樣,另外我也查了 Posgres 跟 Redis 的 主從設定方式,感覺目前這三種 DB 設定方式滿像的,都是透過改 config 檔案就可以達成主從的設置。
RDBMS 的 水平 auto-scaling 應該是做不到,還是會事先分配。
最後一題,KK 早期都是用 offset,跳過的過程是 full scan,而不是直接跳過去。後來都用 cursor,先用時間戳的做法,但時間點太近會有跳掉的問題,後來用 時間戳+id 做雙 column 就能很快地跳到該筆數。
邏輯日誌可以鬆偶和,概念類似 Git,不管是哪種 DB 都一定有 Row。
WAL 跟引擎有很大的關係可參照前面第三或四章,與本身 DB 內部的演算法很相關。
Message Queue 用 Kafka 會紀錄 offset 不會掉資料,Redis 本身則沒對遺失資料做什麼處理。
Mongo 有分三種:單機、雙機和叢集版。 叢集版會有 Coordinator,即 Read、Write 和 Coordinator 三種角色。 新的 Node 加進來時,只要讓 Coordinator 知道就好。 但 Coordinator 是固定的,若掛掉有一個評分機制會讓別人替補。
RDBMS 則很難做到 自動的 Load Balance。
5.1 Quetion
Implementation
Knowledge