【IT168 评论】云计算时代,各大厂数据库架构设计经历了哪些改变?在SACC大会第二天下午的数据库架构设计的前世(上)专场,来自京东云、阿里巴巴、58速运、去哪儿网、京东的技术一线专家分享了各自在云计算时代下的数据库架构设计实践,遇到过哪些问题?如何解决?如何数据库的高可用和高可靠等等一揽子技术干货!
数据库战国时代,往往每家企业使用的数据库都不止一种。面对市场上众多SQL、NoSQL以及NewSQL类数据库,我们该如何选择?京东云张成远表示,首先要从需求出发,梳理基本生命周期管理需求、运行期类需求以及随着数据量增大之后的高阶需求。
云计算时代的到来,意味着DBA手工执行的时代已经过去了,DBA可一键自动创建,实现分钟级搭建主/从秒级库表管理。对于众多DBA关注的高可用、高可靠主/从秒级库表管理方案设计,张成远认为,应该从业务需求出发,了解业务可的延迟和数据丢失极限,京东云目前将数据存于云存储,由于云存储是三副本的,这种方式可以尽可能数据不丢。
对于访问量过大的情况,数据库常脆弱的,DBA可以层层过滤掉从链打到数据库上的请求。一般DBA采取的方案是读写分离或一主多从,张成远认为,如果对数据质量要求不高,可以采用读写分离。否则,不使用读写分离方案。
一个喜欢写文章的技术人,这是很多人对沈剑的印象。不单单是文笔过硬,沈剑的技术能力也十分强。作为58速运的CTO,沈剑对DBA进行了很多思考:DBA的定位应该是什么?DBA的职责又是什么呢?
在很多公司内部,DBA和研发之间的关系都非常微妙。DBA往往是执行研发提交过来的工单,而渐渐沦为了工单执行工具。沈剑表示,业务DBA应该从专业的角度带给业务价值。从专业的角度,帮助研发做好早期设计;了解被执行工单的业务背景,来龙去脉,做好把关;结合业务进行优化,给出优化。
随着近些年业务体量的增大,很多数据库都面临着优化问题。DBA应该学会找主要矛盾,针对性优化。性能优化方面,MySQL分析工具还是很多的,比如可用于分析慢查询的pt-query-digest;调优过程中可以把慢SQL时间设为0,从slowlog中获取所有SQL的相关信息,对性能的影响在10%以内;同时,DBA可以获取总体分析结果,分组排序的分析结果,单Query ID的分析结果。
目前,很多企业在数据库架构设计上还面临着诸多挑战,比如故障检测与恢复、在线扩容、高可用、升级等,丁俊对这些问题逐一进行了解答。
在故障检测与恢复方面,京东目前的解决方案持久化存储—JIMDB和持久化存储— FBASE。JIMDB兼容REDIS协议,在线弹性伸缩的,数据全部保存在内存的K-V存储系统;FBASE支持多协议,支持范围查找的持久化K-V存储系统。JIMDB读写性能要求高,性能要求优先于数据可靠性;FBASE对数据可靠性要求高,数据量大,数据冷热分布明显。
在线扩容,要想平滑扩容,丁俊提出需要提前把将要变更的拓扑信息下发给客户端,客户端捕捉到特定异常后使用临时拓扑,扩容完成后临时拓扑变更为正式拓扑。扩容过程中,需要注意数据迁移最小单位为槽,单shard需要控制大小,避免迁移数据多时间长。
高可用方面,依然是异地灾备的方式,主要涉及一些副本的部署要求。升级方面,主要步骤为内存中的数据要做迁移;按照shard滚动升级;新版本的容器创建在同一台宿主机上;迁移完成后客户端捕捉到数据已迁移的异常,会使用新的拓扑。
除了京东分布式KEY-VALUE存储的具体设计和问题,丁俊也给出了对未来的功能规划,比如支持redis数据结构,支持二级索引以及事务等。
去哪儿网数据库架构设计的前半生基本上可以总结为:解决问题——遇到问题——解决问题——遇到问题.......黄勇表示,早期的去哪儿网数据库也是“小作坊模式”,从单机房内的MySQL逐渐演变为现在的跨机房QMHA架构,同时可安全性和高可用。这一,去哪儿网试用了不少架构体系设计模式,遇到问题就解决问题,对架构不断进行调整。
自2015年以来,去哪儿网一直在应用QMHA架构,QMHA架构主要有四大技术特点:GTID,GTID易于和切换,主从节点间可知数据差异;Sentineld,分布式哨兵,减少误切换和网络分区,raft算法,自动切换;Semi-Sync,提高数据节点一致性的同时提高集群安全性和可用性,多线程复制,且可以跨机房和网段部署;Zookeeper,全局namespace,通知客户端更新配置。
目前,去哪儿网的DBA操作平台中的SQL审核部分使用的自研技术已经开源,广大DBA可以尝试搜索试用。
数据库容器化,当前面临的问题是什么?作为淘宝的运营商,阿里巴巴的数据库架构必须经得起双十一等大促带来的挑战,吕建枢表示,阿里巴巴的数据库容器化曾经面临着一些调度问题和成本问题,比如机型配比问题—CPU,内存以及存储之间的选择,如何应对大促又不至于提高日常运营成本等。
吕建枢表示,阿里主要从计算存储分离、分布式存储优化、数据库设计、数据库离在线混布等几方面介绍了数据库容器化设计的每一步以及遇到的问题。当前面的计算存储分离完成后,离在线混布成为可能;阿里巴巴目前所有的数据库都已完成容器化,预计今年完成离在线混布(DB隔离策略,时延),未来的数据库将是纯用户+RDMA+SPDK的结构。
面对云计算、海量数据、高流量并发等挑战,数据库架构设计需要不断迭代升级。高并发和高可用似乎是数据库架构设计一贯的基本要求,这些互联网大厂遇到的问题是否与你类似?这些解决方案是否打开了你的脑洞呢?未来的数据库架构设计又会是什么样子呢?
推荐: