• 使用ShardingJdbc分表


    项目中做个统一订单的基础服务(只记录订单的基本的公共信息),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 使用方法略


           

  • 相关阅读:
    前端之script标签注意事项
    前端之常用网址的整理
    前端之清除浮动
    三元表达式
    迭代器 生成器
    文件处理流程
    python中常见的内置函数
    匿名函数lambda
    模拟问路场景理解递归
    create auto increment row with select in postgreSQL
  • 原文地址:https://www.cnblogs.com/mxmbk/p/9717995.html
Copyright © 2020-2023  润新知