《基于軟件開發新理念的新一代的數據基礎設施-曹偉.pdf》由會員分享,可在線閱讀,更多相關《基于軟件開發新理念的新一代的數據基礎設施-曹偉.pdf(38頁珍藏版)》請在三個皮匠報告上搜索。
1、云原生的多云混合云數據基礎設施Control Plane演講者:曹偉前阿里云數據庫總經理/研究員,云原生數據庫PolarDB 創始人。中國計算機學會數據庫專委會、開源專委會執行專委,獲得 2020 年中國電子學會科技進步一等獎,在 SIGMOD、VLDB、ICDE、FAST、USENIX ATC 等數據庫與存儲國際頂級學術會議發表論文 20 余篇。云原生數據庫領域的研究P u b l i c a t i o n s201420182019202020212022VLDBRealization of the low cost and high performance MySQL cloud da
2、tabaseVLDBPolarFS:an ultra-low latency and failure resilient distributed file system for shared storage cloud database SIGMODX-Engine:An Optimized Storage Engine For Large-Scale E-Commerce Transaction ProcessingSIGMODTimon:A Timestamped Event Database for Efficient Telemetry Data Processing and Anal
3、yticsFASTPOLARDB Meets Computational Storage:Efficiently Support Analytical Workloads in Cloud-Native Relational Database SIGMODPolarDB Serverless:A Cloud Native Database for Disaggregated Data Centers LogStore:A Cloud-Native and Multi-Tenant Log Database ICDEPolarDB-X:An Elastic Distributed Relatio
4、nal Database in the Cloud-Native EraTcpRT:Instrument and Diagnostic Analysis System for Service Quality of Cloud Databases at Massive Scale in Real-time SIGMOD云數據庫行業趨勢ApeCloud適合小規模且難以預測的負載 不暴露數據庫版本 不暴露數據庫參數 不暴露數據庫規格 超賣紅利屬于云廠商ServerlessServerless,全托管和自建的適用場景適合中小型規模且波動較為規律的負載 暴露數據庫版本(強制維護)暴露數據庫參數(部分)暴
5、露數據庫規格 超賣紅利屬于云廠商全托管全托管適合中大型規模且波動較為規律的負載 暴露數據庫版本(不強制維護)暴露數據庫參數(幾乎全部)暴露數據庫規格 超賣紅利屬于客戶BYOC/IDC 自建自建內核發展趨勢(資源池化)管控發展趨勢(AnyWhere)傳統數據基礎設施系統煙囪式架構體驗不一致系統預期行為不一致引 擎運 維 操 作環 境業務引入新引擎成本高Conways LawDBPaaSDBPaaS API&PortalAPI&PortalMySQL管控PG管控MongoDB管控Redis管控OLAP管控ES,Kafka,ClickHouse,HA備份遷移監控審計擴縮容容災資源調度云(虛擬機)物理
6、機本質是管理復雜度從過去十年軟件開發新理念尋找解決方法云原生公共云私有云微服務中臺低代碼DevOps流計算Modern Data Stack數據湖湖倉一體HTAP平臺工程多云IaC容器K8s編排流批一體DDDDevOps 和云原生帶來的新范式 Pets v.s.CattleLesson 1:容器化不可變基礎設施基礎架構即代碼(IaC)聲明式 API容器編排App Layer用 K8s 作為業務與云之間的適配層APPAPPAPPAPPAPPInternal Developer Platform/平臺工程平臺工程K8s APIGKEEKSACKAKSOpenShiftDaoCloudSealOSR
7、ancherKubeSphere阿里云AWSGCPAzure物理機多云、混合云環境使用多種數據引擎,NO one size fits allData IntegrationRDBMSKVGraphMessage QueueVectorDocumentLogTime-SeriesStreamingAnalyticsMySQLPostgreSQLPolarDBOceanbaseTiDBDragonflyRedisPiKaNeo4jNebulaGraphTigerGraphKafkaRocketMQPulsarRedpandaRabbitMQMilvusQdrantWeaviateMongoDBPo
8、stgreSQLLokiElasticSearchOpenSearchTDengineInfluxDBIoTDBVictoriaMetricsTimescaleDBFlinkSparkMaterializeRisingwaveClickhouseStarRocksDorisOpenSearchElasticSearchTrinoSparkFlinkPrestoApp LayerAPPAPPAPPAPPAPP企業對數據基礎設施的需求是什么?學習曲線類似支持 IaC 實踐提供聲明式 APIK8s APIAutomation支持新業務擴展新引擎如何管理好復雜度?在 K8s 統一抽象上運行數據基礎設施
9、Step 1:K8s 抽象/APIPODservicePVC/PVsecretconfigmapTaintTolerationAffinityAnti-AffinityeventOperatorController loopCustom ResourceCRDmodifywatchupdatewatchupdate status“調諧”Reconcilationa.k.a用領域來封裝和隔離復雜度Step 2:PODservicePVC/PVsecretconfigmapTaintTolerationAffinityAnti-AffinityeventCustom ResourceCRDmodi
10、fywatchupdatewatchupdate statusController Loop驅動側被驅動側領域模型六邊形架構H e x a g o n a l A r c h i t e c t u r e用領域來封裝和隔離復雜度Step 2:PODservicePVC/PVsecretconfigmapTaintTolerationAffinityAnti-AffinityeventCRDCustom ResourcemodifyCluster備份恢復遷移配置校驗ComponentReplicatedStateMachine配置更新Replica賬號運維動作用領域模型來抽象多種數據(庫)系統
11、Step 3:Custom ResourcemodifyClusterComponentReplicatedStateMachineReplicaClusterComponentReplicated State MachineReplicaK8s 抽象PodPVCConfigmapServiceTolerationAffinitiy用領域模型來抽象多種數據(庫)系統 案例 pulsarStep 3:Cluster:pulsarComponent:pulsar-brokerComponent:pulsar-proxyComponent:bookiesComponent:bookies-recov
12、eryComponent:zookeeperStatelessStatelessReplicatedStateMachineStatelessReplicatedStateMachineReplicaReplicaReplicaPodPVCReplicaReplicaServiceConfigmapSecret低代碼插件擴展新引擎 案例 向量數據庫QdrantStep 4:1要創建哪些組件要創建哪些組件每個組件如何配置和啟動每個組件如何配置和啟動配置文件啟動腳本 服務端口Qdrant-web-ui瀏覽器客戶端Qdrant計算+存儲層Qdrant-Tools內置運維工具低代碼插件擴展新引擎 案例
13、 向量數據庫QdrantStep 4:2ClusterDefinition.yamlClusterDefinition.yaml定義集群拓撲和組件配置,每個集群一個定義集群拓撲和組件配置,每個集群一個,為每個組件填寫為每個組件填寫volumeMounts數據文件和日志文件目錄configSpec配置文件scriptSpec腳本文件command,ports啟動命令和服務端口ClusterVersion.yamlClusterVersion.yaml為每個組件填寫為每個組件填寫:Image:Image 信息信息kind:ClusterDefinitionmetadata:name:qdrants
14、pec:componentDefs:-name:qdrant configSpecs:monitor:scriptSpecs:podSpec:containers:-command:ports:volumeMounts:kind:ClusterVersionmetadata:name:qdrant-1.5.0spec:clusterDefinitionRef:qdrant componentVersions:-componentDefRef:qdrant versionsContext:containers:-image:qdrant:v1.5.0 name:qdrant -image:qdr
15、ant-web-ui:latest name:web-ui -image:curl-jq:latest name:qdrant-tools低代碼插件擴展新引擎 案例 向量數據庫QdrantStep 4:3addon.yamladdon.yaml描述描述QdrantQdrant,指定是否默認安裝等信息指定是否默認安裝等信息*KubeBlocks 的 CICD 流程會自動創建 qdrant.tgz,開發者不需要關心 QdrantQdrant AddonAddon 配置 Qdrant Addon 要寫多少代碼?開發時間2周 低代碼行數2000行配置yaml:600scripts:200configs
16、:200json:1200kind:Addonmetadata:name:qdrantspec:description:Qdrant is an open source vector similarity search.helm:chartLocationURL:https:/./charts/qdrant.tgz*installable:autoInstall:false type:Helm低代碼插件擴展新引擎 案例 向量數據庫QdrantStep 4:*Rich day-2 operations2步創建集群StepStep 1:1:打開打開 addon addonStepStep 2:2:
17、創建創建 myqdrantmyqdrantStepStep X:X:集群運維集群運維kbcli addon enable qdrantkbcli cluster create myqdrant-cluster-definition qdrantkbcli cluster myqdrant運維任務運維任務支持情況支持情況Stop/StartYRestartYUpgradeYVolume-ExpandYVScaleYHScaleYBackup/RestoreYKubeBlocks 實現了對多種數據(庫)系統的統一的抽象總結:K8s APIkbcliKubeBlocks Cloud領域模型低代碼擴展
18、PodSchedulerCSI配置管理高可用賬號管理監控日志備份還原數據遷移MySQL CRRedis CRPG CRMongoDB CRKafka CRPulsar CR ClickHouse CRQrant CR容器編排聲明式 APIOpenAPI人工操作IaC自動化KubeBlocks CloudApeCloudKB CloudAgentKB Cloud ManagerKubeBlocks Cloud客戶VPC/IDC公共云私有云VM裸金屬集群部署集群配置集群升級彈性擴縮容監控日志備份恢復基于 KubeBlocks 提供RDS體驗的數據庫一站式管理服務一站式管理:支持多云和混合云ApeC
19、loud支持部署到多種公有云環境或者私有環境 多云部署多云部署,數據庫集群支持部署到公有云環境,包括阿里云、AWS、GCP等,組織管理員可添加新的環境 混合云混合云:也可添加自建機房環境,形成統一管理的混合云平臺 多引擎多引擎:支持關系型、KV型、文檔型、流計算和向量數據庫一站式管理:集群概覽ApeCloud 集群拓撲集群拓撲,可視化展示集群的拓撲結構,實時更新實例狀態,點擊實例查看關鍵性能指標 實例列表實例列表:查看實例詳情,對實例執行switchover操作 數據庫連接數據庫連接:查看連接串信息,打開或者關閉VPC連接和公網連接 集群運維集群運維:集中的運維操作面板,可執行集群各種運維操作
20、,包括啟停、重啟、升降配、存儲擴容、刪除保護設置等一站式管理:高可用管理ApeCloud 切換數據庫切換數據庫Leader節點節點,在數據庫多個副本之間切換主庫,可視化展示集群的拓撲結構,實時更新實例狀態 升級過程最小化對可用性的影響升級過程最小化對可用性的影響,識別節點角色,根據角色控制升級順序,通過switch over來減少不可用時間一站式管理:集群監控ApeCloud 監控面板監控面板,提供美觀方便的監控面板,可對圖表進行篩選、放大和鉆取等多種操作 性能指標性能指標:實時采集數據庫和虛擬機的性能指標,提供比RDS豐富得多的指標集合一站式管理:主機監控ApeCloud 實時監控實時監控,
21、實時采集云服務器OS系統指標,包括CPU,內存,磁盤,網絡,進場,負載等,及時了解系統運行狀況,分析性能瓶頸 資源規劃資源規劃:通過監控主機資源使用情況,規劃和管理系統資源,預測何時需要升級和優化 故障排除故障排除:通過告警和度量數據迅速定位到性能瓶頸和資源不足,從而更快的解決問題一站式管理:運行日志/審計日志/慢日志ApeCloud 容器日志容器日志,提供數據庫實例的容器日志,可選擇實例,時間段進行查詢 錯誤日志錯誤日志:提供數據庫實例的錯誤日志,用于數據庫實例的問題診斷和排查 慢日志慢日志:提供 mysql,postgresql 數據庫慢查詢日志,用于 SQL 性能優化一站式管理:備份恢復
22、ApeCloud 備份管理備份管理:支持對數據庫集群進行全量備份和日志增量備份,備份方法支持快照和備份工具,如xtrabackup等 自動備份自動備份:通過備份策略設置自動備份的備份計劃頻度、開始時間和數據保留時間。備份保留時間可自定義。按時間點恢復按時間點恢復:精確的恢復時間點選擇,最大程度減少數據損失。通過PITR僅恢復增量變更,恢復時間更快。已刪除集群的恢復已刪除集群的恢復:在備份中心保留了已刪除集群的備份文件,通過這些備份可恢復被誤刪的數據庫,增強數據安全。異地災備異地災備:備份文件支持云端存儲和本地存儲,云端存儲將備份文件保存在低成本的對象存儲中,并可恢復到其他地域。一站式管理:參數
23、配置ApeCloud 參數查看參數查看,查看集群當前參數列表,可查詢當前值及參數解釋 批量修改批量修改:支持批量修改多個參數,修改動態參數無需重啟實例 歷史記錄歷史記錄:所有參數修改均有記錄,方便查詢和審計,包括修改時間、修改人、修改內容。一站式管理:多云、多數據庫數據遷移ApeCloud 跨地域跨地域、跨云跨云:支持多云環境下的跨地域、跨云數據復制;支持多種場景數據庫,包括MySQL、PostgreSQL、MongoDB、Redis、Kafka、Starrocks等 雙向同步雙向同步:源節點和目標節點可實現單向同步和雙向同步,配合底層數據標記機制,可以精準控制需要/不需要的數據,避免數據回環
24、 配置配置簡單簡單:告別復雜的諸如賬號、權限、配置、網絡等前置操作準備,選擇目標集群即可輕松配置一站式管理:多節點數據復制拓撲ApeCloud 開箱即用開箱即用:內置了多種數據復制場景模塊(檢查、初始化結構、初始化全量數據、增量復制等),白屏化完成數據復制各種場景的定義和管理。定義復雜業務拓撲定義復雜業務拓撲:不同于常規工具單條數據復制通道的管理模式,可以直觀的完成業務拓撲定義。安全高效的完成諸如:雙向復制、多到一復制、災備/多活架構等業務場景構建 云原生云原生:云原生標準應用架構,帶來安全、成本、性能等多方面優勢。高可靠高可靠:結合內部斷點續傳能力,帶來可靠的數據復制服務。KubeBlocks in CNCF LandscapeCNCF Cloud Native LANDSCAPE 收錄的唯一的開源多引擎數據/數據庫管理系統項目收到了來自以下外部開源社區和公司開發者的貢獻KubeBlocks 開源社區已經支持32數據庫引擎款KubeBlocks 已經支持了32種數據庫引擎KubeBlocks 開源社區像搭樂高積木一樣標準與高效的組裝企業數據基礎設施藍圖KubeBlocks 愿景拆解元件基于KubeBlocks組裝式搭建