2022 年 1 月,Apache ShardingSphere 核心技术团队来到陌陌研发中心,与陌陌的技术同学就中间件技术展开了深度交流和探讨。

作为一款基于地理位置的移动社交应用,用户可以在陌陌平台上通过视频、文字、语音、图片等多种形式来展示自己,建立起真实、有效、健康的社交关系。在多种社交场景下,为更有效缓解后台数据处理压力,陌陌自研了一款中间件工具来缓解压力。

作为中间件领域最著名的开源项目之一,Apache ShardingSphere 在全球范围内具备一定的影响力。因此,陌陌邀请到了 Apache Member、Apache ShardingSphere PMC 潘娟来到现场,双方对 Apache ShardingSphere 的相关场景解决方案以及陌陌自研中间件技术进行了交流,并着重就分布式事务以及数据迁移等能力展开了探讨。

01 Apache ShardingSphere 如何处理负载均衡问题?

在服务的日常运维中,当服务器的平均负载和峰值负载达到某个特定阈值时,就需要考虑对相应服务进行扩容。当其中某个服务使用了负载均衡后,其可扩展性以及高可用性都将得到极大增强。

在存储节点层面(数据库),针对海量数据存储的情况,企业可以通过单独搭建负载均衡并将其视作为数据库的运维管控端,将数据库读和写的操作分开对应至不同的数据库服务器,减轻数据库压力。此外,企业也可以采用 Apache ShardingSphere 通过负载均衡策略将查询请求疏导至不同从库,从而实现限流、治理、审计、白名单等能力,作为云上部署的一部分来管理数据库。

而在计算节点层面(Proxy),企业往往会选择 F5、Nginx 等软件进行负载均衡,将来自互联网或内网的流量分发至多台后端服务器,降低单点故障所带来的影响。当使用 Apache ShardingSphere-Proxy 端时,依然可以采用此方案将查询负载分散到多个服务器上,提升数据库的运维效率。然而,在云上、私有化环境逐渐成为主流的未来,企业需要一套能够在新应用场景及业务环境下实现负载均衡的全新策略。对此,Apache ShardingSphere 背后商业化公司 SphereEx 开发了一款高性能数据库访问接入代理工具 —— Pisa,能够为用户提供强大的 SQL 负载均衡、SQL 审计、可观测性等能力,提升应用系统在云上的可靠性和吞吐力,为企业在云上以及私有化环境中提供更好的解决方案。预计将在 2022 年中开源,欢迎大家保持关注。

02 Apache ShardingSphere 如何实现分布式事务?

ACID 事务中对隔离性的要求很高,但在事务执行过程中必须将所有的资源锁定。柔性事务的理念是通过放宽对强一致性要求,来换取系统吞吐量的提升。从整体上看,数据库只是一个单元,无法判断分布式事务下的整体状态,因此理论上不可能依靠单点的数据库来实现分布式事务。因此,需要在数据库之上的 TM 来统一管理 RM 状态、事务的提交阶段等,而这也正是 ShardingSphere 的专长所在。

ShardingSphere 主要集成了 XA 解决方案,例如 Narayana,及主流柔性事务的解决方案,并为本地事务、两阶段事务和柔性事务提供统一的分布式事务接口,从而屏蔽底层具体分布式事务细节,像使用本地事务一样使用 ACID 或柔性事务级别的分布式事务,满足用户对不同场景的需求。

此外,SphereEx 计划以自研的 GTM+MVCC 的形式呈现,提供商业的分布式事务解决方案,为企业提供更完美的分布式事务支持。通过在 Proxy 层实现 MVCC,使所有的请求都经过 Proxy 端,通过 Proxy 给每个事务下发的全局事务 ID 来计算整个事务级别之间每个版本的可见性问题,并由它来实现对于底层 RM 的管理。

03 Apache ShardingSphere 如何实现数据迁移?迁移之后如何保证一致性?

从数据迁移过程来看,往往需要先通过存量迁移来保证数据基本盘不变,后续以增量迁移的形式来确保数据最终完全一致,并在完整迁移过程中的某一点停写来做切换。

Apache ShardingSphere 能够实现增量迁移、存量迁移以及 check 数据一致性,使数据迁移、流量导流、切流等操作都被封装到 Proxy 端本身。对于用户而言,只需通过执行一条 DistSQL 语句即可实现迁移策略变更,同时无需担心对上层应用产生影响,ShardingSphere 在切流过程中实现了对上层应用无感知,无需进行额外业务变更操作,减少了运维人员在数据迁移过程的痛点。

在确保数据一致性方面,所有的市场验证方案都是在速度与高一致性上进行折中或选择,Apache ShardingSphere 提供了多种内置的数据一致性校验算法,默认使用 CRC32 以便在速度与一致性上取得平衡。此外,Apache ShardingSphere 也允许用户通过自定义配置来选择适合自己的方案,也可以通过接口自行实现相关算法,以最合适的方式确保数据迁移过程中的一致性。

【联系我们】

