NoSQL的一些关键问题

分布式系统的三个特性(CAP):
一致性(Consistency):在分布式系统中的所有数据备份,在同一时刻是否同样的值。
可用性(Availability):在集群中一部分节点故障后,集群整体是否还能响应客户端的读写请求。
分区容忍性/可靠性(Partition tolerance):集群中的某些节点在无法联系后,集群整体是否还能继续进行服务。
定律:任何分布式系统只可同时满足二点,没法三者兼顾。

数据分片:
就是把不同的数据分别放到不同的节点上,一般常使用两种方式:hash分片和范围分片
hash分片:
范围分片:bigtable
数据的可用性:
数据可靠性:
1.单机可靠性, 即写操作不会由于机器重启或者断电而丢失。
a控制fsync的调用频率
b使用日志型的数据结构, 会把写操作顺序的写入到一个日志文件中。 这个日志文件记录了操作行为,可以用于在出现故障后恢复丢失那段时间的数据,这样就把随机写变成顺序写了。
c通过合并写操作提高吞吐性能,数据先暂存在内存中,这样也方便对数据进行排序等操作,数据量到达一定量级后(如hdfs2.x 的128M),批量写入,可以提升写入效率
2.多节点间,主从同步。
如Redis采用了传统的主从数据同步的方式。所有在master上执行的操作,都会通过类似于操作日志的结构顺序地传递给slave上再执行一遍。如果 master发生宕机等事故,slave可以继续执行完master传来的操作日志并且成为新的master。可能这中间会导致一些数据丢失,因为 master同步操作到slave是非阻塞的,master并不知道操作是否已经同步线slave了。

数据一致性:
强一致性:HBase(借用底层HDFS)来实现强一致性(写所有节点成功才成功,读任意节点)
最终一致性:每对数据进行更改,就加一次版本号(类似于svn的版本管理),如(NA,NB,NC)在a节点(39,2,5)
b节点(38,1,5)每项数据的版本号都小于或等于a,直接更新数据即可,c节点(39,1,6)中有的数据比b旧,有的数据比较新这时就要解决冲突

参考资料:

  1. 500or less卷1:第13章 NoSQL生态系统 http://www.ituring.com.cn/article/4002

转载于:https://www.cnblogs.com/yangshuqing/p/7538446.html

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值