ShardingSphere官方文档感悟

news2024/9/28 23:35:34

ShardingSphere官方文档感悟

  • 什么是ShardingSphere
    • ShardingSphere-JDBC
    • ShardingSphere-Proxy
    • 功能
    • 产品优势
  • 设计哲学
    • 连接
    • 增强
    • 可插拔
      • L1内核层
      • L2功能层
      • L3生态层
  • 部署形态
    • ShardingSphere-JDBC独立部署
    • ShardingSphere-Proxy独立部署
    • 混合部署架构

官网地址: https://shardingsphere.apache.org/document/5.2.1/cn/overview/

什么是ShardingSphere

Apache ShardingSphere 是一款分布式的数据生态系统,可以将任意数据库转换为分布式数据库。并通过数据分片、弹性伸缩、加密等能力对原有数据库增强。

Apache ShardingSphere设计哲学为Database Plus,构建异构数据库上层的标准和生态。关注充分合理的利用数据库的计算和存储能力,而并非实现一个全新的数据库。它站在数据库的上层视角。关注他们之间的协作多于数据库本身。

ShardingSphere-JDBC

定位轻量级java框架,在java的JDBC层提供额外的服务。

ShardingSphere-Proxy

透明化的数据库代理端,通过实现数据库二进制协议,对异构语言提供支持。

功能

特性定义
数据分片数据分片,是应对海量数据存储与计算的有效手段。shardingSphere基于底层数据库提供分布式数据库解决方案,可以水平扩展计算和存储
分布式事务基于XA和BASE的混合事物引擎,保障数据库完整、安全的关键技术
读写分离应对高压力业务访问的手段。基于对SQL语义理解及对底层数据库拓扑感知能力。提供灵活的读写流量拆分和读流量负载均衡
高可用对数据存储计算平台的基本要求,提供基于原生或kubernetes环境下数据库集群的分布式高可用能力
数据迁移提供跨数据源的数据迁移能力,实现跨源的数据关联与聚合
联邦查询联邦查询,是面对复杂数据环境下利用数据的有效手段。提供数据源复杂查询分析能力,实现跨源的数据关联和聚合
数据加密数据加密,是保证数据安全的基本手段。ShardingSphere提供完整、透明、安全、低成本的数据加密解决方案
影子库在全链路压测场景下,ShardingSphere支持不同工作负载下的数据隔离,避免测试数据污染生产环境

产品优势

  • 极致性能
    驱动程序端历经常年打磨,效率接近原生JDBC,性能极致。
  • 生态兼容
    代理端支持任何通过MySQL/PostgreSQL协议的应用访问,驱动程序端可对接任意实现JDBC规范的数据库。
  • 业务零侵入
    面对数据库替换场景,ShardingSphere可满足业务无需改造,实现平滑业务迁移
  • 运维低成本
    在保留技术栈不变的前提下,对DBA学习、管理成本低
  • 安全稳定
    基于成熟数据库底座之上提供增量能力,兼顾安全性和稳定性。
  • 弹性扩展
    具备计算、存储平滑在线扩展能力,可满足业务多变的需求
  • 开放生态
    通过多层次(内核、功能、生态)插件化能力,为用户提供可定制满足自身特殊需求的独有系统。

设计哲学

ShardingSphere采用Database Plus设计哲学,该理念致力于构建数据库上层的标准和生态,在生态中补充数据库所缺失的能力。
在这里插入图片描述

连接

打造数据库上层标准
通过对数据库协议、SQL方言以及数据库存储的灵活适配,快速构建多模异构数据库上层的标准,同时通过内置DistSQL为应用提供标准化的连接方式。

增强

数据库计算增强引擎
在原生数据库基础能力之上,提供分布式及流量增强方面的能力。前者可突破底层数据库在计算与存储上的瓶颈,后者通过对流量的变形、重定向、治理、鉴权及分析能力提供更为丰富的数据应用增强能力。

可插拔

构建数据库功能生态
在这里插入图片描述

L1内核层

是数据库基本能力抽象,其所有组件均必须存在,但具体实现方式可通过可插拔的方式替换。主要包括查询优化器、分布式事务引擎、分布式执行引擎、权限引擎和调度引擎等。

L2功能层

用于提供增量能力,其所有组件均是可选的,可以包含零至多个组件。组件之间完全隔离,互无感知,多组件可通过叠加的方式相互配合使用。主要包括数据分片、读写分离、数据库高可用、数据加密、影子库等。用户自定义功能可完全面向Apache ShardingSphere定义的接口进行定制化扩展,而无需改动内核代码。

