第 05 周 技术选型 -02 学习总结
面试题什么是一致性Hash?
- 用途 : 是分布式缓存集群中用来解决,当集群扩容后数据访问不一致的问题.
- 实现 :
- 先建立一个2^23^大的一个环.
- 将服务器节点的若干虚拟节点的Hash值放在这个环上.
- 将要查找的Key的Hash值也放在这个环上.
- 沿着环顺时针查找离它最近的服务节点.
MySQL 复制
- 主从复制
- 用来做读写分离,提升性能,减低压力
- 主主复制
- 解决数据库服务器失效问题,提升高可用.
数据分片 解决单表大的问题
先做业务分库.在做主主复制,主从复制.在做数据库分片
CAP 原理
- C 一致性
- 一致性是说,每次读取的数据都应该是最近写入的数据或者返回一个错误( Every readreceives the most recent write or an error),而不是过期数据,也就是说,数据是一致的
- A 可用性
- 可用性是说,每次请求都应该得到一个响应,而不是返回一个错误或者失去响应,不过这个响应不需要保证数据是最近写入的( Every request receives a( non-error)response, without the guarantee that it contains the most recent write),也就是说系统需要一直都是可以正常使用的,不会引起调用者的异常,但是并不保证响应的数据是最新的。
- P 分区耐受性
- 分区耐受性说,即使因为网络原因,部分服务器节点之间消息丢失或者延迟了,系统依然应该是可以操作的( The system continues to operate despite an arbitrary number of messages being dropped (or delayed) by the network between nodes)
CAP 原理
- CAP 无法同时满足.
- CAP 中 C 与 A 是矛盾的.
CAP 原理 更准确的说法是,在分布式系统必须要满足分区耐受性的前提下
可用性和一致性无法同时满足。
CAP原理与数据一致性冲突.
最终一致性
- 最终用户拿到数据是一致的.
最终一致性写冲突(如何达成最终一致性)
- 简单冲突处理策略:根据时间戳,最后写入覆盖。
- 客户端冲突解决
- 投票解决冲突(Cassandra)
Cassandra 架构
- 连接任意节点,节点计算要写入的其它节点.如果3个有2个写入成功则成功.查询时有2个节点是一致的就返回.如果不相同则都拿出来投票决定.
Hbase架构
- HRegion 使用HDFS 存储多份保证数据高可用.
HBBase 存储结构 : Log Structed Merge Tree( LSM 树)
- 与Mysql(B+Tree )对比
- 解决HDFS不能修改问题
- 写入性能好
ACID 关系型数据库
- 原子性(A)
- 隔离性(I)
- 持久性(D)
- 一致性 ©
BASE 非关系型数据库
- 基本可用(BA)
- 软状态(s)
- 最终一致性(E)
分布式系统关键技术点
- 路由选择
- 集群扩容
- 可用性
分布式一致性算法Paxos
- 三个角色
- Proccess
- Acceptor
- Learner
- 三个阶段
- Prepare 阶段
- Accept 阶段
- Learn 阶段
Zookeeper 应用场景
- 配置管理
- 选Master
- 集群管理(负载均衡与失效转移)
如何引进新技术?
- 把握住问题
- 要解决什么问题?是不是痛点?
评论