摘要: CPU中央处理器是英语“CentralProcessingUnit”的缩写,即CPU,CPU一般由逻辑运算单元、控制单元和存储单元组成。在逻辑运算和控制单元中包括一些寄存器,这些寄存器用于CPU在处理数据过程中数据的暂时保存,简单的讲是由控制器和运算器二部分组成。 内存在计算机的组成结构中,有一个很 阅读全文
posted @ 2020-02-29 21:06 CodeNow99 阅读(1507) 评论(0) 推荐(0) 编辑
摘要: [toc] 讲解 redis 是为了什么? 本课程主题:高并发、亿级流量、高性能、海量数据的场景,电商网站的商品详情页系统的缓存架构 商品详情页系统,大型电商网站,会有很多部分组成,但是支撑高并发、亿级流量的,主要就是其中的大型的缓存架构,在这个大型的缓存架构中,redis 是最最基础的一层 高并发 阅读全文
posted @ 2020-02-29 16:49 CodeNow99 阅读(268) 评论(0) 推荐(0) 编辑
摘要: [toc] fork 耗时导致高并发请求延时 RDB 和 AOF 的时候会存在 RDB 快照生成、AOF rewrite,耗费磁盘 IO 的过程 主进程 fork 子进程的时候,子进程是需要拷贝父进程的空间内存页表的,也是会耗费一定的时间的 一般来说,如果父进程内存有 1 个 G 的数据,那么 fo 阅读全文
posted @ 2020-02-29 16:48 CodeNow99 阅读(352) 评论(0) 推荐(0) 编辑
摘要: [toc] 节点间的内部通信机制 基础通信原理 redis cluster 节点间采取 gossip 协议进行通信 gossip:互相之间不断通信,保持整个集群所有节点的数据是完整的 而集中式是将集群元数据(节点信息,故障,等等)集中存储在某个节点上; 经典的集中式中间件 zookeeper 他们基 阅读全文
posted @ 2020-02-29 16:45 CodeNow99 阅读(559) 评论(0) 推荐(0) 编辑
摘要: [toc] 讲解分布式数据存储的核心算法,数据分布的算法 hash 算法 一致性 hash 算法(memcached) redis cluster 的 hash slot 算法 用不同的算法,就决定了在多个 master 节点的时候,数据如何分布到这些节点上去,解决这个问题 看到这里的时候,已经明白 阅读全文
posted @ 2020-02-29 16:42 CodeNow99 阅读(458) 评论(0) 推荐(0) 编辑
摘要: [toc] 课程前说明 后面几个章节会老提到 读写分离和 master。之前的课程讲解中说了读写分离后的水平扩容是通过扩容 slave 来达到的。 但是在实际生产环境中,读写分离支持不是很好,特别的 java 这种客户端,可以做到但是稍微复杂 单机 redis 在海量数据面前的瓶颈 之前讲解的一主多 阅读全文
posted @ 2020-02-29 16:39 CodeNow99 阅读(259) 评论(0) 推荐(0) 编辑
摘要: [toc] sdown 和 odown 转换机制 sdown 和 odown 是两种失败状态 sdown 是主观宕机 一个哨兵如果自己觉得一个 master 宕机了,那么就是主观宕机 odown 是客观宕机 如果 quorum 数量的哨兵都觉得一个 master 宕机了,那么就是客观宕机 sdown 阅读全文
posted @ 2020-02-29 16:36 CodeNow99 阅读(323) 评论(0) 推荐(0) 编辑
摘要: [toc] 两种数据丢失的情况 异步复制导致的数据丢失 因为 master slave 的复制是异步的,所以可能有部分数据还没复制到 slave,master 就宕机了,此时这些部分数据就丢失了 脑裂导致的数据丢失 何为脑裂?如上图由于一个集群中的 master 恰好网络故障,导致与 sentina 阅读全文
posted @ 2020-02-29 16:35 CodeNow99 阅读(499) 评论(0) 推荐(0) 编辑
摘要: [toc] 哨兵的介绍 sentinel 中文名是哨兵 哨兵是 redis 集群架构中非常重要的一个组件,主要功能如下 集群监控:负责监控 redis master 和 slave 进程是否正常工作 消息通知:如果某个 redis 实例有故障,那么哨兵负责发送消息作为报警通知给管理员 故障转移:如果 阅读全文
posted @ 2020-02-29 16:33 CodeNow99 阅读(188) 评论(0) 推荐(0) 编辑
摘要: [toc] 什么是 99.99% 高可用? 不可用:系统挂掉,很难恢复起来,短时间内都不行,这就不可用 高可用:全年 99.99/99.9/99 % 的时间都能正常提供服务就是高可用 这里有一个比较学术点的解释: 可用性的高低 是使用 不可用时间 占 总时间 的比例来衡量。不可用时间是从故障发生到故 阅读全文
posted @ 2020-02-29 16:30 CodeNow99 阅读(568) 评论(0) 推荐(0) 编辑
摘要: [toc] 复制的完整流程 1. slave node 启动,仅仅保存 master node 的信息 但是复制流程没开始,master 信息包括 host 和 ip , 那么是从哪儿来的?是在配置文件 redis.conf 里面的 slaveof 配置的 2. slave node 定时检查是否需 阅读全文
posted @ 2020-02-29 16:24 CodeNow99 阅读(201) 评论(0) 推荐(0) 编辑
摘要: [toc] 主从架构的核心原理 当启动一个 slave node 的时候,它会发送一个 PSYNC 命令给 master node, 如果是重新连接:master node 仅仅会复制给 slave 部分缺少的数据; 如果是首次连接:会触发一次 full resynchronization(全量同步 阅读全文
posted @ 2020-02-29 16:20 CodeNow99 阅读(252) 评论(0) 推荐(0) 编辑
摘要: [toc] redis 高并发的思路:redis replication 主从架构 读写分离 水平扩容支撑高并发 本章节主要讲解 redis replication 的最最基本的原理,作为铺垫 图解 redis replication 基本原理 在前一章节基本上已经讲过了,如上图差不多。写操作成功之 阅读全文
posted @ 2020-02-29 16:19 CodeNow99 阅读(235) 评论(0) 推荐(0) 编辑
摘要: [toc] redis 高并发跟整个系统的高并发之间的关系 搞高并发的话,不可避免的要把底层的缓存搞得很好,这里就是 redis 使用 mysql 来支撑高并发的话,就算做到了,那么也是通过一系列复杂的分库分表方案。订单系统中是有事务要求的,QPS 到几万,就已经比较高了,很难提升上去了 要做一些电 阅读全文
posted @ 2020-02-29 16:15 CodeNow99 阅读(521) 评论(0) 推荐(0) 编辑
摘要: [toc] 在企业中,持久化到底是怎么去用得呢?数据备份和各种灾难下的数据恢复,是怎么做得呢? 企业级的持久化的配置策略 在企业中,RDB 的生成策略,用默认的也差不多,如果有可能改动的地方,可能是如下两个配置: save 60 10000:如果你希望尽可能确保说,RDB 最多丢 1 分钟的数据,那 阅读全文
posted @ 2020-02-29 16:02 CodeNow99 阅读(169) 评论(0) 推荐(0) 编辑
摘要: 重新安排进度。我喜欢 P.Fagg,一个具有丰富经验的硬件工程师的忠告: “避免小的偏差(Take no small slips) ” 。 也就是说,在新的进度安排中分配充分的时间,以确保工作能仔细、彻底地完成,从而无需重新确定时间进度表。 简单、武断地重复一下 Brooks 法则: 向进度落后的项 阅读全文
posted @ 2020-02-29 14:51 CodeNow99 阅读(592) 评论(0) 推荐(0) 编辑
摘要: 现在,我并不认为软件经理内在的勇气和坚持不如厨师,或者不如其他工程经理。 但为了满足顾客期望的日期而造成的不合理进度安排, 在软件领域中却比其他的任何工程领域要普遍得多。 而且,非阶段化方法的采用,少得可怜的数据支持,加上完全借助软件经理的直觉,这样的方式很难生产出健壮可靠和规避风险的估计。 显然我 阅读全文
posted @ 2020-02-29 14:47 CodeNow99 阅读(150) 评论(0) 推荐(0) 编辑
摘要: 特别需要指出的是,不为系统测试安排足够的时间简直就是一场灾难。 因为延迟发生在项目快完成的时候。直到项目的发布日期,才有人发现进度上的问题。 因此,坏消息没有任何预兆,很晚才出现在客户和项目经理面前。 另外,此时此刻的延迟具有不寻常的、严重的财务和心理上的反应。 在此之前,项目已经配置了充足的人员, 阅读全文
posted @ 2020-02-29 14:45 CodeNow99 阅读(201) 评论(0) 推荐(0) 编辑
摘要: 第二个谬误的思考方式是在估计和进度安排中使用的工作量单位:人月。 成本的确随开发产品的人数和时间的不同,有着很大的变化,进度却不是如此。 因此我认为用人月作为衡量一项工作的规模是一个危险和带有欺骗性的神话。 它暗示着人员数量和时间是可以相互替换的。 阅读全文
posted @ 2020-02-29 14:42 CodeNow99 阅读(187) 评论(0) 推荐(0) 编辑
摘要: 对这种弥漫在编程人员中的乐观主义,理应受到慎重的分析。Dorothy Sayers 在她的 “The Mind of the Maker”一书中,将创造性活动分为三个阶段:构思、实现和交流。书 籍、计算机、或者程序的出现,首先是作为一个构思或模型出现在作者的脑海中,它与时间 和空间无关。接着,借助钢 阅读全文
posted @ 2020-02-29 14:40 CodeNow99 阅读(112) 评论(0) 推荐(0) 编辑