写点什么

看京东如何玩转云数据库

  • 2015-11-25
  • 本文字数:2911 字

    阅读完需:约 10 分钟

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

受访嘉宾

张成远,京东资深架构师,《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:003265

评论

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

数衍科技与超市发达成合作,共同探索数字小票的新应用

科技怪咖

直播预告 | PolarDB-X 动手实践系列—— PolarDB-X on OSS 冷热数据分离存储

阿里云数据库开源

数据库 阿里云 开源 分布式 PolarDB-X

合成资产赛道风云突变,Linear Finance有望成为最具潜力的黑马

鳄鱼视界

4.0 SDK Workshop 纪实:一起体验多人、多屏幕共享新功能

RTE开发者社区

人工智能 音视频

Python 教程之输入输出(9)—— print() 中的 sep 参数

海拥(haiyong.site)

Python 8月月更

从事DevOps工作应该掌握哪些语言及工具

穿过生命散发芬芳

DevOps 8月月更

悲观锁和乐观锁的区别以及实现方式

浅羽技术

Java 面试 面试题 秋招 8月月更

计算机接口技术复习题(1-6章)

乌龟哥哥

8月月更

Flu tter开发小技巧

坚果

开源 8月月更

老板问我要ROI,我让他先挑宽门or窄门

科技怪咖

新元联手倍市得,以数字化手段实现人才公租房项目满意度持续监测

科技怪咖

购物中心的运营保障,数衍科技数据桥接服务系统升级

科技怪咖

ARMS实践|日志在可观测场景下的应用

阿里巴巴中间件

阿里云 云原生 可观测

云途加油站 | 一文读懂 Dynatrace 与Amazon Lambda 的“双剑合璧心法”

亚马逊云科技 (Amazon Web Services)

数据库 Serverless Lambda

数据库中存媒体文件的字段用什么类型?一文带你了解二进制大对象BLOB

wljslmz

数据库 8月月更

仅用3年!青软集团跃升华为云教育类目伙伴TOP2

科技怪咖

开源一夏 |分布式事务--TCC解决方案

六月的雨在InfoQ

开源 分布式事务 TCC 最终一致性 8月月更

风险组件已经升级到最新版本,仍然提示风险,如何快速解决——kaptcha 安全漏洞

墨菲安全

Kaptcha 漏洞修复 开源安全 漏洞检测 开源安全与治理

[CSS入门到进阶] 外国前端开发者说的 Intrinsic Ratios in css 是什么意思?

HullQin

CSS JavaScript html 前端 8月月更

自动化测试如何解决日志问题

老张

自动化测试 日志处理

微博系统“微博评论”高性能高可用计算架构

张立奎

皮皮APP夏日防溺水公益讲座 联动武汉长江救援队筑建生命安全线

联营汇聚

分布式雪花算法

源字节1号

前端开发 后端开发

看准六点,帮你选对客户体验管理(CEM)系统

科技怪咖

每日一R「14」错误处理

Samson

学习笔记 8月月更 ​Rust

一加和OPPO是什么关系?我来揭秘

Geek_8a195c

解决 Flutter 嵌套过深,是选择函数还是自定义类组件?

岛上码农

flutter ios 前端 安卓开发 8月月更

基于STM32设计的拼图小游戏

DS小龙哥

8月月更

C/CPP中int和string的互相转换详解与多解例题分析

CtrlX

c c++ 后端 数据类型 8月月更

数据点按时间间隔以及数据值分割数据块

waitmoon

算法 SLO

【数据结构实践】从0到1带你利用Python实现自定义集合

迷彩

数据结构 集合运算 8月月更 自定义集合

看京东如何玩转云数据库_服务革新_龙永昕_InfoQ精选文章