架构师训练营 - 学习总结 第 6 周

发布于: 2020 年 07 月 15 日

1、本周先回顾了一致性哈希的重要程度和场景:

一致性哈希,常用于分布式集群,解决当集群机器横向扩展时,数据大批量访问不一致的问题,比如缓存集群或数据库集群。

初始化操作步骤:

建环,服务器节点放入环(包含虚拟节点),key的存放和查找,顺时针查找最接近的

2、数据分片方案

目标:数据量太大,尤其是单表,写操作的压力特别大,

要把单表拆分成多个分片,降低单表或单机的写压力。

方案1:硬编码实现,比如 id为单数访问服务器1,双数访问服务器2;

方案2、映射表,在外部存储每个id与服务器的映射关系,映射表数量也变的非常大,而且要访问2次,增加时间和代码复杂度;

方案3:用分布式数据库中间件,用中间件进行数据分片和路由;

中间件有MyCat、Cobar(对代码透明,通过SQL判断分片数据库在哪里)、Sharding

分布式数据库中间件,一般都提供 跨分片查询能力,自动数据合并能力。

3、数据库集群一般不使用一致性哈希,而是直接使用余数哈希,并且尽量避免数据迁移:

实践:一般在每个节点放置多个实例,在需要水平扩容时,直接迁移部分实例到新的服务器上;

所以,一开始就要考虑清楚未来需要多少分片,因为不允许扩容实例了。

如果真的超过一开始的分片数量,必须扩容分片,一般先增加从库,恢复数据库的完整备份,再用binlog追加,然后双写,再修改分片。

4、拆分业务,自然数据库也就按业务分库了

需要注意的是,避免直接访问其它业务的数据库,要通过API访问。

然后根据业务不同,数据量大的业务要分片,数据量小的不分了,直接走主从即可。

5、讲述了CAP原理、Base理论

CAP是分布式系统的设计理论基础,而Base强调的是最终一致性。

发布于: 2020 年 07 月 15 日 阅读数: 3
用户头像

水边

关注

还未添加个人签名 2019.04.14 加入

还未添加个人简介

评论

发布
暂无评论
架构师训练营 - 学习总结 第 6 周