分布式数据库
1.数据库备份
主从复制
主主复制
2.数据库分片
当数据库数据过大时候需要分片
写操作的压力特别大
分片方法:
1)硬编码实现数据分片,例如奇数和偶数分配
2)映射表外部存储:相对于硬编码方式更加灵活,但是不常用原因在于:多一次数据库访问,复杂性增加
3)分布式数据库中间件
3.如何做分布式数据库集群的伸缩
数据迁移:采用余数 hash,数据库分片,取模之后迁移对应的片
4.数据库部署方案
1)单一服务器
2)读写分离:主从复制实现伸缩
3)业务分库:对应业务拆分服务器,不同的数据库部署到不同的服务器上,供不同的客户端去访问
4)综合部署方案:根据业务情况对不同的业务服务器进行不同处理:例如访问压力小的不需要分片,访问压力大的分片主从复制等
5.CAP 原理
数据库分片的指导性原理:
C(Consistency):一致性
每次读取的数据,都应该是最近写入的数据或者返回一个错误,而不是过期数据,也就是说,数据是一致性。
A(Availability):可用性
每次请求都应该得到一个相应,而不是返回一个错误或者失去响应,不过这个响应不需要保证数据是最近写入的,也就是说系统需要一直都是可以正常使用的,不会引起调用者的异常,但并不保证数据是最新的。
P(Partition tolerance):分区耐受性
即使因为网络的原因,部分服务器节点之间消息丢失或者延迟了,系统依然应该是可以操作的。
三者是不能同时满足的,满足分区耐受性的情况下,可用性和一致性是无法同时满足的
最终一致性:
最终写一致:时间戳
客户端解决冲突
投票决定解决冲突
Hbase 架构如何缓解 cap:一致性高,可用性差
ACID 与 BASE
NoSQL
Doris - 海量 KV Engine
关键技术点-数据分区
基于虚拟节点的分区算法
评论