博客 / 詳情

返回

YashanDB共享集羣V23.3 新特性解讀

孟凡彬 YashanDB集羣首席架構師
本文基於孟凡彬2024年11月在2024年國產數據庫創新生態大會“根”技術專場的演講整理形成,主要對YashanDB共享集羣近一年發佈的新特性進行原理探討與技術解析。

2023年11月,YashanDB首次推出採用單庫多實例架構的多活共享集羣形態(YashanDB for Cluster,YAC),並在今年3月,崖山共享集羣也發佈了首個長期維護的商用集羣版本。這一年,YashanDB持續在可用性、性能/擴展性、內核穩定性以及易用性等多個維度增強產品能力,為用户市場打造一款高性能、高擴展、高可用的集羣數據庫產品。
圖片.png

 圖1  YashanDB共享集羣架構圖

全新推出主備集羣方案,更全面的容災解決方案
共享集羣本身提供了多維度的高可用能力,如計算節點的高可用能力、共享存儲的存儲高可用能力等。更進一步,YashanDB推出了主備集羣方案,通過在共享集羣上集成主備特性,為用户提供全面的高可用和容災解決方案。
圖片.png

 圖2  YashanDB共享集羣主備集羣部署架構圖

主備集羣方案下,主、備集羣是獨立的兩套集羣,每個集羣具備獨立的集羣管理軟件、集羣文件系統等組件,集羣與集羣之間通過集羣日誌複製方式進行同步。通常而言,主備集羣部署在同城的兩個數據中心,為了進一步增強容災能力,可以選擇在異地部署一套容災集羣。
為了進一步降低使用集羣成本,YashanDB支持主備集羣非對等部署方式。目前YashanDB最大支持一主32備的部署方式,支持最大性能、最大可用、最大保護三種保護模式,支持備集羣故障倒換和主備集羣平滑切換。
YashanDB主備集羣方案在最新發布的企業版 V23 LTS版本中就可以使用,並且會在接下來的版本中持續增強備集羣的能力,例如備集羣的只讀、備份、多實例並行回放等能力。

統一集羣存儲架構,集羣級存儲高可用能力增強
新版本中對共享集羣存儲層面進行了增強:一是崖山集羣文件系統(YFS)採用全新的磁盤發現技術,可以對存儲設備進行高效的管理以及使用;二是新版本對共享存儲管理進行了重新定義,分為系統DG和數據DG,將崖山集羣服務(YCS)使用的vote文件、YCR文件統一納入系統DG中管理,數據DG中管理集羣數據庫相關的數據文件、redo文件等。如此能通過統一的集羣存儲架構,提供集羣級存儲高可用能力,如校驗、冗餘、IO均衡等。
此外,通過存儲多副本技術增強高可用能力:一是通過數據盤多副本冗餘,可以為用户提供靈活的多重存儲可靠性保障,任意存儲數據損壞可以做到自動檢測、自動修復;二是通過系統盤多副本冗餘,YCS可以快速進行集羣腦裂仲裁。
圖片.png

 圖3  YashanDB共享集羣存儲架構圖

更快速的在線即時恢復技術,RTO減少30%
對於共享集羣而言,節點故障在線恢復的時間至關重要。特別是在業務繁忙期間,節點在線發生故障時,通常會累積大量的redo日誌,這導致在線恢復過程需要更長的時間。
在新版本中,我們採用了更快速的在線即時恢復技術,基於YashanDB共享集羣多節點多活的特點,當某個節點發生故障時,可以通過其他存活節點的在線實時日誌分析,進行快速的恢復集構造,在線故障恢復的RTO時間減少30%。
圖片.png

 圖4  在線故障即使恢復示意圖

智能全局緩存刷盤技術,根據應用場景智能選擇
全局緩存管理方面,基於應用透明以及應用劃分兩種典型的集羣使用場景,全局緩存呈現不同的特徵。
應用透明場景下,各實例緩存中的數據大部分呈現全局性的特點,當產生交叉修改時,會產生歷史的髒數據版本,這裏叫PastCopy(簡稱PC),對應的PC持有者叫做PC Owner。緩存中維護PC有兩個作用:一個是用來做在線恢復的加速,節點在線故障不需要從磁盤中的老版本開始,只需要從內存中最新的PC版本恢復即可。另外一個作用是各實例下全局恢復點的推進,當各實例中存在大量全局髒頁時,需要進行全局髒頁刷盤的控制,避免出現頁面版本錯亂。
應用劃分場景下,各實例緩存中的數據大部分呈現本地化的特點,多實例間的交叉修改、訪問較少,此時修改產生髒頁大部分是本地髒頁。

在上一個版本中,統一採用Owner刷盤機制進行全局緩存刷盤控制,新版本中採用智能化全局緩存刷盤策略,根據應用場景自動採用不同的策略進行刷盤。
圖片.png

 圖5  全局智能刷盤場景示意圖

