架构师训练营第六周总结
不知不觉已经过了六周了,快一半时间了。
数据分片
数据量大,分布式存储,就需要用到数据分片
两种普通分片方法:
第一种方法扩展麻烦,需要自己组合数据
第二种方法需要维护一个外部数据存储表,这个表可能很大,也增加了数据查询的依赖性
使用分布式数据库中间件可以较方便的实现数据分片,中间件来负责分割与组合数据。
数据库部署方案
CAP原理
一致性:读取时返回最新的写入数据,或者错误,不要返回过期数据。
可用性:每次请求都能得到响应,不能失去响应或返回错误;允许响应过期数据。
分区耐受性:部分服务器节点之间消息丢失或延迟,系统依然可以操作。
对于分布式系统而言,系统环境复杂,分区耐受性必须保证。CAP原理即是在分布式系统必须要满足分区耐受性的前提下,可用性和一致性无法同时满足。
最终一致性:由于服务器节点消息丢失,导致不同服务器写入的数据未一致,当故障恢复时使数据一致。
简单冲突处理策略:根据时间戳,最后写入覆盖。
客户端冲突解决:合并同一用户不同客户端数据。
Cassandra分布式解决方案
Hbase架构
Log Structed Merge Tree
ACID与BASE
A原子性(Atomicity):全部完成或全部取消,不部分生效。
I隔离性(Isolation):事务之间不互相影响。一般通过锁实现。
D持久性(Durability):事务提交后,数据必须要成功保存到硬盘中。
C一致性(Consistency):合法数据(满足关系约束和函数约束)才可以写入到数据库。
BASE:
BA(Basically Available)系统出现不可预知故障时,允许损失部分可用性,如相应变慢,部分功能不可用。
S(Soft state)弱状态:允许不同节点的数据副本之间进行数据同步的过程存在延时。
E(Eventually consistent)最终一致性:经过一段时间的同步后,不同数据副本之间能最终一致。
分布式一致ZooKeeper
Doris - 海量 KV Engine
架构师要自己可以设计框架,Doris是一个分布式集群KV存储引擎。
关键技术点是数据分区、可用性管理。数据分区使用分布式一致性Hash算法,进行了一些优化,本质上还是基于虚拟节点。在集群管理中,分布式一致性Hash算法是很关键的一个算法。
可用性管理:
故障管理(分三级:瞬时失效、临时失效、永久失效)。
扩容:重新计算节点并迁移数据。
版权声明: 本文为 InfoQ 作者【王鑫龙】的原创文章。
原文链接:【http://xie.infoq.cn/article/13afe5a990b436f40c7ca8624】。
本文遵守【CC BY-NC】协议,转载请保留原文出处及本版权声明。
评论