L3生态层

用于对接和融入现有数据库生态,包括数据库协议、SQL解析器和存储适配器,分别对应于Apache ShardingSphere以数据库协议提供服务的方式、SQL方言操作数据的方式以及对接存储节点的数据库类型。

部署形态

ShardingSphere-JDBC和Sharding-Proxy这2款既能够独立部署,又支持混合部署配合使用的产品组成。

ShardingSphere-JDBC独立部署

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

  • 适用于任何基于JDBC的ORM框架,如:JPA,Hibernate,Mybatis,SpringJDBC Template或直接使用JDBC。
  • 支持任何第三方的数据库连接池,如:DBCP,C3P0,BoneCP,HIkariCP等;
  • 支持任意实现JDBC规范的数据库,目前支持M有SQL,PostgreSQL,Oracle,SQL Server以及任何可使用JDBC访问的数据库。
    在这里插入图片描述

ShardingSphere-Proxy独立部署

定位为透明化的数据库代理端,通过实现数据库二进制协议,对异构语言提供支持。目前提供MySQL和PostgreSQL协议,透明化数据库操作,对DBA更加友好

  • 向应用程序完全透明,可直接当作Mysql/PostgreSQL使用。
  • 兼容MariaDB等基于Mysql协议的数据库,以及openGauss等基于PostgreSQL协议的数据库。
  • 适用于任何兼容Mysql/PostgreSQL协议的客户端,如:MySQL CommandClient,Mysql Workbench,Navicat等。
  • 在这里插入图片描述
    || ShardingSphere-JDBC| ShardingSphere-Proxy |
    |–|–|–|
    | 数据可 | 任意 |
    | 数据可 | 任意 |

|特性| 定义 |

ShardingSphere-JDBCShardingSphere-Proxy
数据库任意Mysql?PostgreSQL
连接消耗数
异构语言仅java任意
性能损耗低损耗略高
无中心化
静态入口

混合部署架构

ShardingSphere-JDBC 采用无中心化架构,与应用程序共享资源,适用于Java高性能的轻量级OLTP应用;ShardingSphere-Proxy提供静态入口以及异构语言的支持,独立于应用程序部署,使用于OLAP引用以及对分片数据库进行管理和运维的场景。

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

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

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

相关文章

HTTP的前世今生

承接上文HTTP请求的详细过程http协议版本历史http造就了万维网,http成就了互联网第三次信息技术革命并且影响着即将到来的第四次人工智能技术革命。1989年第一个http协议,http0.9发布,发明了万维网,创建了世界第一个网页浏览器&am…

软件测试面试必杀篇:【2023软件测试面试八股文宝典】

800道软件测试面试真题,高清打印版打包带走,横扫软件测试面试高频问题,涵盖测试理论、Linux、MySQL、Web测试、接口测试、App测试、Python、Selenium、性能测试、LordRunner、计算机网络、数据结构与算法、逻辑思维、人力资源等模块面试题&am…

Jinja2----------过滤器的使用、控制语句

目录 1.过滤器的使用 1.过滤器和测试器 2.过滤器 templates/filter.html app.py 效果 3.自定义过滤器 app.py templates/filter.html 效果 2.控制语句 1.if app.py templates/control.html 2.for app.py templates/control.htm 1.过滤器的使用 1.过滤器和测…

在linux中配置环境变量

1. 环境变量的作用 环境变量是操作系统在运行的时候,记录的一些关键性信息,用于辅助系统的运行。 在linux中执行 evn 命令即可查看当前系统中记录的环境变量。 环境变量是一种KeyValue结构 2. 符号$ 在linux系统中,$,用于取“…

【C++】STL——list的模拟实现

list的模拟实现 文章目录list的模拟实现一、list三个基本类的模拟实现总览二、节点类接口实现模拟实现构造函数三、迭代器类接口实现1.正向迭代器默认成员函数构造函数六种运算符重载 */->//--/!/2.反向迭代器四、list类接口实现1.默认成员函数1.1.构造函数1.2.析构函数1.3.…

Hive3.1.3安装部署_最小化部署_元数据MySQL部署_Hiveserver2部署_metastore部署---大数据之Hive工作笔记0012

hbase 实时分析 hive 离线分析 这里是新版本的hive3.1.3的安装 关于hive的原理之前的博客已经详细说了 可以看到上面是hive运行的原理图 词法分析 语法分析

P6软件如何设置权重体系