情形一:如果大部分為本地髒頁,Owner可以直接本地刷盤,不產生任何全局交互。
情形二:全局髒頁場景下,Owner節點進行刷盤,需要通過資源主節點進行刷盤控制,並在Owner刷盤後丟棄歷史的PC版本,這些歷史版本已經不再需要。
情形三:全局髒頁場景下,PC Owner會優先請求Owner進行刷盤,保證每次刷盤收益最大化。
情形四:當Owner所在IO實例繁忙,PC Owner在緩衝區淘汰、本地checkpoint等一些特定的場景下需要進行快速刷盤時,採用就近PC Owner刷盤策略。
通過智能全局緩存刷盤技術,可以做到緩衝區的快速淘汰,大大提升checkpoint性能,同時提升全局髒頁在各個實例間的傳輸效率,並且避免了特定場景集中到Owner節點刷盤,均衡多實例的IO負載。

發佈4節點共享集羣,性能高達520萬tpmC
YashanDB今年發佈了4節點共享集羣,並且4節點的性能達到了520W,線性擴展比0.7。
國內這幾年做共享集羣的很多,為什麼YashanDB可以做到性能的線性擴展?
(一)崖山自研對等集羣內核架構
最核心的是崖山採用了對等集羣內核架構。
圖片.png

 圖6  對等集羣內核架構圖

一是去中心化事務引擎,所有實例完全對等。每個實例具備獨立的事務引擎、緩衝區管理、鎖管理等,所有實例完全對等,不存在中心化節點,而那些採用中心化設計的會存在一個顯而易見的問題就是隨着節點規模的增加,主控制節點的負載會越來越重。
二是基於時間戳的輕量級全局快照技術。同樣是實現高性能集羣的基石,通過事務提交批量異步broadcast SCN,消息交互lamport LSN,避免了大併發下的全局快照鎖問題,同時保證各實例實時的事務一致性和正確性。
三是採用頁內鎖技術,鎖隨着頁面的轉移而轉移,不需要全局事務鎖來做事務併發控制。
這幾點是很多開源數據庫以及基於開源數據庫體系的生態所不具備的。
(二)崖山自研聚合內存技術,支持多節點擴展
崖山的全局內存融合技術設計同樣考慮了多節點下的擴展性。
一是採用Request、Master、Owner的消息交互模型,每次消息交互最多三個節點參與,不受節點規模增加影響。
二是採用自適應多節點一致性讀策略轉換。舉個例子一個實例會低概率訪問另外一個實例的數據,常規情況下是獲取持有實例的一致性讀頁面副本而不會真正申請並持有資源,但當短時間出現大量訪問時可以自動轉換為請求頁面資源,後續直接訪問本地緩存,不需要進行跨節點訪問,進而提升訪問性能。
(三)崖山針對國產平台優化集羣性能
YashanDB針對國產平台進行了優化。在數據庫層面,針對熱點變量、鎖進行優化,減少跨NUMA下的衝突訪問;內核層面,進行進程/線程、網卡隊列綁核,充分利用CPU資源。

內核能力持續增強,更可靠、更易用、易運維
除了性能外,YashanDB在可靠性、易用性、易運維等多個方面進行了增強,提升用户使用體驗,降低運維成本。
可靠性方面,各組件多維度優化。全方位優化ICS,包括消息重試、保序、去重,提升在各類網絡環境下的穩定性;YFS新支持快速恢復區,存儲故障可以通過恢復區進行快速恢復;新增YCS守護進程YCS monitor,增強集羣管理軟件自身的可靠性。
易用性方面,提升集羣的使用體驗。新增自適應參數調優,對私網消息內存管理,集羣后台服務線程調度等集羣相關的參數做了優化,基於業務負載、系統可用資源自動調優相關參數,新版本中不需要用户手動配置,降低用户使用集羣的成本;YFS新支持在線磁盤管理,可以在線添加、刪除修改磁盤,方便進行存儲管理。
易運維方面,提供精細化運維手段。一是GV視圖增強,所有V視圖對應的GV視圖已全部支持,同時GV視圖支持各種複雜的關聯查詢;二是提供了全局資源歷史變化的追蹤,以及全局資源信息的導出,方便進行集羣的運維和分析。

總結與展望
總結來看,崖山共享集羣全新的版本主要在高可用、高性能以及內核能力等維度做了全方位的增強,進一步提升了用户的使用體檢。
崖山共享集羣后續會重點考慮以下幾個方向:
支持集羣在線彈性伸縮。基於應用負載,計算節點秒級彈性擴縮,降低用户的運營成本,並且支持共享存儲在線升級、在線擴容、IO負載均衡等。崖山預計在25年版本推出集羣在線彈性伸縮。
支持集羣多機執行。面向服務親和的場景,提供對象級親和全局緩存服務,降低全局資源跨節點的訪問代價。同時基於一定的集羣數據分佈特點,推出集羣多機執行能力,讓計算在數據親和的節點節點進行,提升計算效率。
優化集羣雲化與多租場景的性能。雲化與多組場景下,主要解決高延遲、低帶寬下的讀寫優化以及集羣在線節點故障如何快速恢復,集羣面向多租的資源管理以及負載均衡。
在一體機形態下進一步做軟硬協同優化。主要有計算能力硬件下推,就近數據端借用硬件技術加速。基於存儲的容災、快照、壓縮、加密等技術。

user avatar u_16120231 頭像 u_15966245 頭像
2 位用戶收藏了這個故事!

發佈 評論

Some HTML is okay.