00-开篇导读:学习分库分表开源框架的正确方法

1 前言

互联网高速发展带来海量的信息化数据,也带来更多的技术挑战。各种智能终端设备(比如摄像头或车载设备等)以每天千万级的数据量上报业务数据,电商、社交等互联网行业更不必说。这样量级的数据处理,已经远不是传统关系型数据库的单库单表架构所能支撑的,如何高效存储和访问这些数据,成为一个非常现实且亟待解决的问题。

但由于生态系统的完善性,关系型数据库仍然是数据平台核心业务的基石,具有巨大市场。虽然业界存在一批 NoSQL 数据库,可以天然集成类似分布式分片这样的功能,然而并不具备诸如事务管理等核心功能。

面对系统中日益增长的海量数据,业界普遍做法是引入分库分表架构,我们可以整合纵向分库和横向分表的设计方法来应对海量数据的存储和访问。

2 让分库分表落地

要实现支持海量数据存储和访问的分库分表架构,抛开业务层面的规划和设计,开发人员在技术实现层面也面临着一系列的问题:

  • 数据分片:如何最小成本实现关系型数据库分库分表?
  • 代理机制:如何基于普通客户端工具对分库分表架构下的数据进行访问?
  • 分布式事务:如何确保分布在不同数据库和表中同一份业务数据的一致性?
  • 数据库治理:如何确保分散在各个环境下的数据源和配置信息等数据库资源的一致性?

分布式数据库中间件 ShardingSphere 作为一个分库分表的“利器”,可很好地解决这些痛点,且相比其他分库分表框架(如 Cobar、MyCat 等)有

3 优势

3.1 技术权威性

Apache 基金会历史上第一个分布式数据库中间件项目,代表着这一领域的最新技术方向;

3.2 解决方案完备性

集客户端分片、代理服务器,以及分布式数据库的核心功能于一身,提供了一套适用于互联网应用架构、云服务架构的,完整的开源分布式数据库中间件解决方案和生态圈。

3.3 开发友好性

提供了友好的集成方式,业务开发人员只需要引入一个 JAR 包就能在业务代码中嵌入数据分片、读写分离、分布式事务、数据库治理等一系列功能。

3.4 可插拔的系统扩展性

它的很多核心功能均通过插件的形式提供,供开发者排列组合来定制属于自己的独特系统。

这些优秀的特性,让 ShardingSphere 在分库分表中间件领域占据了领先地位,并被越来越多的知名企业(比如京东、当当、电信、中通快递、哔哩哔哩等)用来构建自己强大而健壮的数据平台。如果你苦于找不到一款成熟稳定的分库分表中间件,那么 ShardingSphere 恰能帮助你解决这个痛点。

4 为啥要学习这个专栏?

但凡涉及海量数据处理的企业,就一定用到分库分表。如何进行海量数据的分库分表设计和迁移,有效存储和访问海量业务数据,已经成为很多架构师和开发人员需要规划和落实的一大课题,也成为像拼多多、得物等很多优质公司高薪诚聘的岗位需求

但优质人才非常短缺:

  • 从事海量数据处理需要相应的应用场景和较高的技术门槛
  • 业界也缺乏成熟的框架来完成实际需求。掌握诸如 ShardingSphere 这样的主流分库分表和分布式数据库中间件框架的技术人员也成了各大公司争抢的对象

鉴于市面上还没有对 ShardingSphere 进行系统化介绍的内容,我希望能来弥补这个空白。此外,分库分表概念虽然比较简单,但在实际开发过程中要落地却也不容易,也需要一个系统的、由浅入深的学习过程。

5 大纲

基于 ShardingSphere 开源框架,介绍主流的分库分表解决方案和工程实践,是业界第一个全面介绍 ShardingSphere 核心功能和实现原理的体系化专栏,填补了这块空白。

  1. 第一部分:引入 ShardingSphere 这一部分将从如何正确理解分库分表架构讲起,引出 JDBC 规范与 ShardingSphere 的关系,并介绍如何基于 ShardingSphere 所提供的配置体系,给出在业务系统中使用 ShardingSphere 的多种具体方式。

  2. 第二部分:ShardingSphere 核心功能 ShardingSphere 包含很多功能特性,这部分会给出数据分片、读写分离、分布式事务、数据脱敏、编排治理等核心功能的具体使用方法和开发技巧。

