高可用技术之数据库分库分表技术
Posted Java技术汇
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了高可用技术之数据库分库分表技术相关的知识,希望对你有一定的参考价值。
大流量、高并发下
随着互联网发展:
程序来说话:拆、代、分
电商系统:会员中心、商品中心、交易中心三个独立模块sso
数据库:分库分表
数据压力、查询效率:读写分离
1:Oracle
互联网公司不喜欢用?太贵类 甲骨文500百万RMB
数据量很大、数据量 能力强
2:mysql
开源、免费 广泛 互联网用的很多
缓存、限流、降级、读写分离、分库分表。
Mysql读写分离 :
Mysql proxy/atlas/tddl/
1.数据同步的延迟
2.虽然解决高并发问题
3.没有解决高可用。
高可用HA:没有单点故障的问题?
TDDL方式实现
高可用:
1.可以进行自动的切换master/slave
2.可以监控mysql状态
3.水平拆分、分表散列
4.支持多个数据源
分库分表类型:
水平/垂直
垂直:将一个属性比较多、数据大的表拆分、通过降低表的大小来提高性能。
User:
Id、name、age、phone、city、password、img、address、tel...
User-base:
Id name password
User_info: id、age 、phone、city...
User表的数据字段分两个表存储:user_base/user_info
特点:
1、每个库(表)的结构都不一样
2、每个库(表)的数据都(至少有一列)一样
3、每个库(表)的的并集时全量数据。
水平:以某个字段按照一定的规律(去模)将一个表的数据分到过个表(库)中
把30岁的和31岁分别存两张表
User:
Id、name、age、phone、city、password、img、address、tel
1 wukong 30
3、Baiqi 30
User:
Id、name、age、phone、city、password、img、address、tel
2 luban 31
4、zhangfei 31
特点:
1、每个库(表)的结构都一样
2、每个库(表)的数据都不一样
3、每个库(表)的的并集时全量数据。
分库分表策略:
Hash取模:通过一个字段进行hash取code、一致性hash
Range范围:按时间、id、年份划分
List预定义:(明天讲这个知识点)100库 扩展性很好。风投
分库分表问题:
多数据库管理
多个数据源
跨库事务和join
Mysql5.7x版本支持XA分布式事务 atomikos(java xa分布式事务框架个)
查询数据结果集合
通过业务避免这个问题
异构方式内存计算(spark、ES)
分布式全局唯一id(另外一节课讲过方案)
很多解决方案
推荐阅读:
(点击阅读原文可快速进入)
以上是关于高可用技术之数据库分库分表技术的主要内容,如果未能解决你的问题,请参考以下文章