【架构师第 6 周】总结
本周主要学习了分布式系统技术选型的相关知识,知识面还是比较广的,需要接下来再针对每个知识点进行深入研究。
分布式存储:
分布式数据库
当数据量不断增加,单台服务器已经无法有效保证数据库性能,并发能力也严重下降,这个时候该怎么做?
数据分片:
分片的原因:降低读写压力
1、硬编码id取模
2、映射表方式
这两种用的都不多,因为都需要应用程序做额外的操作,带来不必要的复杂性。
分布式数据库中间件,可以解决上述问题,比如MyCat
优点:对应用透明
具体的工作原理:sql解析,路由规则(通过配置),执行
集群伸缩:
1、提前规划schema,扩容时将现有的schema迁移到新机器上。这个方式类似Redis的slot
2、主从复制实现伸缩
3、数据库跟着应用分开部署,业务分库
NOSQL
CAP原理
一个分布式系统中,一致性(C)、可用性(A)、分区容错性(P)三个条件无法同时满足。
BASE
基本可用、软状态(允许系统中的数据存在中间状态)、最终一致
Doris原理
ZooKeeper原理:
zk主要保证一致性,所以会牺牲一定的可用性。
集群中只有一台主服务器,所有从服务器和主服务器之间都是联通的,任意访问一台从服务器获取到的数据都是最新的,一致的。
zk中的数据结构是树状结构,每个节点是一个Node。node分为持久化节点和临时节点,临时节点在client断开后就删除了
由于主服务器只有一台,如果主服务器出现故障,集群需要重新选主,在选出新leader前,整个集群不可用(为了保证一致性)。zk集群使用Zab协议选主,server有三种状态:
LOOKING:当前Server不知道leader是谁,正在搜寻
LEADING:当前Server即为选举出来的leader
FOLLOWING:leader已经选举出来,当前Server与之同步
选主过程需要提案被半数以上的fllower接受
评论