为进一步了解各家厂商的应用场景与深层次需求,提升企业研发团队在使用 Apache ShardingSphere 的效率,Apache ShardingSphere 社区开启了【走进企业】系列活动。
2 月 28 日,Apache ShardingSphere 核心技术团队应邀来到中信云网,Apache ShardingSphere PMC Chair、SphereEx CEO 张亮与中信云网的技术同学在开源生态建设、ShardingSphere 场景解决方案等方面展开了深度交流和探讨。
作为一家由中信集团全资成立的产业互联网赋能平台服务型公司,结合自身物联网、云计算以及大数据平台,已经形成智能建造、智慧园区、智慧水务、智能制造、健康养老、智慧农业等多个深度聚焦行业场景的产品及解决方案,中信云网开始思考如何在现有数据库体系上进行技术革新,以支持多个产业的创新发展。与此同时,作为中间件领域最著名的开源项目之一,伴随着 Apache ShardingSphere 生态的扩大,Apache ShardingSphere 的能力与中信云网的技术场景逐渐产生了交集。
迁移后如何确保数据一致
业务发展到一定阶段,激增的业务压力以及数据量的爆发会给企业带来新的挑战,Scale-Out 的方式可有效解决以上问题。
Apache ShardingSphere 通过 Scaling 工具实现在线的弹性扩容,同时也提供了多种内置的数据一致性校验算法,用以比较源端数据和目标端数据是否一致,默认使用 CRC32 以便在速度与一致性上取得平衡,且校验算法支持 SPI 自定义。数据迁移时间和数据量级成正比,为保证两端数据一致,一般需要停机窗口来让日志追平,最后通过 Scaling、业务层以及数据库层完成数据校验。
Apache ShardingSphere 可以将数据迁移任务分为多个部分并行执行,合并同一记录的修改操作,在配置上之后再执行一条命令停止主库的写入,使主库只具备只读的权限,同时在只读期间暂停 SQL 执行并在停写的瞬间确保数据是全局一致的,进而再操作切库,减少对于系统可用性的影响。
JDBC 与 Proxy,面向不同核心用户
Apache ShardingSphere 支持 JDBC 接入、Proxy 接入这两种形式,云上 Mesh 接入的方式正在研发中,用户可以按具体需求来做选型,在原有集群之上来做分片、读写分离、数据迁移等相关操作。
ShardingSphere-JDBC 面向使用 Java 的研发人员,定义为一款轻量级的 Java 框架,可将其理解为一款增强的 JDBC 驱动程序,其性能更高,对于性能损耗在 2%-7% 之间,如果专注于调优,可能损耗 0.1% 都不到,更能够满足研发人员的需求。研发人员能够通过 JDBC 客户端直接访问数据库,以 jar 的形式提供服务,不需要额外的部署和依赖。
ShardingSphere-Proxy 则是面向于运维人员的数据库管控代理端,用户需要先经过 Proxy 后才能访问数据库,中间经历了网络的一跳,导致 Proxy 产生 30%-70% 的性能损耗。因此 ShardingSphere-JDBC 模式的性能要明显优于 ShardingSphere-Proxy。但 ShardingSphere 可插拔架构提供了数十个基于 SPI 的扩展点,基于扩展点,ShardingSphere 默认实现了数据分片、读写分离、数据加密、影子库压测、高可用等功能,开发者可以十分方便的对功能进行定制化扩展。
ShardingSphere-JDBC 采用去中心化架构,适用于 Java 开发的高性能轻量级 OLTP 应用。ShardingSphere-Proxy 提供静态入口和全语言支持,适用于 OLAP 应用和分片数据库的管理和运行情况。一端面向研发侧,一端面向运维侧,JDBC 为研发提升了效率,Proxy 为运维带来了质的变化,使用 DistSQL 即可像操作数据库一样操作 Apache ShardingSphere,赋予运维侧人员更多的研发能力,进而为企业提供更加全面的数据管控能力。
通过 ShardingSphere-JDBC 和 ShardingSphere-Proxy 的混合使用,以及同一个注册中心统一的分片策略,ShardingSphere 可以构建一个适用于各种场景的应用系统,形成类似数据库网关的模式,用户可以通过 Proxy 管理底层所有数据库集群,并且能够通过 SQL 观察到分布式集群的状态,从而可以让运维人员、架构师将系统架构调整为最适合业务需要的架构,进而更自由地开展业务。
ShardingSphere 联邦查询
SQL Federation 联邦查询是针对分布在多个不同数据库上的数据提供跨库查询能力的一种查询方式,用户无需将这些数据存储到同一个数据库中即可执行查询。SQL Federation 引擎包含了 SQL Parser、SQL Binder、SQL Optimizer、Data Fetcher 及 Operator Calculator 等流程,用于处理跨多个数据库实例的关联查询及子查询,底层使用 Calcite 基于关系代数进行 RBO(Rule Based Optimizer) 和 CBO(Cost Based Optimizer) 优化,通过最优执行计划查询出结果。
随着现阶段数据仓库、数据湖等概念的流行,ShardingSphere SQL Federation 的应用需要与场景具体结合起来。
对于用户而言,如果需要联邦查询的数据库是关系型数据库的话,使用 ShardingSphere 就会很方便,因为数据湖部署起来比较复杂,ShardingSphere 通过对接数据库,可以对数据湖内和数据湖外的数据进行联邦计算,实现左外链接、右外链接、复杂的聚合查询等等。此外大数据处理是需要过程和时间的,如果数据体量非常大,数据湖肯定是更优的选择。但如果数据体量相对较小,且对数据处理的实时性要求较高时,ShardingSphere 则相对更高效,操作、实现起来也比较简单。
【联系我们】
如果您在业务中有应用 Apache ShardingSphere,想要快速了解、接入 Apache ShardingSphere 5.0 新生态,希望借此机会在团队内部举办一场关于 Apache ShardingSphere 的技术分享,欢迎在公众号后台中留下您的姓名、公司、职位、电话等信息,或添加官方小助手:ss_assistant_1,备注“走进企业”,会有专人与您对接。
在沟通过后如果双方认为产品和场景均非常匹配,Apache ShardingSphere 社区的核心团队将会走进您的企业,与各条研发线的工程师们现场沟通,解答关于 Apache ShardingSphere 的任何疑问。