写点什么

架构师训练营第 1 期 week6 总结

用户头像
张建亮
关注
发布于: 2020 年 10 月 31 日

1、分布式数据库

1.1主从复制

1.2一主多从复制:分摊读写压力,专机专用,便于冷备,高可用,增加了读的并发处理能力,但是无法解决单机数据量过大的问题;

1.3主主复制,同时只有一个主服务器可以写入,当写机器宕机后可以快速的用另一台主服务器继续提供数据写入的操作,但是还是无法解决单服务器数据过大的问题;

1.4数据分片,硬编码分片,需要处理大量的业务逻辑,可以用分布式数据库中间件来处理分库分表,但是分库分表后有些操作无法支持,如分页查询、跨库join等,需要用别的方式替换常规的分页查询;

2、NOSQL

2.1 CAP原理:一致性、可用性,分区容错性无法同时满足,可以达到最终一致性。达到最终一致性的几种解决方案:最终一致写冲突(如根据时间戳,最后写入覆盖)、客户端冲突解决(如同一个用户多个购物车,在查询的时候进行合并)、投票解决方案(如Cassandra写入数据时至少一半以上写入时才算写入成功,取数据时至少一半以上返回时才可以)

2.2 ACID与Base:ACID指的是原子性、隔离性、持久性、一致性,在传统的数据库模式下会满足,而Base指的是基本可用,允许损失部分可用性,如响应时间上的损失或功能上的损失,只要数据能达到最终一致即可。

3、zookeeper:

3.1 zab协议,是分布式一致性算法Paxos的一种具体实现,基本流程如下:

leader节点生成一个自增的全局唯一的64位id(高32位是epoch编号,每经过一次Leader选举产生一个新的leader,新的leader会将epoch号+1,低32位是消息计数器,每接收到一条消息这个值+1,新leader选举后这个值重置为0),即zid;

将带有zid的消息作为一个提案(Propose),发送给follower,

follower收到消息后先将Propose写入磁盘,并向leader返回一个ack;

leader接收到超过一半以上的ack以后,通知follower进行commit操作;

4、搜索引擎

4.1倒排序索引:将文档进行分词处理,记录每个词出现的位置,生成一个文档矩阵,通过某个词可以快速的查询出现该词的文档,当然可以额外记录该词出现的次数及位置信息等。

4.2 lucene准实时更新:lucene中引入了段的概念,将一个索引文件拆分为多个子文件,每个子文件叫做段,每 个段都是一个独立的可被搜索的数据集,索引的修改针对段进行操作。

4.3ElasticSearch:基于lucene,对索引进行分片,实现分布式;对索引进行备份,实现高可用。

5、Doris:海量KV引擎。

用户头像

张建亮

关注

还未添加个人签名 2020.07.29 加入

还未添加个人简介

评论

发布
暂无评论
架构师训练营第 1 期 week6 总结