一、突如其来的兴趣 自从上周写了一个 ShardingSphere 简单入门之后,突然对这个产品产生了浓厚的兴趣。...SQL解析,分为词法解析和语法解析。 执行器优化,合并和优化分片条件,如OR等。...SQLParserExecutor 文件定位,也就得到了 shardingsphere-sql-parser-engine.jar 这个解析引擎包。...四、jar 源码解析 pom.xml parent 项目是 shardingsphere-sql-parser 工程。...SQLParserEngine SQL 解析引擎,会将 SQL 语句解析成 ParseTree 对象,然后再通过 ParseTreeVisitorFactory 解析成 SQLStatement 对象进行返回
概述 简介 ShardingSphere-JDBC ShardingSphere-Proxy ShardingSphere-Sidecar(TODO) 混合架构 解决方案 线路规划 ShardingSphere...GitHub地址:https://github.com/apache/shardingsphere ShardingSphere 官网:https://shardingsphere.apache.org...ShardingSphere 站在数据库的上层视角,关注他们之间的协作多于数据库自身。 连接、增量和可插拔是 Apache ShardingSphere 的核心概念。...Apache ShardingSphere 是多接入端共同组成的生态圈。...通过混合使用 ShardingSphere-JDBC 和 ShardingSphere-Proxy,并采用同一注册中心统一配置分片策略,能够灵活的搭建适用于各种场景的应用系统,使得架构师更加自由地调整适合于当前业务的最佳系统架构
我们今天用ShardingSphere 给大家演示数据分片,包括分库分表、只分表不分库进行说明。 下一节有时间的话在讲讲读写分离吧。...github地址:https://github.com/362460453/boot-sharding-JDBC 正文 目录 前言 正文 ShardingSphere介绍 为什么不用mycat 实践前的准备工作...代码案例 总结 ---- ShardingSphere介绍 ShardingSphere是一套开源的分布式数据库中间件解决方案组成的生态圈,它由Sharding-JDBC、Sharding-Proxy...ShardingSphere的功能能帮助我们做什么 数据分片 读写分离 编排治理 分布式事务 2016年初Sharding-JDBC被开源,这个产品是当当的,加入了Apache 后改名为 ShardingSphere...,mycat和ShardingSphere是同类型的中间件,主要的功能,数据分片和读写分离两个都能去做,但是姿势却有很大的差别, 从字面意义上看Sharding 含义是分片、碎片的意思,所以不难理解ShardingSphere
欢迎来到我的博客,代码的世界里,每一行都是一个故事 数据库切片大对决:ShardingSphere与Mycat技术解析 前言 在数据库的舞台上,有两位颇受欢迎的明星,它们分别是ShardingSphere...ShardingSphere与Mycat简介 1....数据切片策略对比: ShardingSphere 的逻辑切片: ShardingSphere 提供了逻辑切片的方式,即将数据按照某种业务规则进行逻辑切分。...ShardingSphere 的全局表和分布式查询: 全局表: ShardingSphere 支持全局表的概念,即在整个分片集群中存在的表。...这通常涉及到对 SQL 语句进行解析,然后根据分片规则将查询请求发送到正确的节点。MyCAT 的分片路由功能允许开发人员定义灵活的分片策略,以适应不同的业务需求。
前言 上一篇我们说了ShardingSphere的读写分离,使用读写分离能够减轻单库的读写操作,从而提升数据库的吞吐量,但是当数据库中表的数据量到达一定数量时,我们可能就会需要进行分片了, 分片又分为垂直分片和水平分片...ShardingSphere数据分片实战 使用ShardingSphere数据分片,我们只需通过简单的配置就能实现,ShardingSphere帮我们屏蔽了底层逻辑,我们也可通过ShardingSphere...底层会进行解析表达式,然后分片到对应的数据表上面, 我们的表达式是document_$->{year},也就是根据年进行分片,当然,我们可以根据自己的需求去写表达式,比如根据主键取模进行分片等,需要根据我们的实际场景去做...分片算法 ShardingSphere的分片算法有多种,我们也可以自己实现一套分片算法,通过SPI,分片算法的顶层接口是ShardingAlgorithm,目前实现了多种算法。...关于ShardingSphere的数据分片,我们就说到这里,感谢你的观看,我们下期再见 ShardingSphere数据库读写分离
在shardingSphere1.0中,在看到mybatis的列子中,我们可以看到需要配置:mybatisContext.xml和shardingContext.xml。 ?...2.DatabaseShardingStrategy 数据源分片策略 SingleKeyModuloDatabaseShardingAlgorithm 单key模库分片算法 如图所示,图片来自shardingSphere
假设主键ID为bigint类型,长度为8字节,而指针大小在InnoDB源码中设置为6字节,所以就是一个键值指针占用8+6=14字节,一个内部节点中存储的指针个数为 16KB/14B = 16 * 1024B...ShardingSphere-JDBC ShardingSphere-Proxy ShardingSphere-Sidecar 数据库 任意 MySQL/PostgreSQL MySQL/PostgreSQL...L3生态层用于对接和融入现有数据库生态,包括数据库协议、SQL解析器和存储适配器,分别对应于ShardingSphere以数据库协议提供服务的方式、SQL方言操作数据的方式以及对接存储节点的数据库类型。...SQL是与数据库交流的标准语言,SQL解析引擎负责将SQL字符串解析为抽象语法树,供ShardingSphere理解并实现其增量功能。...ShardingSphere-Scaling支持将外围数据迁移至ShardingSphere所管理的数据库,或对 ShardingSphere的数据节点进行扩容或缩容。
tryAcquire 方法 AQS 中直接抛出一个异常,表明需要子类去实现,子类可以根据同步器的 state 状态来决定是否能够获得锁,接下来我们详细看下 acquire 的源码解析。...png]AQS 对其只是简单的实现,具体获取锁的实现方法还是由各自的公平锁和非公平锁单独实现,实现思路一般都是 CAS 赋值 state 来决定是否能获得锁(阅读后文的 ReentrantLock 核心源码解析即可...来一起研究本小节源码。...最后抢到锁返回了,那么如果被中断过的话,就需要补充一次中断 总结 AQS 的源码实在是太多了,我们只研究核心源码,其他部分源码都可以参考研究。
target=https%3A%2F%2Fgitee.com%2Fcreyanghang%2Fspring-example%2Ftree%2Fmaster%2Fspring-shardingsphere...spring-boot-starter-web org.apache.shardingsphere... shardingsphere-jdbc-core-spring-boot-starter <version...name: sharging-jdbc-demo profiles: active: dev 复制 application-dev.yml: # 读写分离配置 spring: shardingsphere...8080/user/insert 图片 在这里插入图片描述 写入主数据源后,查询主数据库中数据是否写入,从数据库数据是否正常同步 2.2、事务测试 为了保证主从库间的事务一致性,避免跨服务的分布式事务,ShardingSphere-JDBC
spring-boot-starter-web org.apache.shardingsphere... shardingsphere-jdbc-core-spring-boot-starter <version...application: name: sharging-jdbc-demo profiles: active: dev application-dev.yml: # 读写分离配置 spring: shardingsphere.../127.0.0.1:8080/user/insert 写入主数据源后,查询主数据库中数据是否写入,从数据库数据是否正常同步 2.2、事务测试 为了保证主从库间的事务一致性,避免跨服务的分布式事务,ShardingSphere-JDBC
tryAcquire 方法 AQS 中直接抛出一个异常,表明需要子类去实现,子类可以根据同步器的 state 状态来决定是否能够获得锁,接下来我们详细看下 acquire 的源码解析。...AQS 对其只是简单的实现,具体获取锁的实现方法还是由各自的公平锁和非公平锁单独实现,实现思路一般都是 CAS 赋值 state 来决定是否能获得锁(阅读后文的 ReentrantLock 核心源码解析即可...来一起研究本小节源码。 ?...最后抢到锁返回了,那么如果被中断过的话,就需要补充一次中断 总结 AQS 的源码实在是太多了,我们只研究核心源码,其他部分源码都可以参考研究。
UUID,无序,写入性能差 snowflake·: ShardingSphere提供这个算法, 有序,写入性能好,生成性能无上限。...利用Redis作为发号器: String 类型 key:yyyyMMddHHmmssSSS value: 序号 防止时钟不准,key的有效时间为:30s,生产性能受到redis限制,一般业务够用 ShardingSphere...分片流程 分片流程:解析--> 路由->改写->执行->归并 解析 SQLParserEngine 1.解析成AST 语法树 官网图片如下: 2.提取SQLSegment 3.填充SQL语句 SQLStatement...标准类图,ShardingSphere 改写部分的 略有不同。
数据分片的核心由SQL解析 => 执行器优化 => SQL路由 => SQL改写 => SQL执行 => 结果归并的流程组成。...对源码有兴趣的同学可以阅读 shardingsphere-route.jar 包。
在案例分析中,我们可以以一个简单的示例来解析 Spring 框架的源码。假设我们有一个简单的 Web 应用程序,需要实现用户管理的功能,包括用户的增删改查。...同时,我们也可以通过调试源码的方式来进一步了解 Spring 框架的内部实现细节。
,后续我们会针对这两个方法进行解析。...= this.aspectBeanNames; // 步骤1:如果aspectNames为空,则试图从IOC中解析出Aspect的beanName列表 if (aspectNames...获得普通增强器 getAdvisor(...)方法的源码如下所示: a> 步骤1:获得切点表达式的相关信息 下面我们来看一下步骤1中的获得切点表达式的相关信息的getPointcut(...)方法源码逻辑...更多技术干货,欢迎大家关注公众号“爪哇缪斯” ~ \(^o^)/ ~ 「干货分享,每天更新」 往期推荐 (五)Spring源码解析:ApplicationContext解析 (四)Spring源码解析...:bean的加载流程 (三)Spring源码解析:自定义标签解析 (二)Spring源码解析:默认标签解析 (一)Spring源码解析:容器的基本实现
ShardingSphere实战ShardingSphere是一款开源的分布式数据库中间件,它提供了多种数据分片和数据库分布式事务解决方案。...下面是ShardingSphere的实战流程:下载ShardingSphere并解压:可以从ShardingSphere官方网站下载最新稳定版本的安装包,并将其解压到本地目录。...Narayana源码解析Narayana是一个开源的分布式事务管理方案,它提供了可靠的XA事务处理能力。...下面是对Narayana方案源码解析的大致步骤:下载源码:可以从Narayana的官方代码仓库中下载Narayana的源码。...这是对ShardingSphere如何实战并解析Narayana方案的源码的简要介绍,具体的实战和源码分析过程可以根据自身需求和实际场景进行深入研究。
executor = (Executor) interceptorChain.pluginAll(executor); return executor; } BaseExecutor源码解析
一、 解析AOP配置的入口1.1 从XML配置到AOP Namespace的解析流程流程解析:加载配置文件:Spring 应用启动时加载 XML 配置文件。...解析切点:当解析到 元素时,Spring 会创建一个切点,并指定切点的 ID 和表达式。...1.2 分析注解驱动的AOP配置解析流程解析流程:扫描组件:Spring 应用启动时,会扫描指定的包路径下的组件,并解析其中的注解。...负责解析 标签中的配置信息,并将解析结果应用到 Spring 的 Bean 定义中。...主要责任:解析 AOP 配置信息:解析 标签及其子标签中的配置信息,包括切面定义、通知类型、切点表达式等。
第三部分:ShardingSphere 源码解析之基础设施 围绕 ShardingSphere 的基础架构展开讨论,首先给你高效阅读 ShardingSphere 源码的方法,并介绍微内核架构和分布式主键的设计理念...第四部分:ShardingSphere 源码解析之分片引擎 关注 ShardingSphere 最核心的分片引擎实现原理,从 SQL 的解析引擎开始,一路进行路由引擎、改写引擎、执行引擎、归并引擎等分片引擎中各个核心技术点的源码解析...第五部分:ShardingSphere 源码解析之分布式事务 分布式事务是分布式数据库中间件的必备功能,ShardingSphere 内部也提供了对分布式事务的一种抽象。...第六部分:ShardingSphere 源码解析之治理与集成 讨论如何基于改写引擎实现低侵入性数据脱敏方案、如何基于配置中心实现配置信息的动态化管理、如何基于注册中心实现数据库访问熔断机制、如何基于 Hook...学习从源码分析到日常开发的技巧 从源码解析到日常应用是本专栏的一个核心目标。