竹笋

首页 » 问答 » 环境 » 国际计费系统基于ShardingPro
TUhjnbcbe - 2024/10/20 17:01:00

1背景

计费数据量剧增,需要将老库进行数据拆分到多个分库,数据分片;

拆分规则为收付款对象(或ID)字段,进行HASH,取模(32),分32个库

2目标

实现数据从老库,按照分片规则,迁移到分库中

保证数据平滑迁移,尽量停产时间最小

支持回滚,同步失败,支持回滚单库

3方案

3.1基于蜂巢中间件实现

3.2半自研同步数据处理程序

开发数据处理程序,消费历史数据MQ;消费增量数据MQ

基于dts同步历史数据(指定时间位点,同步历史)

基于JDQ同步实时数据(指定时间位点,恢复实时同步)

3.3基于开源中间件策略

3.4完全自研数据处理工具

开发数据查询程序,历史数据查询发送MQ写入

实时数据双写

统一发送MQ,由MQ异步处理写入

3.5方案对比

综上整体评估,我们最终选取,基于sharding-proxy做数据迁移整体方案

4Proxy介绍与搭建

4.1简介

4.1.1设计意义

定位为透明化的数据库代理端,提供封装了数据库二进制协议的服务端版本,用于完成对异构语言的支持。目前提供MySQL和PostgreSQL(兼容openGauss等基于PostgreSQL的数据库)版本,它可以使用任何兼容MySQL/PostgreSQL协议的访问客户端(如:MySQLCommandClient,MySQLWorkbench,Navicat等)操作数据,对DBA更加友好。

向应用程序完全透明,可直接当做MySQL/PostgreSQL使用;

适用于任何兼容MySQL/PostgreSQL协议的的客户端。

4.1.2整体架构

整个架构可以分为前端、后端和核心组件三部分。

前端负责与客户端进行网络通信,采用的是基于NIO的客户端/服务器框架,在Windows和Mac操作系统下采用NIO模型,Linux系统自动适配为Epoll模型。通信的过程中完成对MySQL协议的编解码。核心组件得到解码的MySQL命令后,开始调用Sharding-Core对SQL进行解析、路由、改写、结果归并等核心功能。后端与真实数据库的交互目前借助于Hikari连接池。

4.2搭建

4.2.1关键字解读

下载,解压,安装mysql驱动,启动,完事

4.2.2安装shareding-proxy

安装包下载,选择合适版本(本文选用4.1.1),在

1
查看完整版本: 国际计费系统基于ShardingPro