ShardingSphere 开源项目发展史
Apache ShardingSphere,作为全球知名的基础软件开源项目,最早可追溯到 2015 年。其最初版本是由国内知名互联网公司内部项目孵化而成,其目的是为了解决数据库水平拆分而产生的分布式问题。在 2016 年正式开源,逐渐得到了更多公司的关注和贡献,项目规模和影响力逐步扩大。在 2018 年, Apache 基金会孵化器;并于 2020 年成为顶级项目成功孵化。到目前,Apache ShardingSphere 在全球拥有广泛影响力,并保持高速增长中。其拥有了良好的生态圈,大量来自社区贡献者和用户共同促进项目的持续活跃发展。使用领域已不再局限于数据分片,而是广泛扩展到数据安全、数据治理、流量控制等多领域,成为企业构建数据基础设施的利器。
SphereEx 商业版本 DBPlusEngine 发展史
作为一款现象级开源产品,Apache ShardingSphere 在开源领域取得了巨大的成功,但受限于开源模式局限,企业级用户在使用上仍存在诸多难点和痛点。为了更好地促进软件技术自身的发展与创建,同时为企业带来更大的商业价值。Apache ShardingSphere 核心团队于 2021 年成立了开源商业化公司—— SphereEx,希望通过开源商业化这一模式一方面反哺开源社区,持续推动开源项目的稳定、高速发展;另一方面通过基于开源构建的商业产品(命名为 SphereEx-DBPlusEngine ),服务广大数字化转型中的企业,为企业带来更大商业价值。通过两年多的商业发展,SphereEx 公司已完成基于开源版本的增强企业版并获得行业多领域 KOL 认可,实现初步的商业化落地。目前公司产品已覆盖分布式数据库、数据安全、信创替换改造等多场景,用户包括金融、消费、支付、物流、媒体、游戏、政企等多行业用户,帮助广大用户解决了底层数据基础设施的诸多痛点。
商业产品亮点技术能力
- 数据库兼容性
在开源版本中,已支持常见的开源数据库,包括 MySQL、PostgreSQL 及 openGauss 及部分海外商业数据库。在 SphereEx-DBPlusEngine 中,针对用户自主创新类需求,更多增加了对国产商业数据库及云数据库的支持。用户可基于这些商业数据库产品,实现如分布式、数据安全等能力。此外,针对分析类场景,SphereEx-DBPlusEngine 还支持包括主流分析型数据库和大数据平台(如 Hive 、Presto )的支持。 - 数据分片
开源产品中已内置了包括范围、哈希等常规分片算法。在 SphereEx-DBPlusEngine 中,重点在增强分片的易用性,减低分片难度及更为贴近业务侧。一方面在 SphereEx-DBPlusEngine 中提供如自动分片功能,即用户无需指定分片策略,系统自动完成分片,这样可大大降低分片设计维护量;另一方面通过一键分片功能,解决从非分片到分片及不同分片方式间的迁移难点,实现业务在线无感切换。此外,针对来自业务方的特殊分片需求,商业版本也提供定制增强能力,可实现更为贴近业务的“最优分片策略”。 - 分布式事务
当面临海量数据规模下,数据分片是必要的选择,那么分布式事务就不可避免。开源产品,仅实现对基本分布式事务的支持能力,但要想在正式生产环境中使用还需应用侧做不少工作,如恢复日志持久化,恢复自动化等。在 SphereEx 的 SphereEx-DBPlusEngine 中,针对分布式事务部分做了特有增强,达到生产可用级别,解决了包括事务异常回滚、强一致性事务保证等痛点,解决用户在线实用问题。 - 数据加密
开源产品仅支持基本的加密能力,提供了 MD5 、AES 等基本加密算法。在 SphereEx-DBPlusEngine 中,突出在商业加密算法、密钥管理、数据加密切换、更强的密态计算等环节能力。在加密算法方面,除了支持基本算法外,还支持了包括国密算法在内的更多加密算法。在密钥管理方面,可实现对接多种密钥管理方式,满足在私有化、云及有软硬结合方面的诉求。针对用户最为关心的加密改造方面,除了实现应用免改造加密外,可提供数据的一键洗数能力,实现在线平滑过渡。为解决用户针对风险的担忧,还提供如反洗数、同步双写、明文消费等能力。针对传统企业用户依赖的存储过程,还支持了存储过程的自动改写能力,实现库内计算的自动加解密。此外,SphereEx-DBPlusEngine 还可以与敏感数据识别工具联动,提供一站式的识别、改造、迁移。 - 读写分离
开源产品中支持有限读写分离能力,在 SphereEx-DBPlusEngine 中,不仅支持根据 SQL 语义的读写分离能力及判断是否处于事务中,处于事务中的语句会路由到主库执行。还增强了诸如延时探测和高可用感知能力。针对普遍存在的主从延迟问题,可设置阈值,根据延迟情况选择路由到主库还是从库。通过这样的处理方式,可更好地满足实时性要求较高的查询场景。此外,配合高可用感知能力,如果数据库发生异常,可灵活切换到其他可用数据库,应用完全无感知。 - 数据库网关
SphereEx-DBPlusEngine 可提供基于数据库之上的多种网关能力,包括数据库防火墙、数据双写、数据归档能力。数据库防火墙,通过用户定义的规则,可实现对语句的精准控制,避免低效、高危语句的执行。如可实现在数据分片情况下,查询语句必须带有分片键等策略,保证执行效率。数据双写,则是提供针对异构数据源的支持,可实现不同数据库的强一致同步写入,保证数据的冗余保存,提高数据可用性。数据归档,则是提供冷热数据分离能力,可按照时间策略将冷的数据归档在独立存储中,以实现更好的经济性;同时还提供全局访问能力,即在数据分层情况下仍然可提供完整数据的查询能力。 - 混合计算
SphereEx-DBPlusEngine 实现基于异构数据库之上的混合计算能力,可提供包括 HTAP、联邦查询、缓存一体化、冷热数据归档与计算能力。在 HTAP 方面,可实现针对 TP 与 AP 数据库的混合计算,可根据负载、数据规模、成本等选择不同的执行引擎,并实现语句自动改写。在联邦查询方面,可实现跨多种不同数据库引擎的计算能力,在算子尽量下推的前提下也提供了上层算子汇聚计算能力。在缓存一体化方面,实现缓存与数据库的统一访问接口,实现从 SQL 接口访问缓存的能力,并完成数据从数据库到缓存的同步。在冷热数据归档与计算方面,可实现按归档策略自动数据分层,不同层数据保存在不同存储引擎中,并通过 SphereEx-DBPlusEngine 实现统一查询。 - 权限角色
开源产品提供了基于用户的授权能力。在 SphereEx-DBPlusEngine 中,提供与数据库“等效”的授权能力,包括基于用户角色的授权、对库表列细粒度权限控制,为用户打造跨数据库平台之上的数据权限管理提供保障。用户可完全基于此能力打造公司级数据统一权限管控。此外,为进一步降低用户使用成本,SphereEx-DBPlusEngine 还提供对接第三方认证授权系统的能力,可快速接入如 LDAP、SSO 等系统。 - 弹性伸缩
在分布架构下,资源伸缩能力很关键。因开源产品提供的是一组无状态的计算节点,可实现最基本的计算节点扩容。在 SphereEx-DBPlusEngine 中,其采用标准的存算分离架构,支持对计算节点、存储节点的扩缩容能力,可根据用户需要扩展或收缩节点资源。其中对应存储节点上的数据,可同步采用数据重分布策略,完成资源释放。在重分布过程中,从全量数据迁移、增量数据迁移、数据质量比对、元数据切换的全过程全部自动化。如果是采用 Kubernetes 环境,则可更充分利用这一资源供给方式,实现包括负载与语句控制,实现资源的自动伸缩。 - 高可用
高可用能力,是能够将软件使用在关键业务系统的主要考察要求。之前的开源版本,基于无状态的计算节点,是部分实现计算节点的高可用。在 SphereEx-DBPlusEngine 中,更进一步完善了上述能力并有所补充。基于计算节点,提供了计算节点自愈能力;针对存储节点,则实现对接多种存储端的感知与自愈能力,实现在数据库异常时,通过高可用能力实现应用无感知切换,这也是与开源版本的区别之一。 - 元数据去中心化存储
在 Kubernetes 环境下,SphereEx-DBPlusEngine 提供去中心化存储的能力,用户不需要自行部署注册中心。通过商业版本的无状态 Mate 组件,可完全替代如 ZooKeeper、Etcd 等组件,避免了繁琐的运维工作。 - 监控诊断
监控诊断能力,是用户快速发现问题、解决问题的依据。开源产品中,通过与第三方工具集成,提供一定的链路跟踪能力。在 SphereEx-DBPlusEngine 中,则实现了监控、诊断的功能闭环,提供从多维度监控到全链路跟踪能力。包括从主机、应用、语句多种维度,从计算、存储、治理中心等多对象的完整监控及图形化展示能力。对更进一步的分析,则通过内置的链路分析能力来实现。 - 数据集成
数据集成,对使用者快速上手使用,快速融入到现有数据环境很重要。在 SphereEx-DBPlusEngine 中,则提供多种集成方式。一方面可通过数据的导入导出,实现数据的离线流转;一方面通过如 insert ... select 的语句能力,实现内部数据集成。此外,通过全局 CDC (change data capture) 能力,实现更为广阔的、跨系统的数据集成能力,可与包括 Kafka 等平台集成,实现数据集成流转。 控制台 & DistSQL
软件的易用性非常重要。在开源版本中,用户主要是通过配置文件和 DistSQL (这是一种类 SQL 的扩展)的方式进行管理,存在一定的使用门槛。在 SphereEx-DBPlusEngine 中,提供了图形化管理控制台,可在其上实现从安装部署、日常管理、备份恢复、监控诊断等诸多能力,进一步降低用户使用门槛。此外,针对 Kubernetes 环境,还提供了操作资源的 operator,方便用户快速构建。SphereEx-DBPlusEngine 主打场景
作为一款开源商业化的企业版软件,SphereEx-DBPlusEngine 在设计之初,就将企业级功能、安全性、稳定性、高性能、可维护性等方面作为产品发展重点。通过两年多的研发并在多客户场景实践打磨,SphereEx-DBPlusEngine 已成熟稳定并服务于客户的核心场景。较之前的开源项目,SphereEx-DBPlusEngine 具备诸多鲜明的特点,适用于多种业务场景。
- “低成本、一键化、高弹性”的分布式数据库
随着数字化转型深化,企业内数据库所承载的访问压力和容量压力将会越来越大,分布式数据库成为用户的首选。但数据库作为企业基础平台之一,替换现有平台需要较大的成本投入并需承担一定风险。如何平滑的、低成本、低风险的完成分布式改造,成为企业关注焦点。SphereEx-DBPlusEngine,定位于在数据库之上提供分布式计算能力,可基于用户已有的如 Oracle、MySQL、PostgreSQL 等数据库环境,快速构建分布式能力。其功能上除了开源版本所提供的丰富分片能力外,着重提供平滑的迁移和弹性伸缩能力。用户在非分片情况下,通过一键完成数据的在线分片,其内部包括存储节点的扩容、存量数据迁移、增量数据同步、数据对比及流量切换等阶段阶段。针对已完成数据分片情况,可实现弹性的扩缩容,包括针对计算资源、存储资源的在线重定义,实现灵活的资源配置,进而达到成本节约。 - “全流程、一站式、免改造”的数据安全合规
随着国家一系列政策的出台,越来越多的企业开始关注数据安全。作为数据的主要载体,数据库成为数据安全的管理重点。SphereEx-DBPlusEngine,基于数据库之上的构建理念,打造了覆盖全数据生命周期的安全产品。在开源所提供的基础安全能力外,SphereEx-DBPlusEngine 提供了更为全面、更为平滑的的安全解决方案,包括提供从敏感数据识别,到数据加密、脱敏,再到细粒度权限、数据防火墙等。特别是提供的数据加密功能,可实现在应用免改造、业务零停机情况下的安全改造。针对很多传统企业客户依赖 Oracle 存储过程完成业务处理,SphereEx-DBPlusEngine 还实现了自动化存储过程安全改造,可一键实现库内计算的加解密。 - “低风险、高增效、精准灵活”的数据库替换
针对数据库替换场景,用户普遍存在对数据一致性、业务可服务能力及研发的成本投入的担心。特别是针对很多关键业务,无法承受因替换过程所带来的风险性。SphereEx-DBPlusEngine 可从多方面降低上述风险及研发投入。其通过对数据库访问流量的截获,做到对数据流量的精准控制,实现替换过程中逐步上量过程。其可根据访问的读写类型、业务标志等做到控制,通过这样可保证切换过程的平滑性。针对数据不一致的担心,其实现对异构数据库的同步双写能力,保证数据在两边都落地后才返回应用正确,通过这一方式可保证数据强一致。如果出现单侧数据库问题,还可自动退化不影响整体业务访问。为进一步降低研发投入,SphereEx-DBPlusEngine 还提供的异构数据库语法的转化功能,实现简单业务逻辑无需更改,就可以直接上线,大幅降低了用户的开发成本投入。 - “智能化、跨平台、创新性”的数据库网关
在当前数据库碎片化的现状下,如何实现统一管理、访问成为很多企业所关注的。SphereEx-DBPlusEngine 打造了碎片化的异构数据库上层生态,重新构建了应用和数据库之间的交互标准,提供的能力可帮助企业实现“OneDB”能力。从基础的数据库访问的负载均衡、读写分离能力,可充分利用企业内现有数据库的算力资源。针对数据库主从架构可能出现的延迟问题,提供了主从延迟感知能力,在最大化利用从库能力基础上,保证数据访问的实时性、数据的鲜活性。针对用户更为精准的流量控制需求,还提供了流量标签化处理,可实现诸如影子库压测等场景需求。为了保证线上业务的稳定性,还通过策略配置的方式实现数据库防火墙能力,将低效的、高风险、高资源消耗类的语句,拒之门外保证系统平稳运行。SphereEx-DBPlusEngine 原生提供两种交互方式:代理端与驱动端,网关还实现了智能路由模式,可将高频、低成本、延时敏感的请求通过驱动端接入方式执行;反之则通过资源成为充足的代理端方式执行,而上述分配过程用户无需感知。 - “异构源、多引擎、分层次”的混合计算
企业内的数据计算往往比较复杂的,需要通过多种数据计算引擎来完成。但从使用者角度来看,如何调度、使用多种算力资源成为难点。SphereEx-DBPlusEngine 提供了基于底层算力之上的混合计算能力,可充分利用现有算力资源,并提供统一计算入口。如支持跨不同数据源的联邦查询能力,可实现数据同步下的统一计算;如支持跨在线交易与在线分析的混合计算模式,实现灵活调度,用户无感知;如充分利用缓存的高性能,实现关系数据库与缓存的一体化计算,在保证数据访问效率的同时,屏蔽之前的数据同步等诸多技术细节,实现统一访问接口;再如针对企业内数据冷热不均的现状,支持自动的数据冷热分层和自动汇聚计算能力,大幅降低用户使用成本。
企业用户如何选择
开源软件的商业化版本,充分地利用的开源的成熟生态,不仅利于企业快速熟悉掌握软件、配合自有人才,也为企业降低技术风险、构建自有技术能力提供一种新的选择。作为用户,是选择开源产品还是商业版本,成为一个问题。这里可从如下角度进行衡量:
- 功能丰富和定制性:商业版本软件通常会提供更多的功能和定制性,以满足不同用户的需求。而开源版本则更注重功能的通用性和标准化,可能没有企业版软件那么多的定制性。
- 支持和可维护性:商业版本软件通常有专业的技术支持和维护团队,可以提供及时的技术支持和维护服务,而开源版本则通常由开源社区或组织提供支持和维护,可能没有企业版软件那么及时和专业的支持。
- 安全性:商业版本软件通常会提供更高的安全性,包括数据加密、访问控制、审计等,以保护用户的数据安全。而开源版本则更注重源代码的公开透明和社区维护,安全性可能不如企业版软件。
- 业务重要性与连续性:商业版本通常是面对企业重要业务,强调可持续服务能力。其通过专业的技术支持和维护达到上述要求。而开源版本则更注重个人用户和小型组织的业务探索,其对业务连续性要求相对不高,且重要性也较低。
总结起来,软件开源版本有其鲜明的优缺点,而商业版本的能力则更为全面与安全,用户可以根据自己的需求和预算选择适合自己的软件版本。
**粗体** _斜体_ [链接](http://example.com) `代码` - 列表 > 引用
。你还可以使用@
来通知其他用户。