第 6 周作业
作业一
简述 CAP 原理
一致性Consistency,每次读取的数据都应该是最近写入的数据或者返回一个错误(Every read receives the most recent write or an error),而不是过期数据,也就是说,数据是一致的。
可用性Availability,每次请求都应该得到一个响应,而不是返回一个错误或者失去响应,不过这个响应不需要保证数据是最近写入的(Every request receives a (non-error) response,without the guarantee that it contains the most recent write),也就是说系统需要一直都是可以正常使用的,不会引起调用者的异常,但是并不保证响应的数据是最新的。
分区耐受性Partition tolerance,即使因为网络原因,部分服务器节点之间消息丢失或延迟了,系统依然应该是可以操作的(The system continues to operate despite an arbitrary number of messages being dropped (or delayed) by the network between nodes)。
在分布式系统必须要满足分区耐受性的前提下,可用性和一致性无法同时满足。绝大多数的场景,都需要牺牲强一致性来换取系统的高可用性,系统往往只需要保证【最终一致性】,只要这个最终时间是在用户可以接受的范围内即可。即一段时间内是不一致的,恢复后数据一致。
针对 Doris 案例,用 UML 时序图描述 Doris 临时失效的处理过程
作业二:学习总结
简单总结一下,本章课程安排上讲了分布式关系数据库、CAP原理、Zookeeper、搜索引擎、Doris的分析,围绕分布式系统架构如何实现高可用,在绝大部分场景中牺牲强一致性,通过【最终一致性】确保不影响用户体验,且最终数据的一致性。讲解了在服务器宕机、扩容时的思考方向,及要如何处理。
除了技术角度,通过Doris的案例,强调了架构师沟通能力的重要性:怎么去说服公司的技术决策人员及业务团队支持自己的设计,问题要讲清楚,目标也要讲清楚。架构师做事情时的思维方式:通过这样一个创新方案,自己的技术能力提升的同时,其他参与者及整个公司的技术层面都得到了提升,并且解决了公司自己特有的困难,实现业务价值,让公司能更好的为用户提供服务。大家都满意了,参与方实现共赢,得到所有相关人员的支持才能把事情做成。
评论