《基于软件开发新理念的新一代的数据基础设施-曹伟.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 s2002020212022VLDBRealization 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组装式搭建