“ShardingSphere 大大简化了分库分表的开发和维护工作,对于业务的快速上线起到了非常大的支撑作用,保守估计 ShardingSphere 至少为我们节省了 4 个月的研发成本。”

——史墨轩,易华录·技术总监

今年以来,伴随着易华录旗下面向个人用户的云服务产品【葫芦 App】正式上线,后台架构所承受的业务压力也与日俱增。

为此,葫芦 App 研发团队选择采用 ShardingSphere 分库分表的功能对数据进行了横向的拆分,围绕 ShardingSphere 灵活敏捷的特性,满足了葫芦 App 业务对数据层扩展性的要求,避免团队重复“造轮子”,最大程度简化了随着业务增长而带来的愈发复杂化的分库分表的开发与维护工作。

1 从能力扩展到业务上新,葫芦 App 所面临的增长压力

对于数据存算能力的高要求,深深铸在了葫芦 App 技术团队的基因中。

由于葫芦 App 正处于快速成长期,业务和功能的调整需求相对频繁,这就需要后台技术团队能够根据前端业务变化而快速做出适配调整。用户数量和业务所产生的数据体量都在飞速增长的同时,也为后台底层数据库带来了更大的压力。

随着 2020 年 5 月 17 日葫芦 App 的正式上线,用户数据和业务体量也呈现出快速增长的态势,后台数据库不可避免地需要进行多次水平拆分。同时随着业务需求的快速变化,新的挑战也不断随之出现:

  • 能力扩展问题

随着用户量的快速增长以及产品形态的演变,用户数据出现了爆发式增长,过去传统架构的存算能力遭到了极为严峻的挑战,因此葫芦App 对于后端数据处理平台的要求是在具备扩展能力的同时,也要保证一定的灵活性。

  • 效率提升问题

为应对快速多变的业务,葫芦 App 的研发团队需要能够根据业务诉求来进行快速调整,以提升后台架构对业务的适应性,高灵活、易拓展特性的数据架构将能够极大提升团队研发效能。另一方面在大体量数据的影响下,数据库的检索效率难免出现延迟、读写慢等问题,进而会影响到最上层的用户体验。

  • 业务上线问题

功能上新频繁、上线时间提前等是任何一款新产品在上市初期都会遇到的问题,这对研发团队的研发能力提出了极大挑战。此前葫芦团队本计划通过内部研发力量并结合业务情况打造出自己的 Sharding 方案,不过由于时间关系,从方案设计、研发再到方案落地的自研路线已无法走通,因此敲定 Sharding 方案迫在眉睫。

  • 系统稳定问题

在引入新技术的同时,系统稳定性也会面临较大的挑战,尤其是面向底层技术的引用,大多具备一定的平台业务侵入性,在引入后大概率会对业务系统的稳定性产生一定影响。葫芦 App 研发团队需要一款对底层数据库侵入性低、适应期短、稳定性高的数据应用产品。

2 利用 ShardingSphere 的特性构建灵活高可用的数据架构解决方案

围绕上述的一些诉求,葫芦团队用了 2 周左右时间对 ShardingSphere 及同类解决方案进行了全面评估,综合考虑了如产品功能、成熟度、稳定性、性能等多方面评估指标,最终 ShardingSphere 凭借完善的功能支持程度以及高成熟度,充分满足了葫芦团队的业务诉求。

从上图中可以看出,葫芦团队将 ShardingSphere 部署在了阿里云的 RDS 之上,相较于对本体数据库做调整,葫芦团队更倾向于在数据库之上来进行数据治理。而 ShardingSphere 能够从可插拔架构所带来高扩展性、距离业务更紧密的贴合性以及对于业务架构的零侵入性这三个层面对葫芦的后台数据架构进行有效改进,并带来了明显的效果提升:

可插拔架构的『高扩展性』

由于业务特性,葫芦 App 原本有限的存储空间被消耗得非常快,并逐渐开始影响用户在前端的响应效率。通过采用 ShardingSphere 的分片策略,葫芦研发团队在应对海量计算+存储所带来的业务问题同时,能够确保分片扩展策略的灵活性。基于此,葫芦团队可以在ShardingSphere 上快速做出相应的功能扩展,为后续架构调整提供优化方案,进一步强化突出了 ShardingSphere 分库分表的优势。

