写点什么

看京东如何玩转云数据库

2015 年 11 月 25 日

作为支撑百亿级数据量业务的基础服务,京东云数据库在可用性及高性能方面有极高的要求。本期我们的采访嘉宾是京东资深架构师张成远,本文根据采访整理而成。

受访嘉宾

张成远,京东资深架构师,《Mariadb 原理与实现》作者,开源项目 speedy 作者。2012 年加入京东云数据库技术团队,擅长高性能服务器开发、分布式数据库、分布式存储 / 缓存等大规模分布式系统架构,主导了京东分布式数据库系统及容器系统的架构与开发工作。在 ArchSummit 北京 2015 全球架构师峰会上,张成远将作为专题讲师为大家带来《京东云数据库支撑百亿级数据量业务的探索与实践》

云数据库服务是一项基础性的云服务,解决用户自己搭建数据库时需要考虑的各种问题,让用户在使用时可以按需申请数据库资源,保证整个数据库服务的稳定性及数据的可靠性,同时提供弹性伸缩等的支持,尽可能的降低用户在使用云数据库时的成本。

本主题主要是分享京东私有云分布式数据库集群的实现,包括如何支撑上亿级数据量的业务,如何保证数据高可靠、服务高可用以及在线集群扩容等机制。另外还会分享京东公有云数据库的架构与设计,如何实现一个稳定、可靠、可弹性伸缩的公有云数据库服务,涉及到备份、恢复、监控、迁移、高可用切换等一整套方案。

京东内部有大量业务的数据是存放在 Oracle 中的,为了完成京东内部去 O 的过程,我们为此打造了一套私有云分布式数据库集群,这套私有云分布式数据库集群目前支撑着京东大量拥有上百亿级数据量的业务,本主题中会重点介绍去 O 过程中遇到的难点同时详细介绍在内部数据库云化以及在支撑大规模业务过程中积累的经验,包括如何打造一套高性能的私有云分布式数据库集群服务,如何在支撑京东上百亿级别数据量业务正常服务的情况下做到在线无缝集群扩容,分享来自京东生产一线的经验。

云服务最重要的是要做到可弹性伸缩可按需获取资源,让用户可以尽可能的花最少的代价满足业务的需求。用户使用云数据库时面临当业务量增长时申请的资源不够,需要做到快速的扩张现有资源,当业务量降低时需要快速缩小现有资源。当数据库实例甚至整个机房发生故障时,要做到用户在云数据库中的数据是安全的可靠的,可以第一时间恢复云数据库服务,包括跨机房恢复等,保证云上的用户业务是不受影响的,这些都是云服务尤其是云数据库服务需要解决的事情,本主题也会介绍京东公有云数据库是怎么解决这些问题的以及在解决这些问题时积累的经验。

精彩内容敬请期待,以下是 InfoQ 记者对京东资深架构师张成远的专访:

InfoQ:请成远简单介绍一些京东云数据库服务。

张成远:京东云数据库主要包括公有云数据库服务和私有云数据库服务两部分。公有云数据库主要是面向外部用户,定位是中小型公司;私有云数据库主要针对公司内部业务,有时候甚至会特殊业务特殊对待,会针对业务的特点来具体问题具体分析,数据量较大的业务我们会建议业务使用我们私有云分布式数据库集群,将数据进行拆分等。这两项服务在京东都是由同一个团队来提供支持,京东云数据库的总体做法是将私有云数据库中积累的经验逐步的输出到公有云数据库上。

InfoQ:云数据库集群服务和 N 个数据库同时提供服务有何区别?

张成远:云数据库集群服务主要是指分布式数据库集群,用户在使用这个集群的时候可以像使用单台数据库一样去使用,在业务层面不用关心集群中的数据是如何分布的,对用户来说后端的数据库实例是不可见的或者不需要关心的,在使用层面来说心智负担会大大降低。

N 个数据库同时提供服务一般是指 N 个数据库服务多个不同的业务,或者是某个业务同时使用了 N 个数据库,但是业务对这些数据库是有感知的,换句话说这 N 个数据库对业务都是可见的。

InfoQ:云数据库技术相对于普通的数据库技术的挑战在哪?

张成远:云数据库服务其实也可以理解为将传统的数据库服务搬到云上,但是云数据库服务尤其是公有云数据库和传统的数据库确实是有区别的,最大的挑战在于不仅仅要提供数据库服务,还需要与用户的私有网络及云主机甚至包括云存储等各项云服务相互配合提供高可用的服务、保证数据的高可靠,是一整套云服务中的一项。传统的数据库技术更多关注的是数据库本身的,网络及主机等问题一般会比较简单。

InfoQ:京东云数据库的架构是怎么样的?这样的架构有何优势?

张成远:京东公有云数据库的架构都是基于私有云数据库的实践经验所得,在实际输出的时候考虑到安全及弹性伸缩等的考虑,公有云上采用基于虚机部署的方式,结合云主机云存储以及云数据库系统自身相配套的信息采集系统再整合公司的监控系统等各项服务,对外提供可伸缩高可用及高可靠的公有云数据库服务。

私有云中的分布式数据库集群架构主要是采用引入中间件的方式来支撑业务,中间件本身完全兼容 mysql 协议,在内部业务使用的时候可以像使用原生数据库一样简单。

InfoQ:这套服务是如何做性能监控的?如何找到服务中的慢查询等问题?

