阿里的Oceanbase做異地多活, 而阿里又說異地多活是由DTS來做,那麼問題來了,到底用的是哪個?


不同的應用場景。如果是OceanBase之間的同步,無論同城或者異地,可以用OceanBase內置的同步機制,比如支付寶的會員現在採用了三地五中心部署,也就是一個資料庫跨地域部署在三個城市(城市級故障時RPO=0,RTO=幾十秒,https://mp.weixin.qq.com/s/qyFbqCQr-iAY1A8VfQuYKA ),由於讀訪問量大,所以同時使用了OceanBase的讀庫功能,會員庫到會員讀庫的同步就是OceanBase內置的同步機制,包括DDL,類似於主庫到備庫的同步。


OceanBase等資料庫一般可以部署在同城多機房,因為延時小本質上和同機房差不多。而跨地域的機房延時大,通常部署多套集群,集群間一般都通過dts這種數據同步工具進行同步。


不是餅廠的,也不了解這兩個產品,不過一般大廠里的類似描述,絕大多數你可以理解為,一部分業務用了這個,另一部分業務用了那個……


ob本身是有數據冗餘(應該是類paxos,阿里雲的polydb和xcluster也都滿足)的多備份實現,能滿足機房容災時數據高可用要求。適用於對延遲不敏感業務場景或同城距離近的機房間的容災多活。

dts是支持異構數據源的複製備份服務,也支持ob的數據協議,是非同步的,也就是有數據丟失的可能性,rpo無法滿足金融級別為o的要求。在螞蟻或者阿里,核心系統應該都是通過dts來支持多活架構的數據複製需要,原因是用ob那類方式在機房間會有無法跨越的延遲問題,對核心業務鏈路有很大影響。至於如何解決rpo為o的需求,則是允許「壞」數據存在,做到區分「好」數據和「壞」數據的方法就好。

在螞蟻或阿里有比較長的核心鏈路場景下的異地多活涉及的不單單是數據問題,還有路由,流量調度,部署調度等等問題。


你真皮


這個不衝突啊,ob是分散式關係型資料庫,自帶數據同步功能(多副本,可異地部署),DTS是個第三方的數據同步工具,可以做各種異構資料庫的數據同步。ob是內置數據同步,dts是第三方工具同步。知乎首答,兩個玩意工作中都用過


所有資料庫都需要總有異地多活的能力,有的自身支持,有的依賴外部系統來做數據同步。

mysql用dts來做異地多活,ob自身總有異地多活的能力,沒啥衝突。


昨天一個 ob,今天一個 polar,牛皮吹得梆梆響


可以理解為不同業務用了不同技術。


推薦閱讀:

oceanbase和oracle未來會怎樣?會代替掉oracle嗎?或者說oracle以後會沒落嗎?

TAG:OceanBase | NewSQL | 分散式資料庫 |