项目中做个统一订单的基础服务(只记录订单的基本的公共信息),1、便与后续各种其他业务的接入~ 2、同时APP端提供统一订单信息的查询入口,后续其他业务不用升级

由于统一的订单服务,所以订单量会很大,所以目前考虑进行分表操作,

1、分表方案

一:基于Poxy MyCat中数据库中间件

     优点:功能强大,对应用侵入小,不需要改代码

         缺点:搭建更复杂,需要专门部署中间件

二:基于Sharding jdbc 开发框架

        优点:轻量级java组件,部署简单~ 集成一个jar

        缺点:对应用有入侵,需要修改代码 

    

  采用当当sharding jdbc  (https://www.jianshu.com/p/dd47dd3b1f6b

2、分表策略

(1)容量粗略估算 每天10w订单 一个月300W订单

(2)   分表数量  5张 每张 300w共 5 * 300W = 150000

( 3)分表维度

按用户标识进行分表

后续需要考虑~~~

(4) 扩容问题 : 按用户标识分表后如何解决扩容?一致性hash?

(5) 数据分离:前5个月的数据如何归档到历史库?

3、分表实践

(1)maven仓库

maven {url 'https://mvnrepository.com/artifact/io.shardingjdbc/sharding-jdbc-core'}

 (2) Sharding JDBC依赖
增加 sharding jdbc 和 HikariCP 连接池
compile('io.shardingsphere:sharding-jdbc-spring-boot-starter:3.0.0.M1')
compile('com.zaxxer:HikariCP')
(3)增加配置
# 分库策略
sharding:
jdbc:
datasource:
names: order_service
order_service:
type: com.zaxxer.hikari.HikariDataSource
driverClassName: com.mysql.jdbc.Driver
jdbcUrl: jdbc:mysql://**/order_service
username: root
password: **
config:
sharding:
tables:
t_order:
actual-data-node: order_service.t_order_${0..4}
table-strategy:
inline:
sharding-column: user_id
algorithm-expression: t_order_${user_id % 5}

数据库名 order_service

逻辑表名 t_order (所有查询可以基于逻辑表名)

分表列 user_id

分表算法:user_id % 5

下面可以基于mybatis 对逻辑表t_order 进行增、删、改操作 具体sharding jdbc 使用方法略

       

使用ShardingJdbc分表的更多相关文章

  1. Sharding-Jdbc实现分表分库

    Sharding-Jdbc分表分库LogicTable数据分片的逻辑表,对于水平拆分的数据库(表),同一类表的总称.订单信息表拆分为2张表,分别是t_order_0.t_order_1,他们的逻辑表名 ...

  2. 利用Sharding-Jdbc实现分表

    你们团队使用SpringMVC+Spring+JPA框架,快速开发了一个NB的系统,上线后客户订单跟雪花一样纷沓而来. 慢慢地,你的心情开始变差,因为客户和产品的抱怨越来越频繁,抱怨的最多的一个问题就 ...

  3. 利用sharding-jdbc分库分表

    sharding-jdbc是当当开源的一款分库分表的数据访问层框架,能对mysql很方便的分库.分表,基本不用修改原有代码,只要配置一下即可,完整的配置参考以下内容: <?xml version ...

  4. 当当开源sharding-jdbc,轻量级数据库分库分表中间件

    近期,当当开源了数据库分库分表中间件sharding-jdbc. Sharding-JDBC是当当应用框架ddframe中,从关系型数据库模块dd-rdb中分离出来的数据库水平分片框架,实现透明化数据 ...

  5. 解读分库分表中间件Sharding-JDBC

    [编者按]数据库分库分表从互联网时代开启至今,一直是热门话题.在NoSQL横行的今天,关系型数据库凭借其稳定.查询灵活.兼容等特性,仍被大多数公司作为首选数据库.因此,合理采用分库分表技术应对海量数据 ...

  6. 学习sharding-jdbc 分库分表扩展框架

    先丢代码地址 https://gitee.com/a247292980/sharding-jdbc 再丢pom.xml的dependency <properties> <projec ...

  7. Sharding-jdbc实现分库分表

    首先在pom文件中引入需要的依赖 <dependency> <groupId>io.shardingjdbc</groupId> <artifactId> ...

  8. spring boot sharding-jdbc实现分佈式读写分离和分库分表的实现

    分布式读写分离和分库分表采用sharding-jdbc实现. sharding-jdbc是当当网推出的一款读写分离实现插件,其他的还有mycat,或者纯粹的Aop代码控制实现. 接下面用spring ...

  9. SpringBoot使用Sharding-JDBC分库分表

    本文介绍SpringBoot使用当当Sharding-JDBC进行分库分表. 1.有关Sharding-JDBC 有关Sharding-JDBC介绍这里就不在多说,之前Sharding-JDBC是当当 ...

随机推荐

  1. C++的泛型编程方式

    1.使用类模板创建数组 下面这段代码:是创建一个元素为 T 类型的数组. #pragma once template<class T> class MyArray { public: // ...

  2. 怎样使用CSS3实现书页(书本)卷角效果

    我们有时候想在页面显示一个公告或用户提示信息. 一个经常使用设计是使用书签形状. 我们能够给书签加入卷角效果.以使其更为逼真.所谓的"卷角"实际上能够用小角度倾斜的阴影效果来模拟. ...

  3. 为centos桌面增加在右键中打开终端

    万万没有想到这只是安装一个程序的总是,而不是配置的问题.注意要用root身份才能安装软件 1. yum -y install nautilus-open-terminal 2. reboot

  4. unity5, UI Button "On Button Down"

    unity5自带的UI Button的Inspector面板中只有On Click事件,如果我们想让一个按钮响应On Button Down事件该怎么办呢?方法是: 点Add Component-&g ...

  5. Android Studio公布到Jcenter

    1.前言 拥抱开源.热爱开源,将我们觉得不错的代码开源到gihtub.将我们的库公布到jcenter\mevan等. 2.准备工作 2.1 准备 申请仓库账号 注意model为android libr ...

  6. Atitit.操作注册表 树形数据库 注册表的历史 java版本类库总结

    Atitit.操作注册表 树形数据库 注册表的历史 java版本类库总结 1. 注册表是树形数据库 1 2. 注册表的由来 1 3. Java  操作注册表 2 3.1. 使用Preferences  ...

  7. java使用lambda表达式对List集合进行操作(JDK1.8)

    1. 使用lambda表达式对List集合进行操作(JDK1.) List<TreeDto> collect = list.stream().filter(item -> item. ...

  8. php用explode,可以提供多个字符作为分割符来进行分割数组吗?

    explode — 使用一个字符串分割另一个字符串, 它的函数原型如下: array explode ( string $delimiter , string $string [, int $limi ...

  9. java中for循环执行过程

    for (int j = 0; j < newSize; j++) { //执行todo } 1.首先变量j初始化为0 2.然后j=0的值跟newSize进行比较,假如为true,则执行{}里面 ...

  10. SonarQube 7.x 的安装使用 + 集成Maven 使用

    SonarQube是管理代码质量一个开放平台,可以快速的定位代码中潜在的或者明显的错误,下面将会介绍一下这个工具的安装.配置以及使用. 下载地址:http://www.sonarqube.org/do ...