AI 年度盘点与2025发展趋势展望,50+案例解析亮相AICon 了解详情
写点什么

看京东如何玩转云数据库

  • 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:002779

评论

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

携程DBA负责人俞榕刚:OceanBase在携程的落地和实践

OceanBase 数据库

数据库 分布式 OceanBase 开源 携程 客户实践

一款基于Java语言开发的,开源商业应用的模块化开发框架和智能管理平台-Axelor

马农驾驾驾

Java 系统开发 BPM 开发框架 智能管理

亚信科技AntDB数据库荣获“2021金融科技应用创新突出贡献奖”

亚信AntDB数据库

AntDB 金融行业 亚信科技

“以终为始”的正确使用方式

石云升

思维模型 1月月更

恒源云(GPUSHARE)_AdderSR: Towards Energy Efficient Image Super-Resolution学习笔记

恒源云

人工智能 深度学习 计算机视觉

用 docker 快速搭建 kafka(qbit)

qbit

kafka zookeeper docker image

必读!如何有效的进行沟通

观测观测

恒源云(GPUSHARE)_attention decoder效果不佳时如何应对

恒源云

深度学习 计算机视觉

鉴释加入龙蜥社区,助力开源生态建设

OpenAnolis小助手

Linux 开源 社群 合作伙伴

五步实现HarmonyOS应用(ets)【鸿蒙开发 07】

坚果

鸿蒙 1月月更

前端工程师 2022 年必备的 7 个工具

开源之巅

JavaScript node.js

第三方测评:GaussDB(for Redis)稳定性与扩容表现

华为云开发者联盟

redis 华为云 GaussDB(for Redis) NoSQL数据库 云原生NoSQL数据库

☕【Java深层系列】「并发编程系列」让我们一起探索一下CompletionService的技术原理和使用指南

洛神灬殇

Java 线程池 CompletionService 异步执行 1月日更

异步调用如何使用是最好的方式?

CRMEB

高并发环境下,6个构建缓存服务需要注意的问题

华为云开发者联盟

缓存 高并发 开发 并发 缓存服务

SparkSQL的入门实践教程

华为云开发者联盟

sql spark 编程 Sparksql 结构化数据

全栈工程师?你知道全流程工程师吗?

蜜糖的代码注释

Java 开发 后端技术

企业上云后,不容忽视的管理工具-云管平台

行云管家

云计算 企业上云 云管平台 云管理

鉴释加入龙蜥社区,助力开源生态建设

OpenAnolis小助手

Linux 开源

Linux之wc命令

入门小站

Linux

“在线设计”网络资源管理的源头活水

鲸品堂

通信运营商 在线设计平台

手把手教你丨小熊派移植华为 LiteOS-M

华为云开发者联盟

华为 鸿蒙 LiteOS 小熊派 移植

从智能汽车到智慧出行,区块链能打通车联网的任督二脉吗?

CECBC

基于Calcite的分布式多数据源查询

麒思妙想

MySQL 数据库 Apache Calcite gbase8a

流批一体技术框架探索及在袋鼠云数栈中的实践

袋鼠云数栈

Flutter启动流程分析之插件化升级探索

得物技术

flutter Weex Google 框架 原生

在线YAML转TOML工具

入门小站

工具

微信的业务架构图和学生管理系统的毕业设计

Geek_8d5fe5

架构实战营

农业掀起“上链”潮 区块链等数字技术正成为乡村振兴新动力

CECBC

直播回顾:准确性提升到 5 秒级,ssar 独创的 load5s 指标有多硬核?| 龙蜥技术

OpenAnolis小助手

Linux 开源

2022年保障企业内网安全就用行云管家!免费试用!

行云管家

云计算 云平台 内网 云管平台

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