如果您在业务中有应用 Apache ShardingSphere,想要快速了解、接入 Apache ShardingSphere 5.0 新生态,希望借此机会在团队内部举办一场关于 Apache ShardingSphere 的技术活动,欢迎在公众号后台中留下您的姓名、公司、职位、电话等信息,或扫描下方二维码添加官方小助手,备注“走进企业”,会有专人与您对接。

在沟通过后如果双方认为产品和场景均非常匹配,Apache ShardingSphere 社区的核心团队将会走进您的企业,与各条研发线的工程师们现场沟通,解答关于 Apache ShardingSphere 的任何疑问。

【元宵节快乐】Apache ShardingSphere 企业行|走进陌陌相关推荐

  1. Apache ShardingSphere 企业行|走进中商惠民

    为进一步了解各家厂商的应用场景与深层次需求,提升企业研发团队在使用 Apache ShardingSphere 的效率,Apache ShardingSphere 社区开启了[走进企业]系列活动. 近 ...

  2. 探寻人工智能前沿 迎接AIGC时代——CSIG企业行(附一些好玩的创新点)

    上周我有幸参加了由中国图像图形学会和合合信息共同举办的CSIG企业行活动. 这次活动邀请了多位来自图像描述与视觉问答.图文公式识别.自然语言处理.生成式视觉等领域的学者,他们分享了各自的研究成果和经验 ...

  3. 重磅!分布式数据库解决方案Apache ShardingSphere毕业成为顶级项目

    点击上方"方志朋",选择"设为星标" 回复"666"获取新整理的面试文章 全球最大的开源软件基金会 Apache 软件基金会(以下简称 Ap ...

  4. 分布式数据库解决方案Apache ShardingSphere毕业成为顶级项目

    点击上方蓝色"程序猿DD",选择"设为星标" 回复"资源"获取独家整理的学习资料! 来源 | 公众号「ShardingSphere官微」 全 ...

  5. 深度剖析Apache Shardingsphere对分布式事务的支持

    Apache ShardingSphere 是一套开源的分布式数据库中间件解决方案组成的生态圈,它由 JDBC.Proxy 和 Sidecar(规划中)这 3 款相互独立,却又能够混合部署配合使用的产 ...

  6. Apache ShardingSphere 一文读懂

    一.Apache ShardingSphere的概述 1.概述 官网:http://shardingsphere.apache.org/index_zh.html 下载地址:https://shard ...

  7. Apache ShardingSphere 元数据能力增强解读与实战

    元数据介绍 Apache ShardingSphere 的元数据主要包括规则.数据源.表结构等信息.规则信息包含分片.加密.读写分离.事务.高可用等.数据源信息存储的是需要通过 ShardingSph ...

  8. Springboot2.x +JPA 集成 Apache ShardingSphere 同库分表

    分库分表背景: 数据库性能瓶颈:主要分为按照业务来划分或者按照数据量来划分. 拆分方式: 水平拆分(每个表的结构都一样):订单表数据量大,我们可以水平拆分 ,分成order表1.order表2.ord ...

  9. Apache ShardingSphere 5.0.0-alpha版本发布

    点击蓝字 关注我们 本期看点 Apache ShardingSphere是一套开源的分布式数据库中间件解决方案组成的生态圈,它由Sharding-JDBC.Sharding-Proxy和Shardin ...

最新文章

  1. Another app is currently holding the yum lock; waitingn
  2. 从Powershell 入侵脚本学到的如何执行后台runspace~
  3. swiper动态加载数据左右切换失效
  4. P3980-[NOI2008]志愿者招募【费用流】
  5. bind函数polyfill源码解析
  6. 新东方年会吐槽视频《释放自我2.0》又来了!不过这次俞敏洪没说发奖金...
  7. python读取第一行设为字典_将csv读入字典,第一行成为名称
  8. java 正则表达式大全_Java 正则表达式大全
  9. Excel中自动按照货物名称实现结余累计的示例
  10. redis使用及Spring Session+Redis实现Session共享
  11. 无法在浏览器中创建CAD文档
  12. python用两分钟告诉你,怎样暴力破解隔壁老王的 WiFi 密码
  13. 皕杰报表中的过滤分组函数与过滤分组报表
  14. ffmpeg API FR NET
  15. 10亿手机号如何去重?(BitMap)
  16. Zynq UltraScale+ MPSoC IPI 通信
  17. 2021年化工自动化控制仪表考试试卷及化工自动化控制仪表模拟考试题库
  18. IT成本控制对企业竞争力的影响
  19. [论文解读] Metamorphic Object Insertion for Testing Object Detection Systems
  20. 思科路由器的简单配置

热门文章

  1. Android EditText输入限制及字符编码
  2. 基于机器学习具有实时高效任务分配的边缘计算系统
  3. 分布式系统经典论文汇总
  4. notability整理归档_5000 字干货:iPad 笔记神器《Notability》详细教程,助你开启学霸之路...
  5. 递归方法。计算递归次数
  6. 新闻列表、侧边栏、footer
  7. 拯救被信息“淹没”的企业——越来越引人注目的企业内容管理
  8. 未来可期!274位博士新生入学西湖大学
  9. 【wpf】DataGrid的使用
  10. Vue.js 开发实践:实现精巧的无限加载与分页功能