博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
[案例]如何异构一个数十亿级别的数据库
阅读量:5808 次
发布时间:2019-06-18

本文共 719 字,大约阅读时间需要 2 分钟。

  hot3.png

本文记录工作中一次异构数十亿级别数据库的过程,数据源为mysql,目标介质为elasticsearch。


1、 我们能利用的资源

1.1 源数据模型

源库是别人(库存)的数据,分为A,B,C三种类型的库存模型,需要将三种类型的模型整合成一中通用库存模型方便我方(商家)做业务。

典型的互联网企业是协作方式,通过数据副本实现业务之间的解耦。

1.2 特殊表(非重点)

D为库存占用订单详情,也要异构一份。

1.3 分库分表

ABCD均做了分库分表,A(16个库,4096张表),B(1,512),C(1,256),D(8,1024)

1.4 数据量

数据总量在数十亿级别

1.5 线上影响

不影响对方业务,数据源只有对方mysql分组中对应的抽数从库。

1.6 性能要求

未来要支持复杂的条件查询,对查性能有很高要求,目标介质是ES。


2、 难点

2.1 导数

交易库存复杂的分片规则,数据量大,导数是个大工程。

2.2 更新频繁

写操作频繁,ES 创建索引的tps能否满足要求。

2.3 一致性如何保证

通过mq 实现 base最终一致性。


3、 最终方案

3.1 系统整体架构

首先增量数据采用canal做收集(图中binLake同集群化canal),ABC库全部存入es,D库存入mysql。

3.2 如何做全量倒库

sop对应的类型A,使用多个topic分散消息中间件压力,同时解决中间件同一topic的连接数限制。

3.3 如何提高es写性能(bulk)

通过jmq异步创建es索引,通过redis队列实现bulk模式提交对应用的透明化

转载于:https://my.oschina.net/liaodo/blog/3059035

你可能感兴趣的文章
用 C# 轻松读取、改变文件的创建、修改、访问时间
查看>>
(转) 多模态机器翻译
查看>>
【官方文档】Nginx负载均衡学习笔记(三) TCP和UDP负载平衡官方参考文档
查看>>
opencv安装指南
查看>>
矩阵常用归一化
查看>>
Oracle常用函数总结
查看>>
SpringCloud实战小贴士:Zuul的路径匹配
查看>>
【聚能聊有奖话题】Boring隧道掘进机完成首段挖掘,离未来交通还有多远?
查看>>
CMake 手册详解(二十)
查看>>
嵌入式 busybox自带的tftp、telnet、ftp服务器
查看>>
USNews大学排名遭美国计算机研究学会怒怼,指排名荒谬要求撤回
查看>>
struts1——静态ActionForm与动态ActionForm
查看>>
七大关键数据 移动安全迎来历史转折点
查看>>
各大电商纷纷瞄准机器人领域,备战双十一各显神功
查看>>
在AngularJS中学习javascript的new function意义及this作用域的生成过程
查看>>
盘点物联网网关现有联网技术及应用场景
查看>>
Windwos 08R2_DNS全面图文详解
查看>>
重拾黑客精神:后IT时代技术流的回归
查看>>
网络钓鱼大讲堂 Part3 | 网络钓鱼攻击向量介绍
查看>>
阿里云与Intel联合发布加密计算,亚洲首个云上“芯片级”数据保护
查看>>