2020.10.26-2020.11.01 学习总结
本周学习目标
分布式系统使用到的中间件及其原理:CAP原理;数据存储——分布式关系型数据库和nosql数据库;分布式数据一致性解决方案——zookeeper等配置管理中心;大量数据的检索——搜索引擎;以及一个nosql解决方案的应用举例。
分布式关系型数据库
关系型数据库的特点:ACID,但当数据量不断增加时,数据库存储及访问瓶颈很容易出现,同时如何提高关系型数据库的可用性?
为提高数据库的存储量,可以对数据库进行分库分表,使用什么样的规则进行分库分表?避免查询时同时查多个库和多个表,导致分页处理很困难。分库分表前已经预先估算了可能的存储量,那么如何进行扩容?估计一个最大分库个数后,让业务使用逻辑上的分片连接,与真实的物理连接建立一张映射表。
NOSQL数据库
可支持大数据量存储,可线性伸缩,能够保证数据的最终一致性,且数据均有副本,保证了可用性。常用的nosql数据库是如何保持可用性和一致性的呢?
Cassanddra使用投票选举的方式保证对外的返回一致,用户可以访问任意一个节点,任意一个节点上都有路由表确定数据应该存放到哪几个节点上,然后又该节点进行写入,如果有超过半数的节点写入成功,就认为是写入成功了。
Hbase使用Hmaster进行路由选择,告诉应用程序应该连接哪个HRegionServer进行写入或者读取,如果Hmaster是单节点的话则存在可用性问题,因此Hmaster也是一个集群,通过zookeeper进行管理。
ZOOKEEPER
分布式一致性的解决方案,使用Zab协议进行选举。集群中有一个leader,应用程序发起请求后,接收到请求的follwer向leader发起请求,leader生成提案询问所有的follower,当所有follower进行了ack确认后,leader把选举结果commit到所有的follower上,这样每个节点上就存有一致的数据了。
评论