title: 从零玩转ShardingSphere分库分表 (概括)
date: 2022-05-25 17:58:25.61
updated: 2022-08-22 22:59:02.624
url: https://www.yby6.com/archives/shardingsphere1
categories:
- 从零玩转系列
- 分库分表
tags:
- 从零玩转系列
- 分库分表

从零玩转ShardingSphere分库分表 (概括)

前言

Apache ShardingSphere 产品定位为 Database Plus,旨在构建异构数据库上层的标准和生态。 它关注如何充分合理地利用数据库的计算和存储能力,而并非实现一个全新的数据库。ShardingSphere

站在数据库的上层视角,关注他们之间的协作多于数据库自身。

  • 连接:通过对数据库协议、SQL 方言以及数据库存储的灵活适配,快速的连接应用与多模式的异构数据库;
  • 增量:获取数据库的访问流量,并提供流量重定向(数据分片、读写分离、影子库)、流量变形(数据加密、数据脱敏)、 流量鉴权(安全、审计、权限)、流量治理(熔断、限流)以及流量分析(服务质量分析、可观察性)等透明化增量功能;
  • 可插拔:项目采用微内核 + 三层可插拔模型,使内核、功能组件以及生态对接完全能够灵活的方式进行插拔式扩展,开发者能够像使用积木一样定制属于自己的独特系统。
  • 架构图 ↓

分库分表中间件

  • Mycat

    • https://mycat.org.cn/
    • Mycat是一个要部署在服务器上的软件,类似于上面的Proxy
    • 使用Mycat需要有一定的运维能力
  • ShardingSphere(重点)

    • http://shardingsphere.apache.org/index_zh.html
    • 简介
      • Apache ShardingSphere 是一套开源的分布式数据库解决方案组成的生态圈
      • 由 JDBC、Proxy 和 Sidecar(规划中)这 3 款既能够独立部署,又支持混合部署配合使用的产品组成
      • 提供标准化的数据水平扩展、分布式事务和分布式治理等功能
      • ShardingSphere 定位为关系型数据库中间件,旨在充分合理地在分布式的场景下利用关系型数据库的计算和存储能力
    • Sharding-JDBC
      • Sharding-JDBC 定位为轻量级 Java 框架
      • 以 jar 包形式提供服务,无需额外部署和依赖
      • 核心功能 -数据分片
        • 读写分离
        • 结构图 ↓
        • 我们可以看到它的结构- JavaApplication是我们自己的程序引入 Sharding-JDBC 通过它来进行数据库交互-我们只需要定制策、算法即可
    • Sharding-Proxy
      • Sharding-Proxy 类似于mycat
      • 它定位为透明化的数据库代理端,提供封装了数据库二进制协议的服务端版本,用于完成对异构语言的支持。
      • 目前仅支持 MYSQL PstgreSQL
      • 结构图 ↓
    • Sharding-Sidecar
      • Sharding-Sidecar 目前正在规划中
      • 定位为 Kubernetes 的云原生数据库代理,以 Sidecar 的形式代理所有对数据库的访问。

核心概念 (重要)

  • 逻辑表

    • 水平拆分的数据库(表)的相同逻辑和数据结构表的总称。
    • 拆分之后的表,t_order_0,t_order_1 逻辑表名为t_order
  • 真实表

    • 在分片的数据库中真实存在的物理表
    • t_order_0具体的表
  • 讲解图

  • 数据节点

    • 数据分片的最小单元。由数据源名称和数据表组成
    • 自定义数据源配置名称是自己定义的哦
    • spring.shardingsphere.datasource.names=db0
    • 示例: ds0.t_order (数据源名称.表名)
  • 绑定表

    • 指分片规则一致的主表和子表
  • 广播表

    • 指所有的分片数据源中都存在的表,表结构和表中的数据在每个数据库中均完全一致。
    • 适用于数据量不大且需要与海量数据的表进行关联查询的场景,例如:字典表。
  • 分片键

    • 用于分片的数据库字段,是将数据库(表)水平拆分的关键字段。
  • 分片算法

    • 通过分片算法将数据分片,支持通过 =、>=、<=、>、<、BETWEEN 和 IN 分片
  • 分片策略

    • 真正可用于分片操作的是分片键 + 分片算法,也就是分片策略
  • 分片键与分片算法原理图

下一篇

从零玩转ShardingSphere分库分表 (建立JDBC环境)

