从NoSQL到NewSQL,京东经验总结

本文根据【2016 第七届中国数据库技术大会】(微信搜索DTCC2014,关注关注中国数据库技术大会公众号)现场演讲嘉宾刘海锋老师分享内容整理而成。录音整理及文字编辑IT168@ZYY@老鱼

  讲师简介


▲刘海锋

  京东首席架构师,曾带领团队先后建设分布式存储、中间件、CDN、弹性计算云等技术体系,目前负责商城系统架构、深度学习与人工智能等新技术方向。

  正文

  各位朋友,大家好!我今天分享的主题是《大规模内存数据库:从NoSQL到NewSQL》。

  Jim Gray曾说过:Memory is the new disk,内存是新的磁盘。在过去几年我亲身体验到了整个趋势的变化,因为在任何的互联网公司,特别是电商行业,会大规模的使用缓存,但缓存演变到今天已经不是简单的缓存了,实际上它已经成为了数据访问的中心。

  京东网站上主要的动态内容都是由今天要跟大家分享的系统——JIMDB支持的,这个系统是从14年初开始建设。分为如下三个片段为大家介绍JIMDB整个系统的演进过程:

  自2014年初开始做JIMDB,只想把公司各个团队自行维护的缓存做成更健壮的分布式系统,更好地服务业务。整个系统的架构比较松散,存储结点下的每个server都是一个redis定制版本。各个外围模块相对独立但互相配合:有负责监控的,下发配置,扩容控制,分布式故障监测,主从切换等等,应用通过Java客户端或者Go代理接入。逐渐演进成为一个比较完善的基础平台。

  简单介绍两个主要的技术点。首先,如何精确检测故障以及进行快速切换以保障可用性,这是最基础也是最重要的。每个机房部署自己的Failure Detector,每一套故障检测器都分布在一个机房不同的机架位置上,通过分布式做比较精确的故障检测,检测到故障后通知另外一个模块,它会发起Failover到配置中心修改配置,进而这个配置会推送到Java客户端或GO代理,改变访问路由。

  另外一个关键的技术问题是动态扩容,即随着容量增长自动扩充资源。

  基于部分复制(partial replication)技术来实现动态扩容。从模型来说是集群分成bucket,以bucket而不是shard作为复制单元,每个bucket和shard之间有一个归属关系,可以通过bucket复制进行灵活调整,实现在线重新分片与数据均衡。

  对分布式系统特别是大规模的平台化来说,监控体系至关重要。一方面要为业务服务,另一方面为系统建设者所用。JIMDB经过两年多的发展已经形成了非常完善的监控体系。

  14年到15年初,JIMDB用一年时间演变成为一个高质量的分布式系统服务。每天有无数的业务上线创建集群,集群的生命周期接受还要回收,所以运维工作比较辛苦。因此,15年初到16年初,团队设计开发了JIMDB第二版,主要是实现平台的全自动化维护:自助申请接入,自动分配资源,基于容器自动部署。事情说起来简单,但花了很多心思去建设。

  接下来跟大家分享一下内存数据库可以给公司带来什么收益,就是极佳的性能。

  举个简单的例子,去年双十一当天的TPS超过两百万,百分之九十九的延迟都低于两毫秒。一方面让终端用户的体验更好,另一方面更主要的是业务产品开发团队可以更多的聚焦在业务功能的满足上,而不是性能调优上。

  基于内存做在线数据的存储有一个弊端——成本。而成本是一个相对的概念。在07年,08年左右,我们比较常用的服务器内存是4G,而今天线上采购的内存一般是256G加万兆网。照这个规律发展下去,估计明年年底很多公司都会采购标配1TB内存的服务器。内存的增长在某种程度上让成本问题变得不那么重要。此外,我们不断进行底层技术优化来降低内存碎片率。

  经过两年的发展,JIMDB现在可以认为做成了一套企业级NoSQL服务。完全兼容Redis数据类型,分布在几个机房数千台机器几万个docker实例,普遍使用万兆网络,支撑京东几乎所有在线业务。

  今年第一季度我们梳理了线上应用情况,发现JIMDB绝大多数都应用于缓存场景,但不是局部热点缓存,通常是全量数据缓存。如上图为例,JIMDB后面是MySQL集群,两个系统都放全量数据。对公司的应用开发团队来说,工作仍然比较复杂,一方面要维护两个系统之间的数据一致性,另一方面MySQL的横向分片扩容很麻烦。

  缓存提升数据访问性能,但增加了开发复杂性。公司一般把MySQL等传统关系型数据库作为持久存储,其实很少用到关系型数据库的高级特性。而且,MySQL存储可靠性还不够高,在主实例突然断电的情况下,数据依然可能发生丢失现象。因此从应用开发和系统运维角度来看,整个架构一定会发生变革。

  JIMDB第三代,从Redis兼容的NoSQL到MySQL兼容的NewSQL,目标是使得在线数据访问变得更加简洁。系统两层架构,前面是无状态的兼容版SQL协议的API结点,后面存储数据的机器形成一个新型分布式数据结构 - 在内存中分布式B-Trie,平衡字典树,简称为MBT。

  对比之前版本,其存储引擎、复制协议、分片策略都进行了重新的设计与实现。特别是状态机复制和按范围分片使得整个工程复杂度增加了。

  事务方面,我们并不追求技术上的绝对完美。而是针对电商场景,适度放松事务语义,能够满足关键业务场景即可。实现理论上的可串行化,性能开销很大,实现很复杂,业务也并不需要。

  就给大家简单分享这些,很多技术点并没有过多解读,总结起来就一个想法:一件事分步做,持续做,坚持三年就会很不一样。另外我坚信内存是存储的未来。

  我的分享到此结束,谢谢大家!

作者:zyy

