Apache ShardingSphere 在京东白条场景的落地之旅
京东白条使用 Apache ShardingSphere 解决了千亿数据存储和扩容的问题,为大促活动奠定了基础。
2014 年初,“京东白条”作为业内互联网信用支付产品,数据量爆发式的增长,每一次大促备战都是对技术人员的考验,每一次的战略转型驱动着数据架构的成长。
--张栋芳,京东白条研发负责人
京东白条数据架构演进史
- 2014~2015
- 通过 Solr 集群分担部分读和写的业务,缓解核心库的压力;
- Solr 扩展体验上欠佳,对业务也存在较大的入侵。
- 2015~2016
- 查询热点数据效率高,非结构化的存储方式易于修改表结构;
- 依然面对着扩展差、对业务入侵强的局面,而且耗内存。
- 2016~2017
- 该方案具有较强的数据实时性,扩展性良好;
- 基于业务框架的数据分片难以降低代码维护成本。
迫在眉睫的架构解耦
|
基于自研框架分片
|
基于 ShardingSphere 分片
|
|
|---|---|---|
|
性能
|
高
|
高
|
|
代码耦合度
|
高
|
低
|
|
业务入侵程度
|
高
|
低
|
|
升级难度
|
高
|
低
|
|
扩展性
|
一般
|
良好
|
- 聚焦精力:将基于架构的数据库拆分,交给分表组件实现,研发精力需聚焦于业务本身;
- 简化升级:解耦技术架构,简化业务系统升级工作的研发流程;
- 规划未来:为系统提供良好的扩展能力,从容应对“618”和“11. 11”等活动。
Apache ShardingSphere 解决方案
- 产品成熟:经数年打磨产品成熟度高,且社区活跃;
- 性能良好:微内核、轻量化的设计,性能损耗极小;
- 改造量小:支持原生的 MySQL 协议,研发工作量小;
- 扩展灵活:搭配使用迁移同步组件轻松实现数据扩展。

产品适配
- 升级 SQL 引擎
白条的业务逻辑非常复杂且庞大,多样化场景的需求对 SQL 的兼容程度有着较高要求,Apache ShardingSphere 重构了 SQL 解析模块,并支持了更多的 SQL。
- 路由至单数据节点 ,SQL 100% 兼容;
- 路由至多数据节点,可全面支持 DML、DDL、DCL、TCL 和部分 DAL。支持分页、去重、排序、分组、聚合、关联查询。
- 分布式主键
- 业务分片键值注入
- SQL 解析结果缓存
- JDBC 元数据信息缓存
- Bind 表 & 广播表的使用
- 自动化执行引擎 & 流式归并

业务割接
Apache ShardingSphere 带来的收益
- 简化升级路径
- 节省研发力量
- 架构灵活扩展
写在最后

