ShardingSphere分库分表(二):基础介绍

news2024/11/28 1:29:21

1、简介

Apache ShardingSphere 是一套开源的分布式数据库中间件解决方案组成的生态圈,它由 JDBC、Proxy 和 Sidecar(规划中)这 3 款相互独立,却又能够混合部署配合使用的产品组成。 它们均提供标准化的数据分片、分布式事务和数据库治理功能,可适用于如 Java 同构、异构语言、云原生等各种多样化的应用场景。

​ Apache ShardingSphere 定位为关系型数据库中间件,旨在充分合理地在分布式的场景下利用关系型数据库的计算和存储能力,而并非实现一个全新的关系型数据库。 它通过关注不变,进而抓住事物本质。关系型数据库当今依然占有巨大市场,是各个公司核心业务的基石,未来也难于撼动,我们目前阶段更加关注在原有基础上的增量,而非颠覆。

​ Apache ShardingSphere 5.x 版本开始致力于可插拔架构,项目的功能组件能够灵活的以可插拔的方式进行扩展。 目前,数据分片、读写分离、多数据副本、数据加密、影子库压测等功能,以及 MySQL、PostgreSQL、SQLServer、Oracle 等 SQL 与协议的支持,均通过插件的方式织入项目。 开发者能够像使用积木一样定制属于自己的独特系统。Apache ShardingSphere 目前已提供数十个 SPI 作为系统的扩展点,仍在不断增加中。

Sharding-JDBC 最早是当当网内部使用的一款分库分表框架,到2017年的时候才开始对外开源,这几年在大量社区贡献者的不断迭代下,功能也逐渐完善,现已更名为 ShardingSphere,2020年4⽉16⽇正式成为 Apache 软件基⾦会的顶级项⽬。

2、ShardingSphere-JDBC

程序代码封装

定位为轻量级 Java 框架,在 Java 的 JDBC 层提供的额外服务。 它使用客户端直连数据库,以 jar 包形式提供服务,无需额外部署和依赖,可理解为增强版的 JDBC 驱动,完全兼容 JDBC 和各种 ORM 框架。
在这里插入图片描述

  • 适用于任何基于JDBC的ORM框架,如:JPA, Hibernate, Mybatis, Spring JDBC Template或直接使用JDBC。
  • 支持任何第三方的数据库连接池,如:DBCP, C3P0, BoneCP, Druid, HikariCP等。
  • 支持任意实现JDBC规范的数据库。目前支持MySQL,Oracle,SQLServer,PostgreSQL以及任何遵循SQL92标准的数据库。

3、ShardingSphere-Proxy

中间件封装

定位为透明化的数据库代理端,提供封装了数据库二进制协议的服务端版本,用于完成对异构语言的支持。 目前提供 MySQL 和 PostgreSQL版本,它可以使用任何兼容 MySQL/PostgreSQL 协议的访问客户端(如:MySQL Command Client, MySQL Workbench, Navicat 等)操作数据,对 DBA 更加友好。

  • 向应用程序完全透明,可直接当做MySQL/PostgreSQL使用。
  • 适用于任何兼容MySQL/PostgreSQL协议的的客户端。
    在这里插入图片描述

4、sharding-sidecar

​ 定位为Kubernetes的云原生数据库代理,以Sidecar的形式代理所有对数据库的访问。 通过无中心、零侵入的方案提供与数据库交互的的啮合层,即Database Mesh,又可称数据网格。

​ Database Mesh的关注重点在于如何将分布式的数据访问应用与数据库有机串联起来,它更加关注的是交互,是将杂乱无章的应用与数据库之间的交互有效的梳理。使用Database Mesh,访问数据库的应用和数据库终将形成一个巨大的网格体系,应用和数据库只需在网格体系中对号入座即可,它们都是被啮合层所治理的对象。

在这里插入图片描述

5、三个组件的对比

在这里插入图片描述

6、混合架构

​ Sharding-JDBC采用无中心化架构,适用于Java开发的高性能的轻量级OLTP应用;Sharding-Proxy提供静态入口以及异构语言的支持,适用于OLAP应用以及对分片数据库进行管理和运维的场景。

​ ShardingSphere是多接入端共同组成的生态圈。 通过混合使用Sharding-JDBC和Sharding-Proxy,并采用同一注册中心统一配置分片策略,能够灵活的搭建适用于各种场景的应用系统,架构师可以更加自由的调整适合于当前业务的最佳系统架构。

在这里插入图片描述

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/1042136.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

文件包含漏洞原理刨析

文件包含漏洞 开发人员通常会把可重复使用的函数写到单个文件中,在使用某些函数时,直接调用此文件,而无需再次编写,这种调用文件的过程一般被称为包含。 为了使代码更加灵活,通常会将被包含的文件设置为变量&#xf…

flutter版本dart版本对应关系

Flutter 版本架构Ref发布日期Dart 版本3.13.5x6412fccda2023/9/213.1.23.13.5 file3.13.5arm6412fccda2023/9/213.1.23.13.5 file3.13.4x64367f9ea2023/9/143.1.23.13.4 file3.13.4arm64367f9ea2023/9/143.1.23.13.4 file3.13.3arm64b0daa732023/9/143.1.13.13.3 file3.13.3x64…

希望杯、希望数学系列竞赛辨析和希望数学超1G的真题和学习资源

中国的中小学数学竞赛种类非常多,但是说到全国性的数学竞赛,影响力最大的之一就是“希望杯”,在2017年国家喊停学科竞赛后,“希望杯”逐步停止了,但是鉴于希望杯的巨大影响力,以及背后的利益纠葛&#xff0…

【网络安全】一篇文章带你了解CTF那些事儿

