架构师课程第 6 周作业和感想

用户头像
tuuezzy
关注
发布于: 2020 年 07 月 15 日

第6周了,竟然已经坚持了一个半月,这在以往是不太常见的。因为一般的培训课程跨度也就是一个月,这次要5个月,能够坚持下来确实需要努力。

1、简述CAP原理:

CAP是3个单词的缩写,CAP指的是在一个分布式系统中,需要考虑满足Consistency(一致性)、 Availability(可用性)、Partition tolerance(分区容错性)。CAP原理指的是,这三个要素最多只能同时实现两点,不可能三者兼顾。

一致性(C):在分布式系统中的所有数据备份,在同一时刻是同样的值。(更新操作执行成功后所有的用户都应该读到最新的值,要求所有的备份数据保持一致)

可用性(A):在集群中一部分节点故障后,集群整体还能响应客户端的读写请求。(要求数据需要备份)。

分区容忍性(P):这个原理的提出者有前后两种表述。1、出现消息丢失或者分区错误时系统能够继续运行。2、当出现网络分区后,系统能够继续“履行职责”。

或者说,分布式系统在遇到任何网络分区故障的时候,仍然能够保证对外提供服务,除非是整个网络环境都发生了故障。(要求分区)

CAP原理的简单证明:

如果满足分区容错性P,则需要多个分区。所有假设两个节点集{G1, G2},G1和G2有同一份数据的保存记录。

现在由于网络分片导致G1和G2之间所有的通讯都断开了,如果在G1中写新数据,在G2中读刚写的数据,那么:

1)如果G1中的数据在G2中有备份。即满足A可用性。由于G1与G2不能通讯,只能返回G2中的旧数据。所以无法满足C一致性。

2)如果G1中的数据在G2中没有备份。G1写的这份数据唯一且最新。但是由于G2没有数据,就无法响应,不能返回正确的最新数据。无法满足A可用性。

综上,一个分区系统只能满足A和C的一个。一般来说P是必须要保证的,否则就没法提供“有备份的”分布式数据存储服务了。如果满足AC,可以把所有数据都放到同一个机器,这样就放弃了分布式。则需要容忍系统暂时的不能对外提供服务。



要明确,这是为了描述分布式系统的特性而产生的一个概念。

======课程感想======

写在前面:

首先想说的是课件这里有个错误,性能计数器不应该是网站测试的主要指标,而是一种统计方式。从它的实现方式来看,也是体现了“counter”计数器的一个软件,而不是指标本身。这里做了一下考证,百度查得,百度文库对load Runner有个说法,叫:性能计数器是描述服务器或操作系统性能的一些数据索引。

而在哪本书里面提到了这件事呢?

京东查得, 《软件性能测试与LoadRunner实战教程》这本书提到了这件事,目录中有:

4.13.1 性能计数器 127

4.13.2 添加性能计数器指标 127

(当然这本书本身编写质量是比较差的)

课件也在阈值和阀值上有个错误。本没有阀值这个词,阀是“阈”字的错字。

===

正文:

本周主要讲了性能测试专题。性能测试可细分为性能测试、负载测试、压力测试、稳定性测试。

讲了一个很多人难以接触到的话题:全链路压力测试。

当所有的性能和压力测试都比较成规模的时候,有需求的话,就可以进行优化了。

我确实看到过众多系统没什么事瞎优化的实例。优化完,还不如原来,原来2台机器就可以运行的程序,优化后使用10台机器运行,还跑不过原来的机器,网络交互的开销直接抵消掉了将数据库分离的性能提升,也是比较搞笑的。

话说回来,用foxit reader打开课件还真是可以优化……翻页有点慢,如果能够预读取就好了。

第二节课用Doris详细讲解了架构的一些选型知识和这个海量的KV数据引擎的做法。

这个项目树立了一个比较高的目标,并且实现了。一个东西能不能做成,一个项目组能否生存,确实和很多因素相关,但是首先要注意的就是必须有实在的产品需求,为了解决某些问题、满足某些用户需求引起了软件产品开发;很少有软件产品是专门开发,然后引领用户需求的。



另外,上周的缓存,对memcached调用的代码有个错误,设置缓存过期时间的时候,如果是设置为10分钟,应该是传入参数10*60=600秒。而这个参数,源代码中允许传入两种情况的数据,一种是直接传入UNIX时间戳,一种是传入从现在开始的过期时间(秒)。后台程序会判断到底传入的是哪种。因为允许的最大过期时间是30天,当传入数据超过了30天时,就认为传入的是UNIX时间戳了。具体解释如下:

/*

 * given time value that's either unix time or delta from current unix time, return

 * unix time. Use the fact that delta can't exceed one month (and real time value can't

 * be that low).

 */



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

tuuezzy

关注

还未添加个人签名 2017.10.17 加入

还未添加个人简介

评论

发布
暂无评论
架构师课程第6周作业和感想