OceanBase如何解决支付宝数据库的高一致性
該文章來自于阿里巴巴技術協會(ATA)精選文章。
傳統數據庫通過共享存儲保障主備庫的數據一致性,去除共享存儲后,由于網絡、服務器、磁盤等的不可靠,數據庫的主庫與備庫的數據一致性成為很大的挑戰(更多信息參見下文“共享存儲能否解決互聯網數據庫的一致性”)。OceanBase立足于互聯網,必須解決互聯網數據庫的數據一致性問題,不僅要為淘寶、天貓等商業系統提供數據庫,而且要為支付寶等金融系統提供數據庫。
數據庫數據一致性問題的根源是軟件(操作系統軟件、網絡軟件、應用軟件等)和硬件(網絡硬件、服務器硬件、磁盤等)的不可靠,因此解決這個問題的根本方法是冗余。傳統RAID技術(例如RAID10,RAID5)等提供了較高的可靠性,但如果所在的服務器故障,則數據還是無法訪問,因此也無法保證數據的高一致性。為了解決這個問題,OceanBase引入了云計算思路和Paxos協議,通過3個(或者更多節點)的投票來保證數據的高度一致,并兼顧服務的高可用,如下圖:
上述三個機群構成一個數據庫,其中一個是主機群,所有事務都由主機群的UpdateServer(稱為主UpdateServer,其他UpdateServer稱為備UpdateServer)執行,事務的redo log同步到3個UpdateServer中的超過半數(即至少2個,包括主UpdateServer自己),則事務成功并應答客戶。如果3個UpdateServer中有一個故障:
*主UpdateServer故障:剩余的兩個UpdateServer會自動選舉出一個新的主UpdateServer(參見后文“OceanBase分布式選舉的實現”),由于舊的主UpdateServer數據至少在一個活著的UpdateServer中存在,因此數據不會有任何丟失,兩個活著的UpdateServer經過很短時間(通常是毫秒級)的相互同步后就可以繼續對外服務,保證了數據的一致性和服務的高可用。
*單個備UpdateServer故障:主UpdateServer有全部數據,剩余兩個UpdateServer仍然超過半數,數據一致性和服務都不受任何影響。
如果把上述三個機群部署出于三個不同的機房,那么即使一個機房出現電源、網絡或者空調等故障,剩余兩個機群仍然能夠繼續工作,數據一致性和服務可用性都不受影響。如果采用5機群部署,則系統甚至可以抵御2個機群的故障。
上述方案已經用于支付寶的交易庫和其他核心系統并在線上生產運行中。
總結
以上是生活随笔為你收集整理的OceanBase如何解决支付宝数据库的高一致性的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: Angular 学习笔记——servic
- 下一篇: linux cmake编译源码,linu