11 2019 档案
摘要:一般来说,构建分布式系统的目的一是增加系统容量,二是提高系统的可用性。转换成技术方面,也就是宛成以下两件事。 大流量处理。通过集群技术把大规模并发请求的负载分散到不同的机器上 关键业务保护。提高后台服务的可用性,把故障隔离起来阻止多米诺骨牌效应(雪崩效应)。如果流量过大,需要到业务降级。 说白了就是
阅读全文
摘要:作为程序员,我们在为应用程序开发api时,最常用的一个操作就是对象的JSON序列化和反序列化。这往往导致一种错觉:世界上的数据类型往往是字符(中文、英文等等)居多。但这是错误的。视频、音频、图片都是用数字表示的,这些数据类型就占据了全世界网络带宽的98%以上,单纯的字符等其它数据类型只占了不到2%。
阅读全文
摘要:其实,消息队列中队列二字带有误导性,现代消息队列组件的所能提供的功能已远远超出了数据结构中 队列 所能代表的范围。 消息队列的演进 队列模型 传统的队列功能,先进先出, 严格有序 。如果有多个消费者,则需要竞争消息,每份消息只能消费一次。 发布 订阅模型 发布者:消息的发送主 订阅者:消息的接收方
阅读全文
摘要:一般单次I/O请求会分为两个阶段,每个阶段对于I/O的处理方式是不同的 I/O会经历一个等待资源的阶段 阻塞,指的是在数据不可用时,I/O请求会一直阻塞,直到数据返回 数据不可用时,立即返回,直到被通知资源可用为止 使用资源阶段 同步:读取或者写入数据时会阻塞,直到读取或写入完成 在读取或者写入数据
阅读全文
摘要:概念 在一个分布式系统(指互相连接并共享数据的节点的集合)中,当涉及读写操作时,只能保证一致性、可用性、分区容错性三者中的两个,另外一个必须被牺牲 Consistency 对某个指定的客户端来说,读操作保证能够返回最新的写操作结果 Availaility 非故障的节点在合理的时间内返回合理的响应(不
阅读全文
摘要:同步非阻塞 (1)和(2)分别是数据是收和发运作,只有收到才能发送,所以是同步的。 但即使因为网络原因没有收到或者发送不出,也不会阻塞干等着,而是做个“记号”,把等待的这段CPU时间用来处理其他请求 单个处理流程是阻塞的,但整个程序却是非阻塞的 单个请求处理来看是分散的、阻塞的,但因为都 复用 了一
阅读全文
摘要:大量key在同一时间过期,注意什么? 如果过期时间过于集中,会导致Redis可能会出现短暂的卡顿现象。严重的话会出现缓存雪崩,一般需要在时间上加一个随机值, 使用过期时间分散一些。 Redis分布式锁的实现原理 setnx命令设置唯一的key,只有不存在时才返回成功,这就相当于争抢锁。再使用expi
阅读全文
摘要:补码两种定义: 正数的补码等于他的原码;负数的补码等于反码+1 负数的补码等于他的原码自低位向高位,尾数的第一个‘1’及其右边的‘0’保持不变,左边的各位按位取反,符号位不变。 其实上面那两段话,都只是补码的求法,而不是补码的定义。很多人以为求补码就要先求反码,其实并不是。 0其实归到正数了, 所以
阅读全文
摘要:TCP是一个全双工协议,意味着在Client和Server都可以接收和发送数据。 所以,从另一个角度理解建立连接的目的就是要确保双方都要知道对端的收发消息的能力是正常的
阅读全文
摘要:Redis是一种键值(key Value)数据库,相对于关系型数据库,它也被叫作非关系型数据库 Redis中,键的数据类型是字符串,但是为了非富数据存储方式,方便开发者使用,值的数据类型有很多 字符串 (string) 这种数据类型非常简单,对应到数据结构里面,就是 字符串 列表 (list) 支持
阅读全文

浙公网安备 33010602011771号