Week6 学习总结
分布式数据库与NoSQL
根据老师讲到的分布式数据库知识及网上查到的,做以下总结:
一、分布式数据库的数据存储
将数据分布到不同的节点上的方式有:
哈希分布:比如按数据主键进行一致性哈希分布
顺序分布:将数据按照主键切分为有序的范围,每个有序范围内的数据存储到一个节点上
根据哈希/顺序范围,负载均衡分布:分布式存储系统自动识别负载(机器Load值、CPU、内存、磁盘、网络、QPS、线程等资源使用率)高的节点,将它服务的部分数据迁移到其他机器,实现自动负载均衡
二、数据节点高可用
在分布式存储系统中,随着集群规模变得越来越大,故障发生的概率也越来越大。大规模集群每天都有故障发生,其中出现故障最高概率的是:单机故障、磁盘故障。
为了保证分布式存储系统的高可靠和高可用,需要对每个节点的数据进行多副本复制备份:
主副本(Primary)一般只有一个,可以提供读 / 写服务;
备副本(Backup)可以有多个,不对外服务 / 提供只读服务。
若主副本出现故障,需要选举一个备副本成为新的主副本,这个操作成为“选举”。
可以通过总控节点租约协议、分布式锁、选举协议比如Paxos协议(使用典例:ZooKeeper)等进行新主副本的选举。
三、数据库的部署方案
单一
两个web服务及两个数据库(业务分离)
综合部署方案(主从、主主复制 、分片等)
四、如何做集群的伸缩
现实中使用余数hash算法分配数据
一开始在规划数据库时就要把所有的schema都提前规划好了,之后在增加服务器时,把现有的schema迁移到新的服务器,如下图所示
评论