来源:IT168

原文链接:从NoSQL到NewSQL,京东经验总结

时间: 2024-11-02 15:04:14

从NoSQL到NewSQL,京东经验总结的相关文章

HBase在京东的完善与创新

随着大数据处理时代的到来,NoSQL风生水起.京东作为国内最大的综合网络零售商,随着业务数据量爆发式增长,传统的关系数据库在海量数据面前开始显得捉襟见肘,于是京东云平台在Hadoop生态集群经验积累的基础上,引入了HBase作为海量数据存储的基础设施.虽然引入时间不长,但京东数十个业务系统已经使用了HBase,包括实时在线业务.离线批量计算业务.批量导入兼在线访问等业务类型.为了提高资源利用率,多个业务系统可能复用一个HBase集群.而开源的HBase处于发展期,业务之间的存储和访问产生了一些干

NewSQL才是未来

编者按:在数据库技术领域,Michael Stonebraker几乎是无人不知无人不晓的人物.现年70岁的Stonebraker不仅是Ingres和PostgreSQL的创始人,同时在Informix担任过技术总监.可以说,Stonebraker是关系型数据库技术从萌芽走向辉煌的见证人.他最新的项目VoltDB被视为是NewSQL数据库的代表,在他眼中,这种即拥有传统SQL数据库血统,又能够适应云计算时代分布式扩展的产品,才代表着数据库未来的发展方向. 在本文中,数据库老兵Michael Sto

2016美国Qcon解读:传统与新兴领域的融合——NewSQL的兴起与云化

编者按:最近10年数据库领域的发展路径基本可以概括为SQL->NoSQL->NewSQL,NewSQL支持传统的SQL协议,但是无论是在功能还是在底层存储上都发生了巨大的演进,在功能上支持如Json.全文索引.地理位置.K-V等丰富的功能,在存储引擎上支持如WiredTiger.RocksDB.MMAP等,MongoDB就是NewSQL的代表之一,本文重点介绍.     本次旧金山QCon大会NoSQL和NewSQL也是重点话题,当然NewSQL还是更火热一些,其中的典型代表就是MongoDB

Nosql大家族介绍

转载请注明:http://blog.csdn.net/kisssun0608/ 原文地址:http://nosql-databases.org/ 非关系数据库世界的终极向导------------------------------------------------------------------------------------------------------------------Nosql定义:下一代数据库大多专注于这几点:非关系型.分布式的.开源并且可以横向扩展. 原意图是成

NewSQL登堂入室 数据库厂商掘金行业大数据

一提到大数据,很多人首先想到的是互联网公司,比如Google.百度.阿里巴巴等.互联网企业在大数据分析方面确实走在了业界前列,其光环也遮住了行业大数据的光芒.IDC以"4个V"来定义大数据:Volume代表更大容量,Variety代表数据种类多样化,Velocity代表更快的处理速度,Value意味着大数据能创造更多价值.天津南大通用数据技术有限公司(以下简称南大通用)首席技术官武新表示,如果按"4V"的标准来衡量,行业大数据与互联网大数据在数据量.数据种类和数据处

MySQL智能运维与实践,看关系型数据库如何优雅应对云时代

随着互联网场景的导入,非结构化的海量数据给传统数据库的处理能力带来了极大的挑战,作为最受欢迎的开源关系型数据库,MySQL一步步地占领了原有商业数据库市场.如今Google.Facebook.网易.淘宝等大公司都在使用MySQL数据库.而MySQL的发展也从1.0到如今的8.0版本,其功能的完善和稳定性也得到了很好的保证. 本文包含以下三部分: MySQL8.0 的新特性 云时代MySQL的运维实践 金融行业最佳应用场景 今年8.0版本将会带来哪些惊喜呢? MySQL 8.0 新特性一览 1.I

SDCC 2016 中国软件开发者大会盛大开幕

2016年11月18-20日,由 CSDN打造的"SDCC 2016中国软件开发者大会"(以下简称SDCC 2016),在北京京都信苑饭店盛大开幕.大会为期三天,汇聚100多位国内外顶尖专家和知名讲师,全体大会探讨当下软件开发的"新趋势"与"新实践",而14场专题论坛则直击开发者关注的技术和行业实践, "英雄会"晚宴和特色活动也异彩纷呈.SDCC 2016致力将最前沿的软件开发技术,以及最具创新的实践案例带给开发者,是国内软件

数聚价值,智胜未来:技术在此盛放,第七届数据技术嘉年华主会场报道

踏着最后一抹秋色,第七届数据技术嘉年华如约而至,今日在北京丽都皇冠假日酒店,来自不同行业不同领域的专家和技术爱好者欢聚一堂共赴盛宴,这是一场数据的舞会,银行.保险.证券.互联网金融.运营商.能源和12家数据技术原生厂家齐聚大会,RMDB.NOSQL.NewSQL.MPP.容器.OpenStack技术栈的架构设计,应用实践,运维实践,产品内核.今日,技术在此盛放! 不能来现场的同学,我们在至顶网独家直播,精彩呈现,全球共享!详情:http://t.cn/RjiYktr 岁月未老,你我一如少年 在大

开源数据库该怎么玩?

9月13日,北京,巨杉数据库主办的"极客Cool" 沙龙第一期圆满结束.沙龙上,开源数据库的三个重要代表SequoiaDB巨杉数据库CTO王涛(NoSQL),阿里云RDS for PostgreSQL/PPAS 专家 萧少聪(PostgreSQL),PingCAP创始人刘奇(NewSQL),分别作了进行了分享,最后也针对新一代的数据库的应用.发展进行了圆桌讨论. 本次活动也特别感谢开源中国对本次活动的支持. SequoiaDB核心架构与应用场景 王涛的分享,首先介绍了SequoiaDB