分布式AKF拆分原则 时间: 2022-11-07 | 分类: jiagou | 阅读: 3336 字 ~7分钟 当我们需要分布式系统提供更强的性能时,该怎样扩展系统呢?什么时候该加机器?什么时候该重构代码?扩容时,究竟该选择哈希算法还是最小连接数算法,才能有效提升性能? 在面对 Scalability 可伸缩性问题时,我们必须有一个系统的方法论,才能应对日益复杂的分布式系统。这一讲我将介绍 AKF 立方体理论,它定义了扩展系统的 3 个维度,我们可以综合使用它们来优化性能。 阅读全文 »
redis sds 对齐理解 时间: 2022-11-04 | 分类: redis | 阅读: 945 字 ~2分钟 Redis sds 的源码中,使用了 __attribute__ ((__packed__)) ,一般情况下,结构体会按其所有变量大小的最小公倍数做字节对齐,而用packed修饰以后,结构体则变为按1字节进行对齐。这个最小公倍数如何进行理解呢? 阅读全文 »
Redis sentinel功能 时间: 2022-11-04 | 分类: redis | 阅读: 21803 字 ~44分钟 Redis Sentinel(Sentinel)用于为Redis提供高可用性,这就意味着使用sentinel能创建一个故障时不需要人工立即参与修复的环境。此外,sentinel还能实现其他的功能,如监控,提醒,为客户端提供配置**( monitoring, notifications and acts as a configuration provider for clients.) 阅读全文 »
Redis的BIO系统 时间: 2022-10-25 | 分类: redis | 阅读: 2189 字 ~5分钟 Redis通过bio系统完成两件事,一是进行Aof持久化,也就是将写入到系统的page cache的数据fsync到磁盘中;二是关闭文件。为了完成这件任务,其采用了任务队列的方式,每个任务都是一个线程来完成,任务会被放到任务队列中,然后由执行任务线程取走,如果队列空,则阻塞等待,如果队列里有任务,就通知工作线程,这通过条件变量来实现。后面以任务初始化,任务放入队列,任务出队列三个方面进行介绍,并且以aof持久化为例说明其在系统中的使用方式,本文基于redis的3.2.3版本代码。 阅读全文 »
Redis数据过期和淘汰策略详解 时间: 2022-10-24 | 分类: redis | 阅读: 2952 字 ~6分钟 背景 Redis作为一个高性能的内存NoSQL数据库,其容量受到最大内存限制的限制。 用户在使用阿里云Redis时,除了对性能,稳定性有很高的要求外,对内存占用也比较敏感。在使用过程中,有些用户会觉得自己的线上实例内存占用比自己预想的要大。 阅读全文 »
条件变量与锁 时间: 2022-10-24 | 分类: linux | 阅读: 2606 字 ~6分钟 本文以linux c为例子, 介绍锁和共享变量的基本使用方法, 并介绍一个基于条件变量实现生产者消费者模型的例子, 然后在文末给出相关书籍的参考. 阅读全文 »
Redis源码学习之BIO 时间: 2022-10-21 | 分类: redis redis-code | 阅读: 2660 字 ~6分钟 BIO顾名思义,`background IO`,是redis中运行的后台IO。 网上千篇一律的说法是redis是单线程单进程。 实际上redis运行过程中并不是严格单进程单线程应用。 阅读全文 »
Redis源码解析-全览 时间: 2022-10-21 | 分类: redis redis-code | 阅读: 1383 字 ~3分钟 通过阅读 Redis 源码,可以学习和掌握到的计算机系统设计思想,根据 Redis 不同的功能特性,分线条学习每个功能特性上涉及的关键技术和设计思想 阅读全文 »