欧美性猛交XXXX免费看蜜桃,成人网18免费韩国,亚洲国产成人精品区综合,欧美日韩一区二区三区高清不卡,亚洲综合一区二区精品久久

打開(kāi)APP
userphoto
未登錄

開(kāi)通VIP,暢享免費電子書(shū)等14項超值服

開(kāi)通VIP
為什么MySQL要升級組復制?1分鐘系列
前幾天發(fā)了《Galera,MySQL主從之外的另一種選擇》之后,很多朋友在評論里留言:
“這不就是Oracle Rac嗎?”
“這不就是MGR嗎?”

思路比結論重要,為什么比是什么重要,今天就花1分鐘,說(shuō)下這里面架構演進(jìn)的思路。
畫(huà)外音:大家不想聽(tīng)底層細節,就不深入細節了。

最早的數據庫都是單機的,其最大的痛點(diǎn)是啥?
無(wú)法線(xiàn)性擴展。

磁盤(pán)能力無(wú)法線(xiàn)性擴展,內存能力無(wú)法線(xiàn)性擴展,計算能力無(wú)法線(xiàn)性擴展。

如今,喜歡創(chuàng )造概念的架構師們,把這種架構稱(chēng)為Shared Everything”架構。

如上圖所示,DISK/MEM/CPU 都耦合在一個(gè)DBMS進(jìn)程內,必須部署在一臺服務(wù)器上,完全處于競爭態(tài),無(wú)法線(xiàn)性擴展,并行處理較差。

數據庫單機部署,就是典型的“Shared Everything”架構。

如何來(lái)提升系統的并行能力呢?
最容易想到的,就是把無(wú)狀態(tài)的邏輯計算部分,從DBMS進(jìn)程內拆分出來(lái),做成可擴展的微服務(wù)集群,實(shí)現“計算與存儲分離”。
如上圖所示:
(1)CPU邏輯計算拆分出了獨立的進(jìn)程,可以集群部署,能夠線(xiàn)程擴展;
(2)DISK/MEM 仍耦合在一個(gè)進(jìn)程內,仍處于競爭態(tài),無(wú)法線(xiàn)性擴展;

Oracle Rac,就是典型的Shared Disk”架構,核心思路是“計算與存儲分離”。

存儲部分磁盤(pán)IO仍有集中的資源競爭,還有沒(méi)有進(jìn)一步的優(yōu)化空間呢?
最容易想到的,就是把數據打散,分布到不同的數據庫實(shí)例上,每部分數據享有單獨的資源。
如上圖所示:
(1)把整體數據存儲分為了N份,每份之間沒(méi)有交集;
(2)每份數據的 DISK/MEM/CPU 都在一個(gè)DBMS進(jìn)程內,部署在一臺服務(wù)器上;
(3)每份數據的資源之間的沒(méi)有競爭;

沒(méi)錯,這就是“水平切分”,它是典型的Shared Nothing”架構。

Shared Everything/Disk/Nothing 這些高大上的名詞,進(jìn)一步認識了不?

事情還沒(méi)完,水平切分存在什么問(wèn)題呢?

水平切分雖然是一種可擴展架構,能夠實(shí)現線(xiàn)性擴展資源,但它會(huì )使得調用方失去數據的全局視野,使得調用方能力受限
(1)無(wú)法實(shí)現全局JOIN;
(2)無(wú)法實(shí)現全局排序;
(3)無(wú)法支持集函數;
(4)原訪(fǎng)問(wèn)一次DBMS的操作,需要調用多次;
(5)…
把一些原本屬于DBMS職責的工作,轉嫁到調用方。

如何解決“線(xiàn)性擴展能力”,同時(shí)又解決“失去全局視野”與“調用方能力受限”的問(wèn)題呢?

最容易想到的方案是,數據庫主從集群,每份數據都進(jìn)行復制,每個(gè)實(shí)例都獨享 DISK/MEM/CPU 資源,避免實(shí)例之間的資源競爭。
如上圖所示:
(1)把整體數據存儲分復制了N份,每份之間數據都一樣;
(2)每份數據的 DISK/MEM/CPU 都在一個(gè)DBMS進(jìn)程內,部署在一臺服務(wù)器上;
(3)每份數據的資源之間的沒(méi)有競爭;

理想很豐滿(mǎn),現實(shí)很骨干,思路沒(méi)問(wèn)題,但實(shí)際執行“復制”的過(guò)程中,會(huì )碰到一些問(wèn)題。

以MySQL為例,有3種常見(jiàn)的復制方式
(1)異步復制;
(2)半同步復制;
(3)組復制;

第一種,異步復制(Asynchronous Replication)

又叫主從復制(Primary-Secondary Replication),是互聯(lián)網(wǎng)公司用的最多的數據復制與數據庫集群化方法,它的思路是,從庫執行串行化后的主庫事務(wù)。
其核心原理如上圖所示:
(1)第一條時(shí)間線(xiàn):主庫時(shí)間線(xiàn);
 - 主庫執行事務(wù)
 - 主庫事務(wù)串行化binlog
 - binlog同步給從庫
 - 主庫事務(wù)提交完成

(2)第二條/第三條時(shí)間線(xiàn):從庫時(shí)間線(xiàn);
 - 收到relay log
 - 執行和主庫一樣的事務(wù)
 - 生成自己的binlog(還可以繼續二級從庫)
 - 從庫事務(wù)提交完成