距离业务更紧密的『贴合性』

后台架构的变化越小,对于业务而言就越可控。ShardingSphere 这种位于数据库之上的生态,距离业务更近,部署起来也更加轻量,无疑是解决葫芦 App 前台业务变更与后台架构调整之间矛盾的最优解。此外在灵活性层面,ShardingSphere 通过相关配置即可实现的方式,极大简化了葫芦研发团队在分库分表层面的研发与维护工作,对于业务的快速上线起到了非常大的支撑作用。

对于业务架构的『零侵入性』

葫芦 App 选择了 ShardingSphere-Proxy 部署模式,在不更换底层数据库的前提下通过 Proxy 来管理真实的数据库集群,基本无需对业务进行改造就已经完成了业务与数据在架构层面的分离,并避免了因更换数据库导致的业务不可用、漫长稳定周期等风险。另外,ShardingSphere 的无状态模式,几乎不会对前端用户产生任何可感知的影响,业务层也无需关注数据的存储方式。

因此对于葫芦 App 这种上线时间紧张、功能迭代快的产品来说,ShardingSphere-Proxy 通过复用原有数据库的能力,帮助葫芦研发团队在数据库之上实现分片、数据加密等增量能力的开发,且向下不需考虑底层数据库的配置,向上能够屏蔽用户感知,从而快速构建起面向业务的数据库直连能力,从系统架构层面进行了比较好的分离,确保后续数据库代理层的问题修复、版本更新等日常维护工作都不会影响到业务。

3 写在最后

此次与易华录葫芦 App 研发团队的合作,助力葫芦研发团队平稳度过了数次业务体量翻倍的历程,正是 ShardingSphere 在全球多种应用场景下的一个缩影。在商业化公司 SphereEx 的推动下,ShardingSphere 正在持续向着云化、商业化稳步迈进。在社区和商业化公司的双重加持下,未来 ShardingSphere 将继续深耕数据应用场景,持续挖掘 ShardingSphere 在各领域场景下的深层次价值,为用户提供覆盖更全面、性能更强大的数据服务。

目前,ShardingSphere 作为 Apache 基金会下的顶级开源项目,在 GitHub 上获得了超 14K Star 的关注,已成为行业内最受欢迎的开源项目之一,全球有超过 170 家企业用户登记使用,覆盖金融、电子商务、云服务、旅游、物流、教育、文娱等多个领域。

关于易华录 & 葫芦 App

北京易华录信息技术股份有限公司,成立于 2001 年,是国务院国资委直接监管的中央企业中国华录集团旗下控股的上市公司,致力于建设城市数字经济基础设施,以努力降低全社会长期保存数据的能耗和成本为使命,以成为社会可信的大数据一级开发和存储服务提供商直至演变成数据银行为愿景,构建一个数字孪生的城市,最终实现数字永生。

作为易华录内部孵化的第一款 C 端产品,葫芦 App 能够将用户生产内容的构思与素材妥善存储下来,并提供故事化的记录方式,降低用户内容制作门槛,让每个用户都能将生活的美好生动地展现出来,发现个人生活的精彩之处。为用户存储一生,点亮美好。

欢迎更多技术团队约稿投稿,和大家分享使用 ShardingSphere 的经验思考。如需转载请后台私信留言,对案例感兴趣的伙伴可联系社区经理(ss_assistant_1)回复“加群”进入技术交流群,我们也会不定期为社区发展做贡献的热心伙伴送上精美周边噢。

欢迎扫码关注我们

约稿投稿

加入交流群