三~六部分是重点,不同维度深入剖析 ShardingSphere 的内核架构,从源码级别给出分库分表的设计和实现机制,并且有助于你提升源码理解能力。

  1. 第三部分:ShardingSphere 源码解析之基础设施 围绕 ShardingSphere 的基础架构展开讨论,首先给你高效阅读 ShardingSphere 源码的方法,并介绍微内核架构和分布式主键的设计理念,以及在 ShardingSphere 的具体实现方法。

  2. 第四部分:ShardingSphere 源码解析之分片引擎 关注 ShardingSphere 最核心的分片引擎实现原理,从 SQL 的解析引擎开始,一路进行路由引擎、改写引擎、执行引擎、归并引擎等分片引擎中各个核心技术点的源码解析。

  3. 第五部分:ShardingSphere 源码解析之分布式事务 分布式事务是分布式数据库中间件的必备功能,ShardingSphere 内部也提供了对分布式事务的一种抽象。我将详细分析这种抽象过程,以及如何实现强一致性事务和柔性事务。

  4. 第六部分:ShardingSphere 源码解析之治理与集成 讨论如何基于改写引擎实现低侵入性数据脱敏方案、如何基于配置中心实现配置信息的动态化管理、如何基于注册中心实现数据库访问熔断机制、如何基于 Hook 机制以及 OpenTracing 协议实现数据访问链路跟踪等数据库治理方面的问题。

6 收获

分库分表的应用方式和实现原理

理解 ShardingSphere 的核心功能特性,来满足日常开发工作所需,同时基于源码给出这些功能的设计原理和实现机制。

学习优秀的开源框架,提高技术理解与应用能力

技术原理是具有相通性的。以 ZooKeeper 这个分布式协调框架为例,Sharding

Sphere 和 Dubbo 中都使用它来完成了注册中心的构建

在 ShardingSphere 中,我们可以基于 ZooKeeper 提供的动态监听机制来判断某个数据库实例是否可用、是否需要对某个数据库实例进行数据访问熔断等操作,也可以使用 ZooKeeper 的这一功能特性来实现分布式环境下的配置信息动态管理。

随着对 ShardingSphere 的深入学习,类似例子还有很多,包括基于 SPI 机制的微内核架构、基于雪花算法的分布式主键、基于 Apollo 的配置中心、基于 Nacos 的注册中心、基于 Seata 的柔性事务、基于 OpenTracing 规范的链路跟踪等。而这些技术体系在 Dubbo、Spring Cloud 等主流开发框架中也多有体现。因此这个专栏除了可以强化你对这些技术体系的系统化理解,还可以让你掌握这些技术体系的具体应用场景和实现方式,从而实现触类旁通。

学习从源码分析到日常开发的技巧

从源码解析到日常应用是本专栏的一个核心目标。基于 ShardingSphere 这款优秀的开源框架,可以提炼出一系列包括设计模式的应用(如工厂模式、策略模式、模板方法等)、微内核架构等架构模式、组件设计和类层结构划分的思想和实现策略、常见缓存的应用以及自定义缓存机制的实现、Spring 家族框架的集成和整合等开发技巧,这些开发技巧都能够直接应用到日常开发过程。

7 总结

技术的发展日新月异,随着数据中台等架构设计理念以及各种人工智能应用的普及,数据量级的不断提升是大部分软件系统面临的一大挑战,类似 ShardingSphere 的分库分表框架也将迈向一个新的发展时期,并在更多企业中得到应用。

但是成熟度高且发展活跃的分库分表框架并不多,企业的选择余地并不大。ShardingSphere 是这一领域目前为止唯一一个 Apache 顶级项目,也是提供核心功能最丰富的一个,代表着这一领域的一种技术发展方向。希望本专栏能够让你学好 ShardingSphere,并且掌握触类旁通的学习方法。

参考:

编程严选网

本文由博客一文多发平台 OpenWrite 发布!

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

如若内容造成侵权/违法违规/事实不符,请联系编程知识网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

Note: An Interesting Festival

An Interesting Festival 一个有趣的节日。 festival The Agricultural Feast takes place after the independence Day. 农业盛会在独立日后举行 takes place independence feast agricultural It is not a worldwide celebration. 它不是一个全球的庆典。 worldwide ce…

【模拟电路】门电路-逻辑门

一、逻辑门 二、与门 三、或门 四、非门 五、异或门 六、与非门 七、或非门 一、逻辑门 逻辑门是数字电子电路中的基本构建块,用于执行不同的逻辑运算。每种逻辑门都有特定的输入和输出关系,实现了基本的逻辑功能。以下是一些常见的逻辑门: …