從這個(gè)時(shí)間線(xiàn)可以看到:
(1)主庫事務(wù)提交;
(2)從庫事務(wù)執行;
是并行執行的,主庫并不能保證從庫的事務(wù)一定執行成功,甚至不能保證從庫一定收到相關(guān)的請求,這也是其稱(chēng)作“異步復制”的原因。

第二種,半同步復制(Semi-synchronous Replication)

為了解決異步復制中“不能保證從庫一定收到請求”等問(wèn)題,對異步復制做了升級。
其核心原理如上圖所示:
(1)第一條時(shí)間線(xiàn):主庫時(shí)間線(xiàn);
 - 主庫執行事務(wù)
 - 主庫事務(wù)串行化binlog
 - binlog同步給從庫
 - 等從庫確認收到請求,主庫事務(wù)才提交完成

(2)第二條/第三條時(shí)間線(xiàn):從庫時(shí)間線(xiàn);
 - 收到relay log
 - 執行和主庫一樣的事務(wù),并給主庫一個(gè)確認
 - 生成自己的binlog(還可以繼續二級從庫)
 - 從庫事務(wù)提交完成

從這個(gè)時(shí)間線(xiàn)可以看到:
(1)主庫收到從庫的ACK,才會(huì )提交;
(2)從庫收到請求后,事務(wù)提交前,會(huì )給主庫一個(gè)ACK;

半同步復制存在什么問(wèn)題呢?
(1)主庫的性能,會(huì )受到較大的影響,事務(wù)提交之前,中間至少要等待2個(gè)主從之間的網(wǎng)絡(luò )TTL;
(2)從庫仍然有延時(shí),主從之間數據仍然不一致;
(3)主從角色有差異,主節點(diǎn)仍然是單點(diǎn);

大數據量,高并發(fā)量的互聯(lián)網(wǎng)業(yè)務(wù),一般不使用“半同步復制”,更多的公司仍然使用“異步復制”的模式。

最后是MySQL5.7里,新提出的MySQL組復制。

第三種,組復制(MySQL Group Replication,MGR)

MGR有一些帥氣的能力:
(1)解決了單點(diǎn)寫(xiě)入的問(wèn)題,一個(gè)分組內的所有節點(diǎn)都能夠寫(xiě)入;
(2)最終一致性,緩解了一致性問(wèn)題,可以認為大部分實(shí)例的數據都是最新的;
(3)高可用,系統故障時(shí)(即使是腦裂),系統依然可用;
如上圖所示:
(1)首先,分組內的MySQL實(shí)例不再是“主從”關(guān)系,而是對等的“成員”關(guān)系,故每個(gè)節點(diǎn)都可以寫(xiě)入;
(2)其次,增加了一個(gè)協(xié)商共識的認證(certify)環(huán)節,多數節點(diǎn)達成一致的事務(wù)才能提交;
畫(huà)外音:Garela也是此類(lèi)機制。

和MySQL傳統的復制不同,MGR的核心是分布式共識算法,類(lèi)似于Paxos。

基于上一篇《Galera,MySQL主從之外的另一種選擇》的留言,似乎大部分人都非常熟悉算法的底層內核,本篇就先不展開(kāi)了。
畫(huà)外音:感興趣的人多的話(huà),再展開(kāi)細講。

不知不覺(jué)寫(xiě)了幾千字了,收個(gè)尾做個(gè)總結吧。

三類(lèi)常見(jiàn)數據庫架構
Shared Everything:數據庫單機系統,資源競爭;
Shared DiskOracle Rac,計算與存儲分離;
Shared Nothing水平切分,復制集群,資源完全隔離;

三類(lèi)常見(jiàn)復制方式
異步復制:傳統主從,互聯(lián)網(wǎng)公司最常用;
半同步復制:從庫確認,主庫才提交;
組復制:MySQL 5.7的新功能,核心在于分布式共識算法;

知其然,知其所以然。
思路比結論更重要。
畫(huà)外音:對不起,讀完本文不止1分鐘。
MySQL內核相關(guān)文章

緩沖池(buffer pool),這次徹底懂了!

寫(xiě)緩沖(change buffer),這次徹底懂了!

日志緩沖(log buffer),這次徹底懂了!

double write buffer,這次徹底懂了!

關(guān)于MySQL,這篇都沒(méi)人贊?


調研:
Galera/MGR內核,后續還要寫(xiě)嗎?
希望大家有收獲,謝。
本站僅提供存儲服務(wù),所有內容均由用戶(hù)發(fā)布,如發(fā)現有害或侵權內容,請點(diǎn)擊舉報。
打開(kāi)APP,閱讀全文并永久保存 查看更多類(lèi)似文章
猜你喜歡
類(lèi)似文章
MySQL主從復制什么原因會(huì )造成不一致,如何預防及解決?
架構師之路,分布式架構下數據庫一致性常用方法初探
高并發(fā)架構系列:數據庫主從同步的3種一致性方案實(shí)現,優(yōu)劣比較
關(guān)于MySQL的主從復制模式
【11月10日】Redis 主從復制技術(shù)
MySQL主從延時(shí)這么長(cháng),要怎么優(yōu)化?
更多類(lèi)似文章 >>
生活服務(wù)
分享 收藏 導長(cháng)圖 關(guān)注 下載文章
綁定賬號成功
后續可登錄賬號暢享VIP特權!
如果VIP功能使用有故障,
可點(diǎn)擊這里聯(lián)系客服!

聯(lián)系客服

欧美性猛交XXXX免费看蜜桃,成人网18免费韩国,亚洲国产成人精品区综合,欧美日韩一区二区三区高清不卡,亚洲综合一区二区精品久久