今天在拿U盘拷贝一个东西,发现了16年的一个工作笔记。我记得我是11月17日入职,入职以后就开始处理各种问题。简单的扫描了一眼,发现了一些问题,当时作为核心开发,视界还是不够宽。 1,一直在处理问题,遇到一个处理一个,并没有沉淀成知识推广出去; 2,缺少培养人的思维; 3,缺少规范流程; 4,当时没有就那些问题进行深入研究; 那个时候是真拼,除了保证自己有很高效率,还处理了这么多组内的问题,不过也是因为那两年的积累,才能在后来形成各种的规范和checklist。 时间 问题 备注 2015/11/18 修改协议空指…

2021/12/30 0条评论 828点热度 0人点赞 阅读全文

在hystrix中核心使用了响应式编程。不了解响应式编程的同学可能会看的云里雾里。 基本概念 官网上对rx的描述。 ReactiveX is a library for composing asynchronous and event-based programs by using observable sequences. It extends the observer pattern to support sequences of data and/or events and adds operators th…

2021/12/29 0条评论 891点热度 0人点赞 阅读全文

推文502 背景 前几周,运营做营销活动推文,推文后,我们我们没有收到任何的系统报警。业务反馈,用户进不去页面,有的还报502。what? 抓紧时间排查。 cpu 正常 网络链接正常(单机ng的有效链接1000,单机流量200mb) 链路请求正常(10分钟内超过2秒的接口不到1000条,大部分还都是银行卡相关的) 数据库也正常 都正常啊,怎么就502了?看下ng的超时日志,最近10分钟内,单机也就几百个,不应该怎么慢啊。 不对,突然想起来在打开后端系统的有点卡顿。 难道是网络带宽耗尽了? 马上找运维看了下公网带宽,…

2021/12/26 0条评论 875点热度 0人点赞 阅读全文

最近遇到了一些生产问题涉及到了hystrix,想要了解下底层的原理。hystrix中大量运用了Rxjava的响应式编程,不懂Rxjava,理解起来有点费劲。 基本准备 <?xml version="1.0" encoding="UTF-8"?> <project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchem…

2021/12/25 0条评论 1010点热度 0人点赞 阅读全文

在之前的redis源码阅读三-终于把主线任务执行搞明白了和redis源码阅读五-为什么大量过期key会阻塞redis?梳理了redis的整体处理流程和redis的定期清理。都没有说到redis的过期策略。这次我来探究一下。 我们都知道redis的缓存淘汰策略有以下几种: noeviction 无过期策略,内存满了就直接异常 volatile-lru 对有过期时间的key进行lru淘汰(越长时间没有被访问,越容易被淘汰) allkeys-lru 对全局的key按LRU进行淘汰(越长时间没有被访问,越容易被淘汰) vo…

2021/12/24 0条评论 892点热度 0人点赞 阅读全文

在之前的 redis的key过期了还能取出来?,在这里对key的过期策略进行了简单的分析,惰性过期和定期过期,对定期清理这块讲的并不透彻,这次来根据源码分析下。 先上下逻辑,此逻辑图根据redis官方5.0分支梳理。 定期过期-慢循环 在redis源码阅读二-终于把redis的启动流程搞明白了这一文中。 我们知道redis启动会注册一个Time Event 事件,里面的执行逻辑是:serverCron 在server.c中,其中databaseCron()函数中会调用慢循环进行过期key清理。 int server…

2021/12/20 0条评论 895点热度 0人点赞 阅读全文

之前分析了通过redis源码阅读二-终于把redis的启动流程搞明白了分析了redis的启动流程,通过redis源码阅读三-终于把主线任务执行搞明白了分析了redis的主线任务,这次从redis6.2分支上分析redis6的io多线程。 我注释的代码主要在redis5.0分支上。6.2上注释的比较少。 https://github.com/yxkong/redis/tree/6.2 https://github.com/yxkong/redis/tree/5.0 acceptTcpHandler处理的差异 虽然最终…

2021/12/16 0条评论 938点热度 0人点赞 阅读全文

在redis源码阅读二-终于把redis的启动流程搞明白了 介绍redis的启动流程,也画了一张图。今天我来详细讲解下redis的主线任务是怎么执行的。 我们先看一下流程图 在redis的主线任务里,主要有三大块: eventLoop->beforesleep 创建回调的写事件并绑定处理器sendReplyToClient,在handleClientsWithPendingWrites aeProcessEvents 执行整主流程,主要功能 从epoll读取fd,将读取的数据写入server.clients …

2021/12/14 0条评论 809点热度 0人点赞 阅读全文

阅读redis的源码永远也绕不过它的启动。我们来看下redis的启动流程。不想看代码可以直接看最后的流程图。 以下源码分析是redis的5.0分支 源码注释:https://github.com/yxkong/redis/commits/5.0 这是启动流程的核心代码。 int main(int argc, char **argv) { //申请空间oom后的处理器 zmalloc_set_oom_handler(redisOutOfMemoryHandler); //哨兵模式 server.sentinel_mo…

2021/12/10 0条评论 916点热度 0人点赞 阅读全文

准备工作 安装visual studio code 下载地址 https://visualstudio.microsoft.com/zh-hans/vs/ fork源码redis源码 https://github.com/redis/redis 下载源码(方便注释) 比如我的 git clone https://github.com/yxkong/redis 使用vs code 打开源码 安装插件 C/C++ C/C++ Extension Pack Better C++ Syntax GitLens — Git …

2021/12/08 0条评论 1135点热度 0人点赞 阅读全文
12