卷首语 同时,由于项目包含不同专业、不同类型的活动,需通过建立科学的测量体系以将底层活动的进度逐层汇总从而获得项目总体进度数据。 权重体系的确定 进度检测权重体系的建立过程,即是确定进度检测层级中的每项元素对其上一级元素进度的…

Github每日精选(第102期): PyGWalker将panda数据帧转换为Tableau风格的用户界面,用于可视化分析

PyGWalker可以简化Jupyter笔记本的数据分析和数据可视化工作流程,方法是将panda数据帧转换为Tableau风格的用户界面进行可视化探索。 PyGWalker(发音像“Pig Walker”,只是为了好玩)被命名为“Graphic Walker的Python绑定”的缩写…

ChIP-seq 分析:Peak 注释与可视化(9)

1. 基因注释 到目前为止,我们一直在处理对应于转录因子结合的 ChIPseq 峰。顾名思义,转录因子可以影响其靶基因的表达。 转录因子的目标很难单独从 ChIPseq 数据中确定,因此我们通常会通过一组简单的规则来注释基因的峰: 如果峰与…

二月安全月报 | 45亿条快递数据疑泄露,Twitter史上最大规模宕机

为了让大家更全面的了解网络安全的风险,顶象针对每月值得关注的安全技术和事件进行盘点总结。 国内安全热点 👉业务安全 男子注册上万账号薅羊毛获利13万 近日,上海市,由闵行区人民检察院提起公诉的刘某某诈骗一案开庭审理&…

Stream流和不可变集合

一、不可变集合 什么是不可变集合? 不可变集合,就是不可被修改的集合。 集合的数据项在创建的时候提供,并且在整个生命周期中都不可改变。否则报错。 为什么要创建不可变集合? 如果某个数据不能被修改,把它防御性地拷…

Apache Airflow Hive Provider 任意Hive命令执行漏洞

漏洞描述 Apache Airflow 是一个以编程方式管理 workflow 的平台,Airflow Hive Provider 是一个使用 SQL 进行读取、写入和管理分布式存储中的大型数据集的工具包,_prepare_cli_cmd 方法用于创建 Hive 连接命令列表。 由于 Airflow Hive Provider 5.1.…

论文阅读:MPViT : Multi-Path Vision Transformer for Dense Prediction

中文标题:基于多路视觉Transformer的密集预测 提出问题 创新点 提出了一种具有多路径结构的多尺度嵌入方法,以同时表示密集预测任务的精细和粗糙特征。全局到局部的特征交互(GLI),以同时利用卷积的局部连通性和转换器…

汽车刹车传感

一、方案概述:刹车传感器,作用于刹车系统的传感器类型,帮助驾驶人员判断刹车片的磨损情况,便于及时检修维护,保证制度系正常稳定工作。刹车片报警基本有两种,第一种是比较简单的机械报警,就是当…

Android Framework-Android进程/线程和程序内存优化

Android进程和线程 进程(Process)是程序的一个运行实例,以区别于“程序”这一静态的概念;而线程(Thread)则是CPU调度的基本单位。 Android中的程序和进程具体是什么概念呢? 一个应用程序的主入…

十一、Vben框架部分组件样式的重新封装

在使用vben框架的时候发现部分的样式不符合实际的需求,ant-design-vue的样式也不支持我们的需求,那怎么办呢,只能自己来修改,下面我就改大家说说我遇到的一些修改过的样式和组件。 一、inputNumber带前后标志 先看下目前支持的样…

命令查看Linux服务器内存、CPU、显卡、硬盘使用情况

命令查看Linux服务器内存、CPU、显卡、硬盘使用情况 查看内存使用情况 使用命令:free -m 大致结果类似下图: 内存占用情况 参数解释: Mem行(单位均为M): total:内存总数used:已…

4.4 like通配符关键字过滤查询数据

文章目录1.概述2.LIKE关键字3.百分号(%)通配符3.1 单个百分号(%)通配符3.2 多个百分号(%)通配符3.3 在值的中间使用百分号(%)通配符3.4 注意事项4.下划线(_)通…

centos7 配置samba

samba概述: Windows与Linux之间通信的桥梁,Samba是一个非常强大的文件服务器。Samba端口:udp 137 udp138,tcp139 tcp445。Samba工作模式:C/S模式(客户端-服务器) samba应用环境 1、文件共享&…

python库--urllib

目录 一.urllib导入 二.urllib爬取网页 三.Headers属性 1.使用build_opener()修改报头 2.使用add_header()添加报头 四.超时设置 五.get和post请求 1.get请求 2.post请求 urllib库和request库作用差不多,但比较起来request库更加容易上手,但该了…