网易|网易分布式数据库多活架构的演进与实践
本文插图
本文插图
周劲松
- 来自网易数据科学中心 , 目前是网易分布式数据库DDB及网易数据运河NDC项目负责人 。
- 对数据库及相关中间件的设计和研发有丰富经验 。
我将简单介绍下为什么我们要做数据库多活 , 再从三个阶段介绍网易在数据库多活上做的工作 。
本文插图
一、数据库多活的目标
数据库多活的目标包括“容灾”和“提升处理能力”两方面 。
容灾可以简单理解为当系统由于外部或内部原因出现部分不可用时 , 仍然能在短时间内恢复可用 。 而容灾最常用的手段即是备份 , 在数据库领域不仅需要对计算能力做备份也要对数据做备份 。 容灾级别可以划分为宿主机级别的容灾、机房级别的容灾和跨城的容灾 。
要提升数据库的处理能力 , 一般有读写分离和单元化两种方式 , 读写分离将数据库的备份节点的读能力提供出来 , 其实提升了系统的利用率 , 而单元化则是当整个机房的资源无法容纳业务的增长时 , 加入更多的机房资源 , 扩展业务的处理能力的方法 。
本文插图
二、网易的产品特性
网易成立23年以来 , 孵化了大量的产品 , 不同的产品特性、产品发展到不同阶段对数据库多活都有不一样的需求 。
本文插图
像音乐、新闻这类的泛娱乐产品 , 它们每日要处理大量的请求 , 同时也会产生大量的数据 , 而由于其产品的独特性 , 它们对数据的一致性要求往往不是特别高 , 但对可用性要求比较高 。
而严选这样的电商类应用 , 由于其独有的交易类数据 , 对数据一致性要求是比较高的 , 流量一般小于娱乐性应用 , 对可用性同样很高 。
而最为极端的支付类应用 , 由于所有的业务都和钱挂钩 , 对数据一致性要求极高 , 流量反而最小 , 可用性要求同样很高 。
对一致性要求的不同会导致不同的产品在选择数据库多活方案时有不一样的选择 , 而互联网产品对可用性的要求往往是一致的 , 都无法接受产品长时间不可用 。
三、网易数据库使用现状
我从DBA同事那边要到了一份网易当前的数据库选型分布数据 。
本文插图
由于其稳定性和开源的特性 , 超过一半的数据库实例是MySQL 。 而缓存则是Redis使用最广 , 数据量较大时会选用HBase 。 Oracle仍然在一些老的系统内有使用 , 而其他一些NewSQL数据库则还在测试验证阶段 。
单实例的MySQL处理能力有限 , 无法满足网易内各个产品的使用需求 , 所以网易内大量的MySQL实际是挂在了自研的分布式数据库DDB的下面 , DDB封装了分库分表的能力 , 对外提供了可扩展的数据库处理能力 。 DDB的实现思路和开源的MyCat、ShardingSphere很像 , 这里就不赘述了 。
【网易|网易分布式数据库多活架构的演进与实践】文章后续的多活方案都以MySQL作为对象描述 。
四、机房内的多活
机房内的数据库多活其实是单机房内数据库的高可用方案 。 一个主节点提供读写能力 , 一个高可用从作为主实例的备份 , 还有一个只读从对外提供只读的能力 。 这里三节点的部署方式能够保证任何一个节点不可用时 , 都有备用节点接替其提供服务 , 而整个系统的处理能力不会下降 。
推荐阅读
- 技术编程|如何利用数据库进行世界史研究
- work|分布式系统设计理念为何这么难学?
- 数据库|面试官:说说MySQL数据库分库分表,并且会有哪些问题?
- 网易科技报道|外媒:TikTok考虑将总部设在伦敦 正与英国政府谈判
- 网易|小米有品对线菲尼克斯!仅99元,XPH50灯珠,网友:亮过奥迪
- windows科技分享|水星Mesh分布式路由 M6G小测
- |水星Mesh分布式路由 M6G小测
- 每日经济新闻|专访网易副总裁汪源:坚持做基础软件17年云原生系统重构企业基础设施
- 经济观察网|网易云服务更名,与华为、阿里合作
- 网易|网易云服务更名,与华为、阿里合作