OceanBase數據庫代理ODP(OceanBase Database Proxy,又稱OBProxy)是OceanBase數據庫的接入層,負責將用戶的請求轉發到合適的OceanBase數據庫實例上進行處理。ODP是獨立的進程實例,獨立于OceanBase數據庫實例部署。ODP監聽網絡端口,兼容MySQL網絡協議,支持使用MySQL驅動的應用直接連接OceanBase數據庫。ODP能夠自動發現OceanBase集群的租戶及數據分布信息,對于代理的每一條SQL語句,能盡可能識別出該語句將要訪問的數據,并將該語句直接轉發到數據所在服務器的OceanBase數據庫實例。
視頻講解如下 |
---|
【趙渝強老師】OceanBase OBServer節點的接入層 |
客戶端通過ODP訪問OceanBase數據庫的數據鏈路如下圖所示。
作為OceanBase數據庫的關鍵組件,ODP具有以下特性:
- 連接管理
針對一個客戶端的物理連接,ODP維持自身到后端多個OBServer節點的連接,并維持了每個OBServer節點連接的會話狀態,保證了客戶端高效訪問各個OBServer節點。
- 最佳路由
ODP充分考慮用戶請求涉及的副本位置、用戶配置的讀寫分離路由策略、OceanBase多地部署的最優鏈路,以及OceanBase各機器的狀態及負載情況,將用戶的請求路由到最佳的OBServer節點,最大程度地保證了OceanBase整體的高性能運轉。
- 高性能轉發
ODP完整兼容MySQL協議,并支持OceanBase自研協議,采用多線程異步框架和透明流式轉發的設計,保證了數據的高性能轉發,同時確保了自身對機器資源的最小消耗。
- 易運維
ODP本身無狀態,支持無限水平擴展,支持同時訪問多個OceanBase集群。可通過豐富的內部命令對ODP狀態進行實時監控,這使得運維簡單便利。
- 高可用
ODP高可用分為兩部分:一方面保證自身高可用,持續提供代理服務;另一方面ODP是OceanBase高可用體系的主要組成部分,可以對用戶屏蔽宕機、升級等情況,保證OceanBase數據庫服務的穩定和快速恢復 。
- 專有協議
ODP與OBServer節點默認采用了OceanBase專有協議,如增加報文的CRC校驗保證與OBServer節點鏈路的正確性,增強傳輸協議以支持Oracle兼容性的數據類型和交互模型。