从零玩转ShardingSphere分库分表 (概括)-shardingsphere1的更多相关文章

  1. 分库分表利器之Sharding Sphere(深度好文,看过的人都说好)

    Sharding-Sphere Sharding-JDBC 最早是当当网内部使用的一款分库分表框架,到2017年的时候才开始对外开源,这几年在大量社区贡献者的不断迭代下,功能也逐渐完善,现已更名为 S ...

  2. 分库分表利器——sharding-sphere

    背景 得不到的东西让你彻夜难眠,没有尝试过的技术让我跃跃欲试. 本着杀鸡焉用牛刀的准则,我们倡导够用就行,不跟风,不盲从. 所以,结果就是我们一直没有真正使用分库分表.曾经好几次,感觉没有分库分表(起 ...

  3. 【ShardingSphere技术专题】「ShardingJDBC」SpringBoot之整合ShardingJDBC实现分库分表(JavaConfig方式)

    前提介绍 ShardingSphere介绍 ShardingSphere是一套开源的分布式数据库中间件解决方案组成的生态圈,它由Sharding-JDBC.Sharding-Proxy和Shardin ...

  4. mysql 分库分表 ~ ShardingSphere生态圈

    一  简介   Apache ShardingSphere是一款开源的分布式数据库中间件组成的生态圈二 成员包含   Sharding-JDBC是一款轻量级的Java框架,在JDBC层提供上述核心功能 ...

  5. 分库分表(2) --- ShardingSphere(理论)

    ShardingSphere---理论 ShardingSphere在中小企业需要分库分表的时候用的会比较多,因为它维护成本低,不需要额外增派人手;而且目前社区也还一直在开发和维护,还算是比较活跃. ...

  6. 分库分表(3) ---SpringBoot + ShardingSphere 实现读写分离

    分库分表(3)---ShardingSphere实现读写分离 有关ShardingSphere概念前面写了两篇博客: 1.分库分表(1) --- 理论 2. 分库分表(2) --- ShardingS ...

  7. 分库分表(4) ---SpringBoot + ShardingSphere 实现分表

    分库分表(4)--- ShardingSphere实现分表 有关分库分表前面写了三篇博客: 1.分库分表(1) --- 理论 2.分库分表(2) --- ShardingSphere(理论) 3.分库 ...

  8. 分库分表(5) ---SpringBoot + ShardingSphere 实现分库分表

    分库分表(5)--- ShardingSphere实现分库分表 有关分库分表前面写了四篇博客: 1.分库分表(1) --- 理论 2.分库分表(2) --- ShardingSphere(理论) 3. ...

  9. 分库分表(6)--- SpringBoot+ShardingSphere实现分表+ 读写分离

    分库分表(6)--- ShardingSphere实现分表+ 读写分离 有关分库分表前面写了五篇博客: 1.分库分表(1) --- 理论 2.分库分表(2) --- ShardingSphere(理论 ...

  10. Springboot2.x + ShardingSphere 实现分库分表

    之前一篇文章中我们讲了基于Mysql8的读写分离(文末有链接),这次来说说分库分表的实现过程. 概念解析 垂直分片 按照业务拆分的方式称为垂直分片,又称为纵向拆分,它的核心理念是专库专用. 在拆分之前 ...

随机推荐

  1. 命令行获取chrome版本的多个方法

    命令行获取chrome版本的多个方法 基于win10 测试 背景 在selenium的驱动安装中用webdriver_manager自动处理chromedriver是比较好的做法 webdriver_ ...

  2. netstat命令输出详解

    netstat命令输出详解 1. 列出所有的TCP和UDP端口 2. 命令输出详解 Proto:协议名(tcp协议还是udp协议) recv-Q:网络接收队列,send-Q:网路发送队列 a. rec ...

  3. 记一次Redis Cluster Pipeline导致的死锁问题

    作者:vivo 互联网服务器团队- Li Gang 本文介绍了一次排查Dubbo线程池耗尽问题的过程.通过查看Dubbo线程状态.分析Jedis连接池获取连接的源码.排查死锁条件等方面,最终确认是因为 ...

  4. 如何用CRM销售管理系统实现销售目标?

    每个企业的销售业务都要制定目标计划,在制定销售计划时要考虑两个问题,一个是计划是否能够严格执行,另一个是计划是否可控,即明确销售目标后,合理分配时间,运用销售基本工作方法严格把控销售进度.那我们该如何 ...

  5. dig 简明教程

    哈喽大家好,我是咸鱼 不知道大家在日常学习或者工作当中用 dig 命令多不多 dig 是 Domain Information Groper 的缩写,对于网络管理员和在域名系统(DNS)领域工作的小伙 ...

  6. `.NET Web`新人入门必学项目`EarthChat`

    .NET Web新人入门必学项目EarthChat EarthChat是一个基于.NET 7的实战项目,EarthChat提供了很多的最佳实践,EarthChat的目标也是成为一个很多人都喜欢的大型聊 ...

  7. 关于RS485通讯TVS器件选择的经验

    先说经验结论 如果你的RS485用于频繁热拔插, 比如作为手持终端使用, 且手持器与目标板非隔离, 那么使用6.8CA可能是更好的选择. 因为有热拔插会产生浪涌, 而且在非隔离的场合有些工业设备接地也 ...

  8. 广度优先搜索— —提高Ⅲ(BFS优化)

    双向广搜 所谓双向广搜,就是初始结点向目标结点和目标结点向初始结点同时扩展,直至在两个扩展方向上出现同一个结点,搜索结束.它适用的问题是,扩展结点较多,而目标结点又处在深沉,如果采用单纯的广搜解题,搜 ...

  9. Docker-Compose部署Gitlab以及Gitlab配置SMTP邮件服务

    使用Docker-Compose部署Gitlab 拉取镜像 地址: https://hub.docker.com/r/gitlab/gitlab-ce/tags 拉取到镜像后,使用docker tag ...

  10. jmeter-逻辑处理器while

    测试工具:jmeter 业务逻辑:A接口上传文件,B接口查询文件上传状态,如果状态不为4,需要再次查询(上传文件后,需要有短暂时间的识别,压测时并发大导致识别时间不可控)当为4时,跳出循环, 思路:增 ...