排行
数据库百科
核心案例
行业报告
月度解读
大事记
产业图谱
中国数据库
向量数据库
时序数据库
实时数据库
搜索引擎
空间数据库
图数据库
数据仓库
大调查
2021年报告
2022年报告
年度数据库
2020年openGauss
2021年TiDB
2022年PolarDB
2023年OceanBase
首页
资讯
活动
大会
学习
课程中心
推荐优质内容、热门课程
学习路径
预设学习计划、达成学习目标
知识图谱
综合了解技术体系知识点
课程库
快速筛选、搜索相关课程
视频学习
专业视频分享技术知识
电子文档
快速搜索阅览技术文档
文档
问答
服务
智能助手小墨
关于数据库相关的问题,您都可以问我
数据库巡检平台
脚本采集百余项,在线智能分析总结
SQLRUN
在线数据库即时SQL运行平台
数据库实训平台
实操环境、开箱即用、一键连接
数据库管理服务
汇聚顶级数据库专家,具备多数据库运维能力
数据库百科
核心案例
行业报告
月度解读
大事记
产业图谱
我的订单
登录后可立即获得以下权益
免费培训课程
收藏优质文章
疑难问题解答
下载专业文档
签到免费抽奖
提升成长等级
立即登录
登录
注册
登录
注册
首页
资讯
活动
大会
课程
文档
排行
问答
我的订单
首页
专家团队
智能助手
在线工具
SQLRUN
在线数据库即时SQL运行平台
数据库在线实训平台
实操环境、开箱即用、一键连接
AWR分析
上传AWR报告,查看分析结果
SQL格式化
快速格式化绝大多数SQL语句
SQL审核
审核编写规范,提升执行效率
PLSQL解密
解密超4000字符的PL/SQL语句
OraC函数
查询Oracle C 函数的详细描述
智能助手小墨
关于数据库相关的问题,您都可以问我
精选案例
新闻资讯
云市场
登录后可立即获得以下权益
免费培训课程
收藏优质文章
疑难问题解答
下载专业文档
签到免费抽奖
提升成长等级
立即登录
登录
注册
登录
注册
首页
专家团队
智能助手
精选案例
新闻资讯
云市场
微信扫码
复制链接
新浪微博
分享数说
采集到收藏夹
分享到数说
举报
首页
/
【技术分享】从NoSQL到NewSQL,京东经验总结
【技术分享】从NoSQL到NewSQL,京东经验总结
数据库技术大会
2016-08-02
177
本文整理自DTCC2016主题演讲内容,录音整理及文字编辑IT168@ZYY@老鱼。如需转载,请先联系本公众号获取授权!
演讲嘉宾
刘海锋
京东高级技术总监
2013年加入京东,带领团队先后建设分布式存储、中间件、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。
对比之前版本,其存储引擎、复制协议、分片策略都进行了重新的设计与实现。特别是状态机复制和按范围分片使得整个工程复杂度增加了。
事务方面,我们并不追求技术上的绝对完美。而是针对电商场景,适度放松事务语义,能够满足关键业务场景即可。实现理论上的可串行化,性能开销很大,实现很复杂,业务也并不需要。
就给大家简单分享这些,很多技术点并没有过多解读,总结起来就一个想法:一件事分步做,持续做,坚持三年就会很不一样。另外我坚信内存是存储的未来。
我的分享到此结束,谢谢大家!
关于DTCC
中国数据库技术大会(DTCC)是目前国内数据库与大数据领域最大规模的技术盛宴,于每年春季召开,迄今已成功举办了七届。大会云集了国内外顶尖专家,共同探讨MySQL、NoSQL、Oracle、缓存技术、云端数据库、智能数据平台、大数据安全、数据治理、大数据和开源、大数据创业、大数据深度学习等领域的前瞻性热点话题与技术,吸引IT人士参会5000余名,为数据库人群、大数据从业人员、广大互联网人士及行业相关人士提供了极具价值的交流平台。
数据库
文章转载自
数据库技术大会
,如果涉嫌侵权,请发送邮件至:contact@modb.pro进行举报,并提供相关证据,一经查实,墨天轮将立刻删除相关内容。
评论
领墨值
有奖问卷
意见反馈
客服小墨