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

1.分布式数据库

1,1:MySQL 主从复制(写入主服务器,mysql binlog记录操作日志,备库数据库有个线程拉取binlog后同步数据)


1.2:一主多从(在从服务器读取数据,多个从服务器同步主服务器数据)

• 分摊负载• 专机专用• 便于冷备• 高可用


1.3:主主复制(只能有一个主在被使用,另一个用做高可用,否则脑裂)

• 主主复制的两个数据库不能并发写入。

• 复制只是增加了数据的读并发处理能力,没有增加写并发能力和存储能力。

• 更新表结构会导致巨大的同步延迟。


1.4.数据分片:

1.4.1:实现方案:硬编码实现(加服务就得改代码,数据得迁移,无法执行多分片的联合查询,无法使用数据库的事务。)

1.4..2:映射表外部存储(必须要改代码,增加服务数据得迁移,无法执行多分片的联合查询,无法使用数据库的事务。)

1.4.3:使用分布式数据库中间件(myCat/Amoeba/Cobar)  相当于在数据库跟服务之间加了一层用来做分片跟路由的组件,

    默认是多加个一批实例,可以放到一个服务器上,如果加服务器,只改服务器地址迁移实例数据就可以了

1.4.4.比较成熟的分布式数据部署图(业务拆分+主从复制+分片拆分)



2:CAP 原理

2.1:概念:

C:(拉取最新数据要么返回错误,不能返回过期数据)[一致性Consistency]一致性是说,每次读取的数据都应该是最近写入的数据或者返回一个错误(Every read receives the most recent write or an error),而不是过期数据,也就是说,数据是一致的。

A:(服务接口可用,每次请求都应该有一个相应,不能返回错误或失去响应)

可用性Availability,可用性是说,每次请求都应该得到一个响应,而不是返回一个错误或者失去响应,不过这个响应不需要保证数据是最近写入的(Every request receives a (non-error)response, without the guarantee that it contains the most recent write),也就是说系统需要一直都是可以正常使用的,不会引起调用者的异常,但是并不保证响应的数据是最新的。


P:即使因为网络原因,部分服务器之间消息丢失或延迟,系统依然要可用

分区耐受性Partition tolerance,分区耐受性说,即使因为网络原因,部分服务器节点之间消息丢失或者延迟了,系统依然应该是可以操作的(The system continues to operate despite an arbitrary number of messages being dropped (or delayed) by the network between nodes)。

关于 CAP 原理,更准确的说法是,在分布式系统必须要满足分区耐受性的前提下,可用性和一致性无法同时满足。可以容忍很短时间内不一致,但必须保证数据最终一致性(一般由投票方式解决数据之间的冲突)



你可能感兴趣的:(架构师训练营第6周学习总结)