架构师训练营第六周学习总结
分布式数据库
分布式数据库可以通过主从复制、一主多从、主主复制的架构,来实现高可用,以及提高系统读并发能力
可以通过数据分片提高系统并发处理能力,以及系统存储能力
数据分片后无法直接执行多分片联合查询,也无法使用数据库事务,可以使用Cobar等分布式数据库中间件代理数据库操作,通过SQL解析、路由、查询结果合并实现多分片读写查询
分布式数据库集群伸缩必须有数据迁移,实践过程中,可以在初始阶段创建较大基数的数据库实例,这些实例通过hash余数等算法映射部署至不同服务器,服务器数量调整时,只需迁移部分数据库实例,调整这部分数据库实例对应的数据连接的IP地址
CAP原理
分布式数据库的三个要素:一致性Consistency,可用性Available,分区耐受性Partition tolerance
在分布式系统必须要满足分区耐受性的前提下,可用性和一致性无法同时满足
由于数据同步存在延迟,系统允许存在短暂的数据不一致,但数据同步完成后,所有服务器的数据必须是最终一致的
ZooKeeper
分布式一致性算法Paxos:
第一阶段:Prepare 阶段。Proposer 向Acceptors 发出Prepare 请求,Acceptors 针对收到的Prepare 请求进行Promise 承诺。
第二阶段:Accept 阶段。Proposer 收到多数Acceptors 承诺的Promise 后,向Acceptors 发出Propose 请求,Acceptors 针对收到的Propose 请求进行Accept 处理。
第三阶段:Learn 阶段。Proposer 在收到多数Acceptors 的Accept 之后,标志着本次Accept 成功,决议形成,将形成的决议发送给所有Learners。
ZooKeeper的Zab协议简化了Paxos算法,由Leader发起Propose,Follower返回ACK,再由Leader发起Commit,最终保证所有Follower的状态是一致的
ZooKeeper可以应用于选举主主集群的Master服务器,从而保证所有访问都能正确的识别主服务器,同时,ZooKeeper也可以通过共享集群节点的状态,管理集群的负载均衡和失效转移
搜索引擎
互联网搜索引擎的核心技术是网络爬虫和倒排索引
倒排索引通过维持词对应的文档列表,能迅速通过查询词获取相应文档
Lucense架构通过将索引文件分段的方式,实现实时索引更新
ElasticSearch封装Lucense架构,并通过类似数据库分片的索引分片,实现分布式架构
Doris案例分析
该案例展示创新技术产品如何推动落地的过程,设计的要点有:
当前现状
产品需求
产品目标
技术指标
逻辑架构
关键技术点
产品规划
该案例演示了NoSQL数据库集群的高可用实现和集群伸缩方案
高可用方案核心在于服务器分组,同时对所有分组写入,从任一分组读取,服务器失效时启用临时log服务器替代失效服务器完成写入,在失效恢复后从log服务器将新数据迁移回原服务器
集群伸缩方案得益于虚拟节点架构,数据迁移只需拷贝数据文件,扩容时对两个分组依次进行以下操作:将整个分组标记为临时失效,启用log服务器临时写入,增加物理节点后重新计算分配虚拟节点(包括数据的迁移),然后启动失效恢复流程从log服务器迁移新数据、
版权声明: 本文为 InfoQ 作者【文智】的原创文章。
原文链接:【http://xie.infoq.cn/article/7782bffbad1917993683f0446】。未经作者许可,禁止转载。
评论