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

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 的任何疑问。

 

posted @ 2022-02-22 16:52  SphereEx  阅读(67)  评论(0编辑  收藏  举报