近期,Apache ShardingSphere 核心技术团队应邀来到汽车之家北京总部,PMC 潘娟与汽车之家的技术同学在 ShardingSphere 场景解决方案方面展开了深度交流与探讨。
汽车之家成立于 2005 年,致力于为消费者提供一站式的看车、买车、用车服务,提供优质的汽车消费和汽车生活服务。在历经媒体化、平台化、智能化的转型后,汽车之家正在进行生态化布局,围绕看车、买车、用车多场景打造“人无我有”的全网唯一车生态全链路平台。从汽车之家官网得知,汽车之家 App 月活已达到 6403 万。这六千万体量的月活在为业务带来了增长的同时,也为后台架构也带来了不小的压力。在交流过程中,双方围绕以下这些问题展开了探讨。
如何实现从 MySQL 到 ES 数据迁移和同步?
这也是 Apache ShardingSphere 目前所正在做的一部分功能,由于同步的过程就相当于是将数据迁移过去,在分片的过程中将数据完全打散后分布在每一片上。目前 Apache ShardingSphere 生态内有一款 scaling 迁移模块,可实现数据分片的弹性伸缩,保证分片架构能够随着业务变化而不断调整。
数据库出现故障转移时,ShardingSphere 如何处理,是否需要 DBA 介入?
分为两种情况,第一种情况下数据库采用 MGR,这种情况下 ShardingSphere 会自动进行故障转移;第二种情况则是采用 MHA 或其它高可用方案,需要 DBA 通过 DistSQL 主动反馈给 Proxy 端,此时 ShardingSphere 再处理所需要的业务流量。
需要在 Proxy 上做 DDL 变更,还是在计算节点上做变更?
在 Proxy 上实现 DDL 变更操作,并需要 ShardingSphere 的分布式事务去进行保障。现阶段 Apache ShardingSphere 支持 XA 及主流柔性事务的解决方案,为本地事务、两阶段事务和柔性事务提供统一的分布式事务接口。众所周知,在 MySQL 中 DDL 是不会执行回滚的。目前 ShardingSphere 的状态和底层数据库保持一致,如果 DDL 发生了『一半执行成功一半不成功』的情况下,目前 ShardingSphere 只会报错,还无法提供及时回滚的能力。
目前 Apache ShardingSphere 已能够记录每个执行结果以及当前的事务状态,相当于对每个计算节点实现版本控制,这部分能力完全开源。后续版本只要利用这些版本的信息,如果失败就可以直接实现 DDL 回滚。同时因为 Proxy 本身是无状态的,处于随起随停的状态,因此版本信息需要放到治理中心去实现。基于位于数据库上层的 Proxy,可以屏蔽底层具体分布式事务细节,像使用本地事务一样使用 ACID 或柔性事务级别的分布式事务,满足用户对不同场景的需求。
ShardingSphere + 数据库的组合是否能满足两地三中心的多活场景?
一些分布式数据库本身自带两地三中心架构,其计算节点和存储节点本身就是一个非常紧耦合的产品。这与 ShardingSphere 和数据库之间的关系是不同的。在 ShardingSphere 的体系中,数据库回归到了存放数据的本质。因此在实现两地三中心时,对于数据存储而言可以任意选择主备或其它部署方式,在三个中心都存储完全同样的数据。
对于 Proxy 而言,因为 Proxy 本身是位于数据库之上,不论数据库位于哪个数据中心,Proxy 都能够感知到整体数据库集群的部署状态。如果此时 A 机房服务挂掉,可以通过 DistSQL 执行 Proxy 将流量迁移到其它机房数据库上进行访问。因为 Proxy 本身无状态,因此理论上可以在每个机房中都部署一台 Proxy,如果 A 机房服务全部挂掉,只需访问 B 机房的 Proxy 端就能够自然实现流量的迁移。未来 Apache ShardingSphere 社区也将针对多活、两地三中心此类场景,在功能层面实现进一步完善。
【联系我们】
如果您在业务中有应用 Apache ShardingSphere,想要快速了解、接入 Apache ShardingSphere 5.X 新生态,希望借此机会在团队内部举办一场关于 Apache ShardingSphere 的技术分享,欢迎扫描下方二维码添加官方小助手微信(ss_assistant_1),备注“走进企业”,会有专人与您对接。
在沟通过后如果双方认为产品和场景均非常匹配,Apache ShardingSphere 社区的核心团队将会走进您的企业,与各条研发线的工程师们现场沟通,解答关于 Apache ShardingSphere 的任何疑问。
欢迎点击链接,了解更多内容:
Apache ShardingSphere 官网:https://shardingsphere.apache...
Apache ShardingSphere GitHub 地址:https://github.com/apache/sha...
SphereEx 官网:https://www.sphere-ex.com
**粗体** _斜体_ [链接](http://example.com) `代码` - 列表 > 引用
。你还可以使用@
来通知其他用户。