张成远:公司内部有一套完整的统一的监控系统,云数据库自身还有一套信息采集系统,采集系统会采集数据库实例上的相关信息包括慢查询以及机器负载等信息,这些采集的信息经分析处理以后如果如果发现有异常比如有慢查询或者机器负载较高,会通过统一的监控系统触发报警,做到及时发现问题及时处理问题。

在私有云分布式数据库集群中的性能监控主要是两部分构成,一部分是分布式数据库中间件会对查询做一些统计信息,这些统计信息中有超过某些阈值的情况就会触发报警,另外一部分是数据库本身的完善的监控系统。

InfoQ:在弹性伸缩部署方面,京东有哪些独创的技术?

张成远:京东公有云数据库目前是部署在虚拟机里的,基于虚拟机的快速创建我们可以做到公有云数据库实例的较快的创建。私有云数据库目前有很大一部分已经将数据库实例放到容器里,在创建部署方面将更加的便捷,当内部验证以后后续我们也会考虑输出到公有云上。

InfoQ:在双十一等活动中,百亿级数据量业务给了云数据库服务什么样的压力?技术上是如何保证整个架构能够扛得住这么大压力的?

张成远:私有云数据库在重大活动中确实有很大的压力,这些方面没有捷径,我们能做的是在活动之前做好预案,包括提前演练压测等以及各种异常情况的应对方案。

将数据库放到容器里解决了我们较大的一个问题,可以快速的创建需要的数据库实例资源,另外我们也针对内部业务的特点开发了一套私有云分布式数据库中间件系统,让压力分散到多个实例上,降低每个数据库实例的压力。

InfoQ:在技术演进过程中,有没有哪些你印象特别深刻的故事跟我们分享一下?

张成远:京东的业务发展非常的迅猛,所以在很大程度上来说京东的技术都在被业务驱动着往前跑,很多业务早期数据可能是放在 Oracle 或者 Sqlserver 中的,等到业务量比较庞大的时候再着手将数据从原来的数据库迁移到 mysql 里的时候就会比较痛苦,一般都需要业务方和数据库团队紧密配合才能真正的完整的迁移出来,但是也正是因为有这些实际的业务需求驱使着京东的技术不断的提升。


给 InfoQ 中文站投稿或者参与内容翻译工作,请邮件至 editors@cn.infoq.com 。也欢迎大家通过新浪微博( @InfoQ @丁晓昀),微信(微信号: InfoQChina )关注我们,并与我们的编辑和其他读者朋友交流(欢迎加入 InfoQ 读者交流群InfoQ 好读者(已满),InfoQ 读者交流群(#2)InfoQ 好读者)。

2015 年 11 月 25 日 18:002135

评论

发布
暂无评论
发现更多内容

week05 学习总结 分布式缓存&消息队列&负载

Z冰红茶

架构师训练营第5周

大丁💸💵💴💶🚀🐟

计算机中短期学习路线

zack

让Go“恐慌”的十种方法

博文视点Broadview

go

你可能还不知道自己无知

小天同学

读书 智能时代 信息噪声 高考

一次非常有意思的 SQL 优化经历: 从 30248.271s 到 0.001s

Java小咖秀

MySQL 面试 经验分享 优化逻辑 后端开发

【Python】__name__ 是什么?

Leetao

Python Python基础

很多人毕业多年以后,还是改不掉学生思维

小智

职场 思维方式 高考

一口气说出 OAuth2.0 的四种授权方式

程序员内点事

Java oauth2.0

话题讨论|作为一名程序员,你下班之后都会做些什么?

InfoQ写作平台官方

写作平台 话题讨论 话题

第5周结构师训练营——作业

jiangnanage

架构师训练营 W5 作业

Kun

极客大学架构师训练营

第五周作业

Linuxer

极客大学架构师训练营

第 5 周作业:一致性 Hash 算法

姜 某某

架构师训练营第五周作业

talen

干货 | 如何评估Kubernetes持久化存储方案

焱融科技

Kubernetes 容器 云原生 k8s 容器存储

Redis-进阶篇一

多选参数

数据库 redis redis高可用 redis6.0.0 Redis项目

kafka监听mysql实时数据变更

爱java爱自己

MySQL mysql事务

数据分析师成长体系漫谈--数据埋点

analysis-lion

数据分析 数据采集 埋点

这份高考卷,只有程序员能得满分...

程序员生活志

程序员 高考

「深度解析」AI训练之数据缓存

焱融科技

人工智能 AI 存储 焱融科技 数据缓存

女同事问哪吒什么是 Spring 循环依赖?我...

通天哪吒

Spring核心原理解析

Chank

Java spring

Ceph数据恢复初探

焱融科技

焱融科技 文件存储 分布式存储 数据恢复 Ceph

SpringBoot 中使用 Filter 的正确姿势

Java课代表

架构师训练营第五周作业

一剑

国内首本CTF赛事技术解析书籍,五年之约,兑现了!

华章IT

网络安全 Web CTF Reverse PWN

游戏夜读 | 关卡设计的难点

game1night

一致性hash的理解与实现

dongge

计算机操作系统基础(十四)---线程同步之条件变量

书旅

php laravel 操作系统 进程 线程’

啃碎并发(三):Java线程上下文切换

猿灯塔

NLP领域的2020年大事记及2021展望

NLP领域的2020年大事记及2021展望

看京东如何玩转云数据库-InfoQ