易华录 X ShardingSphere|葫芦 App 后台数据处理的逻辑捷径的更多相关文章

  1. Win10/UWP开发—使用Cortana语音与App后台Service交互

    上篇文章中我们介绍了使用Cortana调用前台App,不熟悉的移步到:Win10/UWP开发—使用Cortana语音指令与App的前台交互,这篇我们讲讲如何使用Cortana调用App的后台任务,相比 ...

  2. 整合springboot(app后台框架搭建四)

    springboot可以说是为了适用SOA服务出现,一方面,极大的简便了配置,加速了开发速度:第二方面,也是一个嵌入式的web服务,通过jar包运行就是一个web服务: 还有提供了很多metric,i ...

  3. springmvc跨域+token验证(app后台框架搭建二)

    这是app后台框架搭建的第二课,主要针对app应用是跨域的运用,讲解怎么配置跨域服务:其次讲解怎么进行token验证,通过拦截器设置token验证和把token设置到http报文中.主要有如下:   ...

  4. APP 后台学习笔记

    1.APP后台功能: 远程存储数据.消息中转 2.架构是业务驱动,可能随着开发进程而变化,没有最完美架构 3.架构不要满足追求技术新奇酷炫,而是结合具体业务使用合适的技术,否则会给运维带来很多不必要的 ...

  5. App后台Keynote

    [App后台Keynote] 一.基础. 1.一个 节省 流量 的 处理 方法 是 让 App 下载 经过 压缩 的 图片( 一般 是 几十 KB 以下), 当 用户 需要 查看 原图 时 才 下载 ...

  6. App后台开发架构实践笔记

    1 App后台入门 1.1 App后台的功能 (1)远程存储数据: (2)消息中转. 1.2 App后台架构 架构设计的流程 (1) 根据App的设计,梳理出App的业务流程: (2) 把每个业务流程 ...

  7. 编辑表格输入内容、根据input输入框输入数字动态生成表格行数、编辑表格内容提交传给后台数据处理

    编辑表格输入内容.根据input输入框输入数字动态生成表格行数.编辑表格内容提交传给后台数据处理 记录自己学习做的东西,写的小demo,希望对大家也有帮助! 代码如下: <!DOCTYPE ht ...

  8. APP后台架构20191205

    1.架构,架构与业务紧密相关,是有业务驱动的. 2.APP后台演进原则. App后台的架构是由业务规模驱动而演进的,App后台是为业务服务的,App后台的价值在于能为业务提供其所需要的功能,不应过度设 ...

  9. APP后台架构开发实践笔记

    1 App后台入门 1.1 App后台的功能 (1)远程存储数据: (2)消息中转. 1.2 App后台架构 架构设计的流程 (1) 根据App的设计,梳理出App的业务流程: (2) 把每个业务流程 ...

随机推荐

  1. 2020年秋游戏开发-Gluttonous Snake

    此作业要求参考https://edu.cnblogs.com/campus/nenu/2020Fall/homework/11577 GitHub地址为https://github.com/15011 ...

  2. 备忘录——C#获取微信小程序的云数据库中数据

    目录 0. 背景说明 0.2 获取AccessToken 0.3 数据库查询 0.4 文件下载 2. 简单的封装 3. 简单测试 4. 参考文档 shanzm-2021年8月17日 17:14:24 ...

  3. Shell 脚本如何输出帮助信息?

    作者展示了一个技巧,将帮助信息写在 Bash 脚本脚本的头部,然后只要执行"脚本名 + help",就能输出这段帮助信息 https://samizdat.dev/help-mes ...

  4. leetcode 括号

    1. 括号(0809) 设计一种算法,打印n对括号的所有合法的(例如,开闭一一对应)组合. 说明:解集不能包含重复的子集. 例如,给出 n = 3,生成结果为: [ "((()))" ...

  5. HashSet的存储原理

    HashSet的底层用哈希散列表来存储对象(默认长度为16的数组),假如: Set set=new HashSet(); set.add(obj); 内部存储过程为:定义h=obj.hashCode, ...

  6. Python - 面向对象编程 - 实战(4)

    需求:士兵突进 士兵许三多有一把 AK47 士兵可以开火 枪能够发射子弹 枪装填子弹,可以增加子弹数量 需求分析 很明显有两个类:士兵类,枪类 AK47 是枪名,是枪类的属性,每把枪都有子弹数,所以子 ...

  7. Throwable中3个异常的方法

  8. 浅谈KMP模式匹配算法

    普通的模式匹配算法(BF算法) 子串的定位操作通常称为模式匹配算法 假设有一个需求,需要我们从串"a b a b c a b c a c b a b"中,寻找内容为"a ...

  9. Java基础学习3

    Java语法学习3 基本运算符 关系运算符返回结果为布尔类型 %:取余 模运算 +.-.*./.% :二元运算符 两个变量间的运算 ++.-- 一元运算符 package Study; public ...

  10. 阿里云短信功能php

    1. 引入文件: https://help.aliyun.com/document_detail/53111.html?spm=a2c1g.8271268.10000.99.5a8ddf25gG0wW ...