0%

ShardingSphere-JDBC简介

在 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 标准的数据库

作用

  • 简化对分库分表之后数据的操作
  • 数据分片
  • 读写分离

MyBatis 初始化深度解析:从配置文件到 Configuration 构建全流程

MyBatis 的初始化过程本质是 “读取并解析所有配置文件(全局配置 + Mapper 映射),将配置信息组装为 Configuration 核心对象,最终基于该对象创建 SqlSessionFactory 的过程。本文结合 MyBatis 3.5.x 源码,从 “入口→全局配置解析→Mapper 映射解析→Configuration 组装” 四个维度,完整拆解初始化逻辑,帮你理解每一步配置的作用与组件关联。

初始化核心目标与整体流程

在深入源码前,先明确初始化的核心产出和整体链路,建立宏观认知:

核心目标

  • 构建 Configuration 对象:MyBatis 的 “全局配置中心”,存储所有配置信息(数据源、SQL 语句、结果映射、插件、别名等);
  • 创建 SqlSessionFactory:基于 Configuration 生成,是后续创建 SqlSession(数据库会话)的工厂,全局唯一。

整体流程链路

graph TD
    A[加载 mybatis-config.xml 输入流] --> B[创建 XMLConfigBuilder 解析器]
    B --> C[解析全局配置节点 properties/settings/typeAliases等]
    C --> D[解析 mappers 节点,加载并解析所有 Mapper.xml]
    D --> E[将所有配置信息组装到 Configuration 对象]
    E --> F[基于 Configuration 创建 SqlSessionFactory]

初始化入口:SqlSessionFactoryBuilder.build ()

MyBatis 初始化的入口是 SqlSessionFactoryBuilderbuild() 方法,该方法负责触发配置解析并生成 SqlSessionFactory

入口源码解析

阅读全文 »

Seata 分布式事务使用指南:从集成到实战

Seata 作为分布式事务解决方案,其使用流程简洁高效,核心通过注解标记全局事务、代理数据源实现自动回滚。本文基于 Spring Cloud Alibaba 生态,详细介绍 Seata 的集成步骤与实战要点。

环境准备

在使用 Seata 前,需确保:

  1. Seata Server 已启动:作为事务协调者(TC),需提前配置并启动(参考前文 Seata Server 配置);

  2. 数据库准备:所有参与分布式事务的微服务数据库需创建undo_log表(AT 模式用于回滚日志存储),SQL 脚本如下:

    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    CREATE TABLE `undo_log` (
    `id` bigint(20) NOT NULL AUTO_INCREMENT,
    `branch_id` bigint(20) NOT NULL,
    `xid` varchar(100) NOT NULL,
    `context` varchar(128) NOT NULL,
    `rollback_info` longblob NOT NULL,
    `log_status` int(11) NOT NULL,
    `log_created` datetime NOT NULL,
    `log_modified` datetime NOT NULL,
    PRIMARY KEY (`id`),
    UNIQUE KEY `ux_undo_log` (`xid`,`branch_id`)
    ) ENGINE=InnoDB AUTO_INCREMENT=1 DEFAULT CHARSET=utf8;

微服务集成 Seata

1. 引入依赖

在各参与分布式事务的微服务(如订单服务、库存服务、账户服务)中添加 Seata 依赖,注意版本需与 Seata Server 一致

阅读全文 »

Seata Server 配置详解:从基础设置到生产环境部署

Seata Server 作为分布式事务的协调者(TC),其配置直接影响分布式事务的稳定性和性能。本文将详细解析 Seata Server 的核心配置文件(file.confregistry.conf),并介绍启动与部署的关键注意事项。

核心配置文件概述

Seata Server 的配置主要通过两个文件管理:

  • file.conf:配置事务存储模式、通信协议、线程池等核心参数;
  • registry.conf:配置服务注册与配置中心(如 Nacos、Eureka、Zookeeper 等)。

默认配置文件位于 Seata 安装目录的 conf 文件夹下。

file.conf 配置详解

file.conf 是 Seata Server 的核心配置文件,包含通信传输、服务配置、事务存储等关键设置。

1. 传输配置(transport

定义 Seata Server 与客户端(TM/RM)的通信方式:

阅读全文 »

Seata 简介:分布式事务的一站式解决方案

在微服务架构中,跨服务的事务一致性是典型难题。Seata(Simple Extensible Autonomous Transaction Architecture)作为阿里开源的分布式事务解决方案,通过简洁的架构设计和高效的处理机制,为分布式事务提供了高性能、易集成的解决方案。

Seata 的核心目标

Seata 旨在解决微服务拆分后的数据一致性问题,核心目标包括:

  • 提供简单易用的分布式事务服务,降低开发成本;
  • 保证分布式事务的 ACID 特性(原子性、一致性、隔离性、持久性);
  • 支持高性能事务处理,减少对业务系统的性能影响;
  • 兼容主流框架(Spring Cloud、Dubbo 等)和存储中间件(MySQL、Redis 等)。

Seata 的核心组成:一 ID + 三组件

Seata 的架构由一个全局事务 ID三个核心组件构成,协同完成分布式事务的管理。

Transaction ID(全局事务 ID)

  • 定义:全局唯一的事务标识(XID),用于关联分布式事务中的所有分支事务;
  • 作用:在跨服务调用时,通过 XID 追踪整个事务链路,确保所有分支事务属于同一全局事务。

三大核心组件

阅读全文 »