ShardingSphere项目实战集群环境准备

该文介绍了如何准备ShardingSphere项目集群环境,包括使用JDK1.8以上版本,MySQL5.7,以及在两台服务器上创建数据库和表。接着,文章展示了创建SpringBoot应用的过程,包括项目初始化、引入ShardingSphere、MyBatisPlus等依赖,以及创建实体类和Mapper接口。

在这里插入图片描述

🚀 ShardingSphere 🚀

🌲 算法刷题专栏 | 面试必备算法 | 面试高频算法 🍀
🌲 越难的东西,越要努力坚持,因为它具有很高的价值,算法就是这样✨
🌲 作者简介:硕风和炜,优快云-Java领域优质创作者🏆,保研|国家奖学金|高中学习JAVA|大学完善JAVA开发技术栈|面试刷题|面经八股文|经验分享|好用的网站工具分享💎💎💎
🌲 恭喜你发现一枚宝藏博主,赶快收入囊中吧🌻
🌲 人生如棋,我愿为卒,行动虽慢,可谁曾见我后退一步?🎯🎯

🚀 ShardingSphere 🚀

在这里插入图片描述
在这里插入图片描述

🍀 一.ShardingSphere项目实战集群环境准备

🥦 1.1 基础环境

  1. jdk: 要求jdk必须是1.8版本及以上

在这里插入图片描述

  1. MySQL: 推荐mysql5.7版本

在这里插入图片描述

  1. 搭建两台MySQL服务器
node1-shardingsphere 192.168.10.132
node2-shardingsphere 192.168.10.133

在这里插入图片描述

🥦 1.2 创建数据库和表

  1. 在node1-shardingsphere 192.168.10.132服务器上, 创建数据库 ljw_payorder_db,并创建表pay_order
CREATE DATABASE ljw_payorder_db CHARACTER SET 'utf8';

USE ljw_payorder_db;

CREATE TABLE `pay_order` (
  `order_id` bigint(20) NOT NULL AUTO_INCREMENT,
  `user_id` int(11) DEFAULT NULL,
  `product_name` varchar(128) DEFAULT NULL,
  `COUNT` int(11) DEFAULT NULL,
  PRIMARY KEY (`order_id`)
) ENGINE=InnoDB AUTO_INCREMENT=12345679 DEFAULT CHARSET=utf8;

在这里插入图片描述

  1. 在node2-shardingsphere 192.168.10.133服务器上, 创建数据库 ljw_user_db,并创建表users
CREATE DATABASE ljw_user_db CHARACTER SET 'utf8';

USE ljw_user_db;

CREATE TABLE `users` (
  `id` int(11) NOT NULL,
  `username` varchar(255) NOT NULL COMMENT '用户昵称',
  `phone` varchar(255) NOT NULL COMMENT '注册手机',
  `PASSWORD` varchar(255) DEFAULT NULL COMMENT '用户密码',
  PRIMARY KEY (`id`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8 COMMENT='用户表';

在这里插入图片描述

🍀 二.创建SpringBoot程序

🥦 2.1 创建项目

在这里插入图片描述

🥦 2.2 引入依赖

SpringBoot项目依赖资源:SpringBoot2.3.7+ MyBatisPlus + ShardingSphere-JDBC 5.1 + Hikari+ MySQL 5.7

  <dependencies>
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-web</artifactId>
        </dependency>

        <dependency>
            <groupId>org.apache.shardingsphere</groupId>
            <artifactId>shardingsphere-jdbc-core-spring-boot-starter</artifactId>
            <version>5.1.1</version>
        </dependency>

        <dependency>
            <groupId>com.baomidou</groupId>
            <artifactId>mybatis-plus-boot-starter</artifactId>
            <version>3.3.1</version>
        </dependency>

        <dependency>
            <groupId>mysql</groupId>
            <artifactId>mysql-connector-java</artifactId>
            <scope>runtime</scope>
        </dependency>

        <dependency>
            <groupId>org.projectlombok</groupId>
            <artifactId>lombok</artifactId>
        </dependency>

        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-test</artifactId>
            <scope>test</scope>
            <exclusions>
                <exclusion>
                    <groupId>org.junit.vintage</groupId>
                    <artifactId>junit-vintage-engine</artifactId>
                </exclusion>
            </exclusions>
        </dependency>
    </dependencies>

🥦 2.3 创建实体类

@TableName("pay_order")
@Data
@ToString
public class PayOrder {

    @TableId
    private Long order_id;

    private Long user_id;

    private String product_name;

    private Integer count;

}

@TableName("users")
@Data
@ToString
public class User {

    @TableId
    private Long id;

    private String username;

    private String phone;

    private String password;

}

🥦 2.4 创建Mapper

@Mapper
public interface PayOrderMapper extends BaseMapper<PayOrder> {
}

@Mapper
public interface UserMapper extends BaseMapper<User> {
}

🍀 三.总结

本篇文章主要讲解了ShardingSphere项目实战集群环境准备,基础环境搭建,集群准备,数据库表创建,项目创建,基本准备的操作等等,后续内容更加精彩,敬请期待。

💬 四.共勉

最后,我想和大家分享一句一直激励我的座右铭,希望可以与大家共勉!

在这里插入图片描述

在这里插入图片描述

### 关于ShardingSphere分库分表的实际操作案例 #### 配置环境准备 为了实现基于ShardingSphere的分库分表方案,首先需要配置好基础环境。这通常涉及到设置多个数据源以及指定驱动类名称: ```properties spring.shardingsphere.datasource.ds0.driver-class-name=com.mysql.cj.jdbc.Driver ``` 此配置项用于定义连接到第一个逻辑数据库`ds0`所使用的JDBC驱动程序[^4]。 #### 定义绑定表规则 当存在多张相互关联的数据表时,可以通过设定绑定表来优化查询性能并简化跨表操作: ```yaml spring.shardingsphere.sharding.binding-tables=t_order,t_item ``` 这里指定了两个表`t_order`和`t_item`作为一组绑定表,它们将在相同的物理分片内存储以提高效率[^2]。 #### 数据分片策略设计 对于具体的分片算法,可以根据业务需求自定义实现。例如按照订单ID取模分配至不同数据库实例中: ```java public class OrderIdModuloDatabaseShardingAlgorithm implements PreciseShardingAlgorithm<Long> { @Override public String doEqualSharding(Collection<String> availableTargetNames, PreciseShardingValue<Long> shardingValue) { long orderId = shardingValue.getValue(); int dbIndex = (int)(orderId % 2); // 假设有两组DB集群 return "ds" + dbIndex; } } ``` 这段Java代码展示了如何创建一个简单的精确分片算法,它会根据传入的订单编号决定具体存放在哪个实际数据库里[^1]。 #### 应用场景模拟 假设有一个电商系统,其中涉及大量交易记录处理。通过引入ShardingSphere来进行合理的水平拆分能够有效缓解单个RDS的压力,并且保持良好的读写分离特性。此时不仅限于掌握现成功能的应用,更重要的是理解怎样针对特定场景定制化开发新的模块或调整现有参数配置[^3]。
评论 2
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

硕风和炜

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值