几年前,行业内关于是否可以把数据库跑在 Kubernetes 上就不乏讨论。Google Cloud 解决方案架构师本杰明·古德(Benjamin Good)曾发文讨论了这件事情的可行性:想要讨论这个问题,开发者们需要先明确需要通过把数据库 Kubernetes 上解决什么问题,再来看下可行性。如今,业内不乏有将数据库跑在 Kubernetes 上的产品出现,火山引擎数据库系列产品也是其中之一。我们可以从火山引擎数据库产品出发,了解云时代大规模场景下数据库跑在 Kubernetes 之上有何不同。
为什么选择在 Kubernetes 之上跑数据库?
火山引擎存储 & 数据库产品解决方案架构师魏巍告诉 InfoQ,业内不少存算分离的数据库采用的是基于物理机或者虚拟机的方式进行部署,不管是 CPU、内存还是存储的调度方式都偏传统,而字节跳动的 veDB 完全基于 Kubernetes 进行部署。目前我们可以看到也有一些企业把数据库部署在 Kubernetes 上,只是更多是放在容器里了。
🌟云原生数据库:应用为中心的革新🌟💡业内共识:云原生不再纠结底层硬件配置,而是聚焦应用程序的健壮性与可用性。这一切,皆由 Kubernetes 的Operator轻松驾驭。🚀🎯魏巍的观点:在Kubernetes上运行的数据库,其云原生特性显著增强!不像传统环境受限于虚拟机或物理机,我们打造的是无缝集成的 Kubernetes 驱动数据库系统。🌐🌟为何选择云原生?更低的复杂性、更高的弹性和适应性,让业务更自由地在云端翱翔。🌍记得,优化关键词如”云原生数据库”, “Kubernetes Operator”, “应用程序状态”, “高可用”, “云原生程度”, “深度整合”, ” Kubernetes 驱动系统”等,同时保持信息的连贯性和专业性。
🌟🚀魏巍揭秘!🔥🚀火山引擎打造高效能数据库解决方案,专为OLTP场景量身定制!🚀💼💡在Kubernetes的广阔舞台上,魏巍旗下的数据库产品家族熠熠生辉——从经典的RDS到云原生的veDB MySQL,再到内存优化的Redis和文档型MongoDB,一应俱全!🌐📊🔍这些数据库不仅覆盖了关系、缓存、文档和表格四大类型,还引领潮流,引入创新的veGraph图数据库,为复杂数据处理提供强大支持。🚀📈🌟无论您是寻求传统SQL稳定性,还是追求云原生灵活性,或是对新兴数据结构有探索热情,魏巍的数据库产品都能满足您的多元化需求。🏆💻欲了解更多详情,敬请关注我们的官方平台,那里有专业解析和最佳实践分享,助您在数字化转型的道路上稳中求胜!🌐👉
🌟火山引擎数据库团队的创新之旅始于对业务效率的执着追求。最初,他们以开源产品为基石,满足快速增长的数据需求,如2021春晚红包雨活动般,展现其灵活性和效能。然而,随着数据量的剧增,问题逐渐显现——开源方案无法应对极端压力,性能瓶颈成为挑战。🌟面对这一挑战,团队决定打破常规,从架构层面出发,对MySQL进行深度改造。他们选择了云原生数据库技术veDB,巧妙地实现了计算与存储分离,显著提升了系统的整体性能。这不仅意味着百万级别的QPS峰值集群的诞生,更是对数据库性能优化的极致追求和突破。🌟这个过程并非一帆风顺,但正是这样的迭代与创新,让火山引擎数据库团队在 Kubernetes 上的自研之路熠熠生辉,为业务发展提供了强大后盾。他们的故事,无疑是对技术适应业务、持续优化的最好诠释。🔍
🌟【火山引擎数据库进化历程】🚀从2015到2017年,火山引擎的数据库运维还处于基础阶段,仅凭借人工与脚本的力量就轻松应对业务增长,展现了其强大的适应性。到了2018年,随着技术的革新,火山开始对云原生数据库系统进行深度改造,比如引入了veDB MySQL和Redis这样的高效缓存方案。步入21世纪,2021年的火山引擎更是大步迈进,全面拥抱云原生,不仅优化现有产品,还自主研发veDB,这是一个结合AI技术的数据库解决方案。它巧妙地融合了DBA的经验智慧,通过AI的力量,让数据库自我调整和优化,实现了自动化运维。今年初以来,这种创新策略已在国内大规模推广,标志着火山引擎在数据库领域的专业性和智能化又迈上了新的台阶。🚀SEO优化提示:关键词包括”火山引擎数据库进化”、”云原生数据库改造”、”veDB MySQL/Redis”、”AI for DB”、”自动化运维”和”数据库解决方案”。
🌟数据库优化秘籍🌟火山引擎数据库团队专注于提升数据库效能,他们的首要目标是最大化资源利用率降低成本,同时确保对客户在线业务的影响降至最低。🚀 Kubernetes的引入,让管理变得更加精细化,通过消除资源碎片,实现了整体效率的飞跃,就像给数据库穿上了一双节能鞋。💼云计算的弹性,也因Kubernetes的调度而得以释放,如同解锁了无限可能。Serverless的发展方向,更是他们技术布局的重要一步。这种先进的架构模式,为他们的服务提供了更灵活、高效的后台支持,为未来的云原生世界打下了坚实基础。🌍无论何处,他们都致力于提供最优化的数据库解决方案,让数据的力量无处不在,却又悄无声息。🌟
数据库优化原理相通,像我们的veDB通过分离log与db,对MySQL内核进行深度改造,使其写数据时仅生成日志,避免刷新,显著减少了网络负担,从而实现了性能飞跃。魏巍提到,相较于传统Mysql5-6版本,veDB的效能提升幅度惊人,可达原生的约5-6倍之多。在云时代,业务量激增对数据库性能提出了极高的要求,这坚定了火山引擎将数据库部署在Kubernetes上的决心。值得注意的是,尽管起步相对较晚,但火山引擎凭借对Kubernetes趋势的敏锐洞察,成功地搭上了技术革新的快车,与阿里云、AWS等早有积累的云服务提供商站在了同一起跑线上。
跑在 Kubernetes 之上的数据库有何不同?
不过从技术角度看,其实 Kubernetes 整体来看对于数据库并不友好。根据 Google Cloud 解决方案架构师本杰明·古德的“数据库应该跑在什么环境中”思维导图,首先,跑在 Kubernetes 之上的数据库,相比跑在物理机、虚拟机环境的数据库更容易出现故障自动转移事件;其次,持续产生高工作负载的场景,无法控制并发量,对于跑在 Kubernetes 上的数据库也不友好,会导致数据库不受控。
Operator 的出现让数据库真正在 Kubernetes 上变得好用。云厂商可以通过扩展 Kubernetes API,使用 Operator 来实现数据库的运维能力和管理能力。对于非 Kubernetes 友好的数据库如 Mysql,就可以借助 Operator 来实现故障自动转移等;对于高工作负载高并发量的场景,数据库没有银弹,可以选择不同的数据库产品组合。
数据库跑在 Kubernetes 之上的好处也开始被看见,比如数据库实例资源的增加变得更简单、跨多云部署的兼容性更好、运维的复杂性更低……从架构视角看,魏巍认为部署在 Kubernetes 之上的数据库资源调度的粒度将更小。以前用虚拟机,至少需要一台虚拟机做调度,但是 Kubernetes 上以 Pods 为单位去做资源调度,由 Kubernetes 进行资源分配,提升了整体的资源利用率,也就降低了成本。“开一个虚拟机的时间和开一个 pod 的时间相比,肯定是 pod 的时间更短。这也是我们说火山引擎云数据库具备非常强弹性能力的重要原因之一。”魏巍谈道。
随着应用场景更加宽泛,Kubernetes 也会受限。对此,火山引擎专门配备了一个团队负责进行 Kubernetes 的优化和改造,让它能更好地满足大规模应用场景。同时,该团队还会负责云数据库和 Kubernetes 更充分的融合。“业内还没有哪个厂商这么大规模地把云数据库部署在 Kubernetes 上,火山引擎是第一家。”
目前,火山引擎数据库产品系统分为自研 veDB 和社区版优化两大类,还提供了一些生态工具 DTS。除了前文提到的云原生数据库 veDB MySQL,火山引擎缓存数据库 Redis 也与社区版 Redis 有很大不同。
社区版 Redis 采用无中心化的架构,底层节点之间使用的是 gossip 协议。这个协议导致一旦节点数过多时,会产生严重的网络风暴,导致整个集群的不稳定,并且也无法提升整体的容量规模。所以,火山引擎缓存数据库 Redis 采用字节跳动内部实践的 Achemy 架构,对社区版 Redis 的整体架构做了改造。
改造主要体现在 2 个方面。
其一,把社区版 Redis 的架构从无中心化转变为中心化。通过引入集群组件 config server,对整个 Redis 集群做元数据的管控,这样就可以避免 gossip 协议通信引起的网络风暴。
其二,Achemy 架构分为三层,第一层是 proxy,第二层是 config server 进行元数据管理,第三层是 server 层用于真正存储数据。这三层架构让字节跳动的 Redis 可以支持上千的节点分片,让 Redis 的集群规模变得非常大。
“其实最开始字节跳动也是在用开源的版本,也没有想直接从架构角度推倒重来,只是对于规则协议进行优化来提高节点数量,但是做下来发现投入产出比低,面对不断上涨的业务量也不是长久之计,毕竟社区开源版的 Redis 可能没有预估到如今如此大规模的场景。”魏巍谈道,过去大家专注在数据库本身的优化工作,现在上云之后,其实可以借助云的能力优化数据库的架构,让数据库的性能和稳定性整体从云的维度得到一个比较大的提升。
火山引擎图数据库 veGraph 是火山引擎自研的产品,类似 Achemy 架构,以属性图为基础结构数据,提供了海量关系的数据存储和毫秒级的在线查询服务,广泛应用于社交网络、欺诈检测、推荐引擎、知识图谱等场景。“比如抖音和头条里,你给哪个文章或者视频点赞,你的好友也能看到这条文章或者视频,其实就是借助了图数据库的这种关系分析能力。也是因为业务量大,所以开源的图数据库满足不了抖音头条这种大规模海量数据的要求。”
魏巍表示:“我们自研的图数据库 veGraph 可以做到万亿条边。如果两个人是好友关系,这一条好友关系就被称作是一条边。不仅规模可以达到万亿条边,单集群已经可以达到亿级别的 QPS 性能水平。”这里底层的技术支撑和 Redis 类似,通过分层拆开不同的组件,分别对每个组件进行集群化处理,三层集群共同对外提供服务能力,所以可以达到万亿条边的数据量,整体 QPS 达到亿级别。
云数据库的未来方向
“云厂商提供的云数据库应该做到简单易用,安全稳定,极致弹性,高性价比。把客户 DBA 需要做的事情都做了,而且要做的更多,做的更好。”在魏巍看来,DBA 应该有更高的价值,应该和业务开发走得再近一些,才能让业务和数据库更好地结合。“开发如何建索引这个事情很多企业的 DBA 都会遇到。一旦出现问题,大家会发现开发同学索引建得不好,SQL 语句写得不好。其实,可以让 DBA 同学提前介入到开发工作中,这些事情完全可以避免,让 SQL 语句更加高效,进而让业务可以用更少地资源去做更多的事情。”魏巍解释道。
业务视角下,云数据库未来的重点方向在于能否稳定支撑企业业务运转的同时降低使用成本,所以从技术角度看,无论是哪一家云厂商,未来都会在底层技术上做更多的优化,并在上层打造一个更加稳定的平台来供企业客户长久、安心地使用数据库产品。