文章目录 一、什么是CTF?二、CTF需要学习那些知识?新书推荐适合新手自学的网络安全基础技能“蓝宝书”:《CTF那些事儿》内容简介读者对象专家推荐目录 一、什么是CTF? CTF(Capture The Flag)中文一般译作夺…

BinDiff:二进制文件的开源比较工具

BinDiff 是一个二进制文件比较工具,可以快速查找反汇编代码中的差异和相似之处,它已开源。 使用 BinDiff,您可以识别并隔离供应商提供的补丁中漏洞的修复。 您还可以在同一二进制文件的多个版本的反汇编之间移植符号和注释,或使…

ORACLE 内存结构之系统全局区(SGA)

每个 Oracle 数据库实例都会在内存中分配一个很大的内存结构, 称为系统全局区(System Global Area), 这是一个大型的共享内存结构,每个Oracle进程都会访问它。 在Linux/Unix操作系统上,SGA是一个物理实体,使用操作系统命令能“看到它”。 它被操作系…

计算机类软件方向适合参加的比赛

前言 博主是一名计算机专业的大三学生,在校时候参加了很多比赛和训练营,现在给大家博主参加过的几个的比赛,希望能给大一大二的学生提供一点建议。 正文 最近也有比赛的,我会从时间线上来给大家推荐一些比赛,并且给…

NLP中token总结

Token 可以被理解为文本中的最小单位。在英文中,一个 token 可以是一个单词,也可以是一个标点符号。在中文中,通常以字或词作为 token。ChatGPT 将输入文本拆分成一个个 token,使模型能够对其进行处理和理解 在自然语言处理&#…

virtualbox安装linux虚拟机访问互联网(外网)的方法

virtualbox安装linux虚拟机访问互联网(外网)的方法 设置方法效果图 设置方法 效果图

【C++11】万能引用与完美转发

文章目录 1. 模板中的&&—万能引用2. 完美转发及其应用场景3. 用到的代码3.1 string.h3.2 list.h3.3 test.cpp 1. 模板中的&&—万能引用 首先我们来看这样一段代码: 这里有4个函数,我们很容易能看出来它们是一个重载的关系 然后我们给这…

Windows下libmodbus 支持upd库的编译与Qt里的调用

一. libmodbus 支持udp版库下载 https://github.com/systemmonkey42/libmodbus/tree/udp_support 二. MSYS2编译工具安装 (1)下载MSYS2并安装 下载地址:https://www.msys2.org/ 双击该exe,安装msys2 (2) 安装编译所需库 在软件安…

js惰性函数 ----如何让函数执行之后只执行函数某一部分

看下面这份ts代码 实现的效果也很简单,就是将一份文本,复制到剪切板上,未了兼容更多的浏览器(没错说的就是你>ie !),做了一个兼容性判断, 当浏览器支持navigator.clipboard这个api时,就直接调用这个api将文本复制到剪切板中, 如果不支持这个api的话,就执行else里面的代码,这…

微信小程序 request合法域名 中设置WebSocket的wss/ws报错 该域名协议头非法 问题解决

微信小程序并不支持直接用wss://格式去设置域名 但其实我们可以用缓兵之计 这里 我们直接改成 https的 然后 我们照常通过 wss://ws-api.turingapi.com/api/v2去链接 可以看到 他这里依旧连接成功了

Spring MVC 之 Restful 风格请求⽀持

Tips: REST⻛格请求是什么样的?SpringMVC对REST⻛格请求到底提供了怎样的⽀持 在 Web 系统中,前端通过 HTTP 请求给后端传递参数有四种方式,可以将参数放在请求路径、Query 参数、HTTP 协议头、HTTP 协议体中。而放在协议体中的…

五,修改.hdr插件

由于辐照度贴图是.hdr格式, glTexImage2D(GL_TEXTURE_2D, 0, GL_RGB16F, width, height, 0, GL_RGB, GL_FLOAT, data); osg的.hdr插件需要修改,否则格式不对。 即在ReaderWriterHDR::readImage()中修改, bool convertToRGB8 true;int pixel…

【iOS逆向与安全】DTRpcClient 抓包和代码分析记录

frida-trace -UF -m "-[DTRpcConfig isAMRPC]"onEnter(log, args, state) {log(-[DTRpcConfig isAMRPC] ~~~~~);var customObj new ObjC.Object(args[0]); // 自定义对象// 打印该对象所有属性var ivarList customObj.$ivars;for (key in ivarList) {log(key${key…

【SpringBoot】| SpringBoot集成Dubbo

目录 一:SpringBoot集成Dubbo 1. 创建公共项目 2. 创建提供者项目provider 3. 创建消费者consumer项目 4. 注册中心Zookeeper的安装 图书推荐:《Python 自动化办公应用大全》 一:SpringBoot集成Dubbo 阿里巴巴提供了 dubbo 集成 spring…

原来,这就是现货黄金投资最大的悲哀

在现货黄金投资之中,最大的悲哀是什么呢?首先要知道的是现货黄金投资中最大的悲哀并不是亏损,比如投资者会问我都亏损了,为什么不是最大的悲?哎,不就是因为想进行现货黄金投资,就是想获利的吗&a…

北斗导航系统为渔船保驾护航,助力海洋渔业发展

在无垠的海洋中,渔船扮演着举足轻重的角色,为人们带来美味的海鲜。然而,每一次渔船出海都充满了未知和危险,船只的安全成为了渔民和国家关注的焦点。幸运的是,北斗导航系统作为一项顶级技术正在为渔船保驾护航&#xf…

肖sir___环境的讲解详情__002

一、环境讲解 1、jdk 什么是JDK?JDK的作用? JDK是java语言的软件开发工具包,能解释java程序,编译java语言,没有jdk的话无法编译Java程序。 包含了各种类库和工具,机器不是直接识别语言的,会借助…