加入交流群
Apache ShardingSphere 在京东白条场景的落地之旅的更多相关文章
- 重磅|Apache ShardingSphere 5.0.0 即将正式发布
Apache ShardingSphere 5.0.0 GA 版在经历 5.0.0-alpha 及 5.0.0-beta 接近两年时间的研发和打磨,终于将在 11 月份与大家正式见面! 11 月 10 ...
- Apache Sharding-Sphere
Sharding-Sphere 正式步入 Apache 基金会孵化器 - 开源中国 https://www.oschina.net/news/101691/sharding-sphere-enter- ...
- Apache ShardingSphere:由开源驱动的分布式数据库中间件生态
2021 年 7 月 21 日 2021 亚马逊云科技中国峰会现场,SphereEx 联合创始人.Apache ShardingSphere PMC 潘娟受邀参与此次峰会,以<Apache Sh ...
- Apache ShardingSphere 元数据加载剖析
唐国城 小米软件工程师,主要负责 MIUI 浏览器服务端研发工作.热爱开源,热爱技术,喜欢探索,热衷于研究学习各种开源中间件,很高兴能参与到 ShardingSphere 社区建设中,希望在社区中努力 ...
- DistSQL:像数据库一样使用 Apache ShardingSphere
Apache ShardingSphere 5.0.0-beta 深度解析的第一篇文章和大家一起重温了 ShardingSphere 的内核原理,并详细阐述了此版本在内核层面,特别是 SQL 能力方面 ...
- SQL 居然还能在 Apache ShardingSphere 上实现这些功能?
在去年 10 月 5.0.0-alpha 版本发布之后,Apache ShardingSphere 经历了长达 8 个多月的持续开发与优化,终于在 6 月 25 日正式迎来了 5.0.0-beta 版 ...
- Apache ShardingSphere 5.0.0 内核优化及升级指南
经过近两年时间的优化和打磨,Apache ShardingSphere 5.0.0 GA 版终于在本月正式发布,相比于 4.1.1 GA 版,5.0.0 GA 版在内核层面进行了大量的优化.首先,基于 ...
- Apache ShardingSphere 5.1.2 发布|全新驱动 API + 云原生部署,打造高性能数据网关
在 Apache ShardingSphere 5.1.1 发布后,ShardingSphere 合并了来自全球的团队或个人的累计 1028 个 PR,为大家带来 5.1.2 新版本.该版本在功能.性 ...
- Apache ShardingSphere 邀您相约 Open Source Day
Apache ShardingSphere 很荣幸接受 AnitaB.org 的邀请参加 OpenSourceDay Summer 2021 活动. Open Source Day (OSD) 是一个 ...
随机推荐
- netty系列之:自建客户端和HTTP服务器交互
目录 简介 使用客户端构建请求 accept-encoding server解析HTTP请求 总结 简介 上一篇文章,我们搭建了一个支持中文的HTTP服务器,并且能够从浏览器访问,并获取到相应的结果. ...
- VSCode中相对路径设置问题
使用的版本 对于import xxx操作,相对路径为sys.path 对于open("test.txt",'r')文件打开操作,相对路径为os.getcwd() 对于termina ...
- 分数化循环小数C++实现
引言 前一阵做了一个有理数四则混合运算的程序(详见:用C++实现的有理数(分数)四则混合运算计算器),以分数形式呈现运算结果.这次添加以循环小数形式呈现运算结果的功能.例如: Please input ...
- MySQL-存储引擎-1
一.MySQL存储引擎 mysql> create table country( -> country_id smallint unsigned not null auto_increme ...
- Python - 面向对象编程 - 新式类和旧式类
object object 是 Python 为所有对象提供的父类,默认提供一些内置的属性.方法:可以使用 dir 方法查看 新式类 以 object 为父类的类,推荐使用 在 Python 3.x ...
- NOIP模拟38:b
这是T2. 一个容斥(其实也可以欧拉反演做,但是我不会). 首先开一个桶,记录第i行的j有多少个. 然后枚举1-\(maxn\),枚举他的值域内的倍数,记录倍数在第i行有多少个,将个数 ...
- Identity用户管理入门五(登录、注销)
一.建立LoginViewModel视图模型 using System.ComponentModel.DataAnnotations; namespace Shop.ViewModel { publi ...
- 判断IE浏览器版本
//判断IE浏览器版本 function IEVersion() { var userAgent = navigator.userAgent; //取得浏览器的userAgent字符串 var isI ...
- Nginx优化与防盗链
目录: 一.隐藏版本号 二.修改用户与组 三.缓存时间 四.日志切割 五.连接超时 六.更改进程数 七.配置网页压缩 一.隐藏版本号 可以使用 Fiddler 工具抓取数据包,查看 Nginx版本 也 ...
- FastAPI 学习之路(一)fastapi--高性能web开发框架
fastapi是高性能的web框架.他的主要特点是:- 快速编码- 减少人为bug- 直观- 简易- 具有交互式文档 - 高性能 - 基于API的开放标准 支持python 3.6版本. 安装 pip ...