PAOXS協議
自己原文公眾號:
https://mp.weixin.qq.com/s/wsh1JwBv5uA3eDJzP4evBw
這幾天深入學習一下。這個分散式系統的一個協議。分散式系統顧名思義就是要分。但是分散式又要保證在分的情況下還要一致。這個就難了,如果不考慮一致,隨便。
保持資料同步的一種方法是在多個節點上同時更新資料。如果我有3臺機器做一個分散式系統。我只寫第一個(一隻羊薅羊毛)。那麼另外兩個把這些資料一次映象過去就結束了。這個難度相對較小。所以MySQL的MGR不少都是單主模式。
但是如果每個點寫入就難度大了。需要有一個協調者,但是協調者就一個如果處理不過來或者壞了怎麼辦?所以要多個協調者。
有了多個協調者問題解決了嗎?其實問題更大了。當有一塊表我們知道時間,當有兩塊表我們不知道時間。有的人會說選出一個leader。可以。但是這是leader flower模式,就像主從。我們說的是並行寫入。Oracle的RAC是叢集,而ADG就不是。因為ADG的DG是不可以寫的。當然Oracle19C開始可以寫了。那是表面。其背後原理是從庫接受寫的請求,但是不馬上直接,給主庫送過去,主庫執行了,再給從庫。這才能保證一致性性。否則直接寫從庫就不一致了。所以目前RAC的這個架構還沒有能打破。
那麼當1 2 3號機器一起被寫,如何處理。假如有個值它是10,在1號機上把它改成3 ,在2號機上改成5.那麼最後看到的是幾?3or5?這取決於執行的順序。如果是先3,那麼結果是5,如果是先5那麼結果是3.因為一個機器處理完畢要送給其他機器。後面覆蓋前面的。
要想一致只有一個辦法,每個機器接收到指令然後進行全域性的協調排序。這裡注意一下當多個分發器以後我們不能保證順序。訊息佇列的寫入順序一定是讀取順序嗎?問題越來越難解決了。
解決方案是設定鎖,然後排序。天啊,多少人單機的鎖都沒搞定,現在又是多協調鎖。這就是我們聽過的分散式鎖。有了鎖,那麼就有死鎖。(鎖等待還好辦一些)設定優先順序(你看又多了一個環節),單機的死鎖有人都跨不過去。這回鎖又多了,又複雜了。
所以我一直說單機是最好的架構。(考慮高可用容災的話,做叢集或者主從)單機沒有這些問題。
那有人說單機數量量大處理不了怎麼辦?答案見我上一篇公眾號。
除了大廠的資料量以外,我們一般的系統如果說單機資料量大處理不了。那麼放心、叢集的也處理不了。多花一些精力在資料庫設計和邏輯實現上吧。
來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/637517/viewspace-2847344/,如需轉載,請註明出處,否則將追究法律責任。
相關文章
- 【網路協議】IP協議、ARP協議、RARP協議協議
- RTSP協議、RTMP協議、HTTP協議的區別協議HTTP
- 【網路協議】UDP協議協議UDP
- Gossip協議也叫Epidemic協議(流行病協議)Go協議IDE
- IP協議(網路層協議)協議
- 協議協議
- 頁面連結跳轉--指定協議,半協議,無協議協議
- 【網路協議】TCP協議簡介協議TCP
- 路由協議與閘道器協議路由協議
- 淺談WebSocket協議、WS協議和WSS協議原理及關係Web協議
- 二進位制協議 VS 文字協議協議
- 生成樹協議與多生成樹協議協議
- 匯流排協議系列——USART協議初探協議
- Memcached 協議協議
- mysql協議MySql協議
- raft協議Raft協議
- HTTP 協議HTTP協議
- swift協議Swift協議
- OSPF協議協議
- 【TLS協議】TLS協議
- XModem協議協議
- [HTTP協議]HTTP協議
- SNMP協議協議
- Kerberos協議ROS協議
- SMB協議協議
- CMPP協議協議
- SSH 協議協議
- SFTP協議FTP協議
- 雲協議協議
- XMPP協議協議
- SNMP 協議協議
- PXE協議協議
- 優惠協議協議
- BGP協議協議
- TCP協議TCP協議
- http協議HTTP協議
- UART協議協議
- SPI協議協議