基于深度卷积神经网络的垃圾分类识别系统

温馨提示:文末有 CSDN 平台官方提供的学长 QQ 名片 :) 1. 项目简介 本文详细介绍了一基于深度卷积神经网络的垃圾分类识别系统。采用TensorFlow和Keras框架,通过卷积神经网络(CNN)进行模型训练和预测。引入迁移学习中的VGG16模型…

用html,js和layui写一个简单的点击打怪小游戏

介绍&#xff1a; 一个简单的打怪小游戏&#xff0c;点击开始游戏后&#xff0c;出现攻击按钮&#xff0c;击败怪物后可以选择继续下一关和结束游戏。 继续下一个怪兽的血量会增加5点&#xff0c;攻击按钮会随机变色。 效果图&#xff1a; html代码&#xff1a; <!DOCTYPE…

小兔鲜儿 uniapp - SKU 模块

目录 存货单位&#xff08;SKU&#xff09;​ 插件市场​ 下载 SKU 插件​ 使用 SKU 插件​ 插件类型问题​ 核心业务​ 渲染商品规格​ 打开弹窗交互​ 渲染被选中的值​ 存货单位&#xff08;SKU&#xff09;​ SKU 概念 存货单位&#xff08;Stock Keeping Unit&a…

使用docker轻量化部署snmp agent(SNMPv2访问)

文章目录 服务器环境说明单机部署&#xff08;非挂载conf文件版&#xff09;debian:buster-slim容器简介实现步骤创建Dockerfile创建SNMP配置文件 (snmpd.conf)构建Docker镜像运行Docker容器 注意补充复制容器文件到本地容器、镜像操作 单机部署&#xff08;挂载conf文件版&…

会员案例库 | 零赛云:一站式工业数字化转型解决方案提供商

1.案例应用领域及行业 能源行业、机械设备等离散制造业 2.案例描述 新奥动力是新奥集团旗下专注于微、小型燃气轮机研发及产业化的高科技创新型企业&#xff0c;是专业的分布式能源系统核心能源装备供应商和解决方案提供商。通过多年累积&#xff0c;已建立从市场到研发&…

Python+Django 构建实验室药品管理和预警系统【源码】

人生苦短&#xff0c;我用 Python。 今天给大家分享一个完整的实战案例&#xff1a;Python实现实验室药品管理和预警系统&#xff0c;文末附完整代码! 在线演示环境 项目演示地址&#xff1a;http://101.34.18.118:8002/ &#xff08;图片未压缩&#xff0c;所以加载有点慢&…

PS制作淘宝主图

PS制作淘宝主图 1.制作主图主页1.1新建800x800画板1.2填充前景色&#xff1a;altdel1.3选择圆角矩形&#xff0c;半径501.4按住ALT&#xff0c;往下投复制 2.调色 1.制作主图主页 1.1新建800x800画板 1.2填充前景色&#xff1a;altdel 1.3选择圆角矩形&#xff0c;半径50 居中对…

力扣刷题记录(21)LeetCode:121、123、188、309

目录 121. 买卖股票的最佳时机 123. 买卖股票的最佳时机 III 188. 买卖股票的最佳时机 IV 309. 买卖股票的最佳时机含冷冻期 如果某一天出售股票可以得到最大利润&#xff0c;那么股票买入的价格一定是这天之前股票的最低价格。 所以我们可以在遍历股票价格的时候不断更新股…

[嵌入式AI从0开始到入土]9_yolov5在昇腾上推理

[嵌入式AI从0开始到入土]嵌入式AI系列教程 注&#xff1a;等我摸完鱼再把链接补上 可以关注我的B站号工具人呵呵的个人空间&#xff0c;后期会考虑出视频教程&#xff0c;务必催更&#xff0c;以防我变身鸽王。 第一章 昇腾Altas 200 DK上手 第二章 下载昇腾案例并运行 第三章…

性能优化(CPU优化技术)-ARM Neon详细介绍

本文主要介绍ARM Neon技术&#xff0c;包括SIMD技术、SIMT、ARM Neon的指令、寄存器、意图为读者提供对ARM Neon的一个整体理解。 &#x1f3ac;个人简介&#xff1a;一个全栈工程师的升级之路&#xff01; &#x1f4cb;个人专栏&#xff1a;高性能&#xff08;HPC&#xff09…