持久化介绍: redis的持久化有两种方式: rdb :可以在指定的时间间隔内生成数据集的时间点快照(point-in-time snapshot) aof : 记录redis执行的所有写操作命令 根据这两种方式,redis可以开启三种模式的持久化 rdb aof rdb+aof rdb rdb 是一个非常紧凑的文件 rdb适合灾难恢复,主从复制 rdb可以最大化redis的性能,rdb操作是会从主进程fork一个子进程; 本章节主要讲解rdb,aof保留到下一章节讲解。 在redis的配置文件 redis.con…

2022/03/16 0条评论 739点热度 0人点赞 阅读全文

在rdb的时候使用了fork()函数来创建子进程,详细了解下相关的知识点。 smaps 凡是程序运行过程中可能需要用到的指令或者数据都必须在虚拟内存空间中,为了让程序在物理机器上运行,必须有得让虚拟内存空间映射到物理内存空间。操作系统中页映射表(page table)就是干的这事。内核为每个一个进程维护一份相互独立的页映射表。 通过top命令我们已经能看出进程的虚拟空间大小(VIRT)、占用的物理内存(RES)以及和其他进程共享的内存(SHR)。 Linux 通过proc文件系统为每个进程都提供一个smaps文件。…

2022/03/15 0条评论 723点热度 0人点赞 阅读全文

这几天翻了下图解TCP/IP,把网络相关的知识整理下。 主要包含以下内容: 网络基础知识 tcp/ip基础知识 tcp与udp http版本演化 http响应码 https OSI参考模型 虽然ISO指定了一个国际标准OSI,对通信系统进行标准化。但是这个标准并没有得到普及,不过它的参考模型却用在了网络协议的制定中。 举一个例子。 tcp/ip 基础知识 TCP与UDP TCP与UDP最大的区别,TCP是有状态,UDP是无状态,TCP是高可靠性通信,UDP主要是及时通信。 这里主要介绍tcp,包括: 特点介绍 首部…

2022/03/04 0条评论 959点热度 1人点赞 阅读全文

整理资料时,发现几年前的整理的问题问题排查手册,分享下。 生产问题处理的基本原则: 第一时间恢复业务(重点) 重启解决不了的问题,能回滚就回滚 如果业务不可逆,才是找问题的解决的时候(一旦到了这里,说明,大版本改动,没有做Bplan) 恢复业务后再去分析问题 执行top命令 重点查看 load averag 设 A(0.41近5分钟)B(0.32 近10分钟)C(0.32 近15分钟) 如:0.41 代表近5分钟的load值,第一个0.32 代表近10分钟的load值,第二个0.32代表近15分钟的load值; 假…

2022/02/28 0条评论 932点热度 0人点赞 阅读全文

在上一篇从feign使用hystrix的全流程分析中,通过一张图详解了springboot启动的时候工作流程。还没尽兴,今天把bean的实例化过程以及spring如何解决循环依赖,详细分析。略微补充了下和bean实例化相关的图。 refresh刷新 invokeBeanFactoryPostProcessors 处理beanFactory 先完成了configclass的解析(解析了所有的元数据) 从resources和Registrar中加载beanDefinition finishBeanFactoryInit…

2022/02/27 0条评论 947点热度 1人点赞 阅读全文

哨兵 redis sentinel用于管理多个redis实例,是redis高可用的解决方案之一,其本身也是分布式架构。 哨兵本身是监听者身份,没有存储功能,哨兵的服务角色及交互 哨兵与主服务 哨兵与从服务 哨兵与哨兵 哨兵的功能 集群监控 检查对应的主从集群是否正常运行(心跳机制) 消息通知 同步sentinel和其他redis的相关信息(特别是某个服务出现问题时) 故障转移 当主从结构中主节点故障了,如果判断为客观下线,哨兵会发起故障转移,保证服务的高可用 配置中心 给客户端提供最新的master地址 名称解析 …

2022/01/28 0条评论 1110点热度 0人点赞 阅读全文

这篇文章算是对之前系列的增强,将spring启动流程、@Configuration配置加载分析 、feign构建与调用全流程分析、hystrix源码分析 整体用两张图片串联起来。 feign 全流程分析 图片中主要分为以下几步: 从项目启动; refresh刷新上下文 解析 举例feign的装配,也可以看hystrix的装配(feign通过EnableAutoConfiguration自动装配),hystrix装配(用EnableAutoConfiguration和EnableCircuitBreaker),将Fe…

2022/01/14 0条评论 806点热度 0人点赞 阅读全文

在我计算key个value的空间的时候,发现我使用命令获取的和自己算的总是对不上。比如 命令行执行 local:0>set 5ycode yxkong "OK" local:0>OBJECT ENCODING 5ycode "embstr" local:0>DEBUG OBJECT 5ycode "Value at:0x7f9dc6a0e180 refcount:1 encoding:embstr serializedlength:7 lru:14…

2022/01/08 0条评论 1034点热度 0人点赞 阅读全文

大神Doug Lea在http://gee.cs.oswego.edu/dl/cpjslides/nio.pdf 里详细介绍了java nio的实现思路,里面也详细介绍了reactor模式,后文统一称为老爷子的文章。 看这篇文章建议先了解下linux中的文件描述符与套接字socket redis中的IO多路复用select和epoll 传统阻塞I/O模型 以上图片摘自大神Doug lea 的nio。 特点 一个后端线程只能处理一个客户端请求 采用I/O阻塞的模式处理客户端请求 分析 随着并发量上升,后端资源有限的情…

2022/01/06 0条评论 843点热度 0人点赞 阅读全文

基本概念 I/O多路复用是一种同步I/O模型,实现一个线程可以监视多个文件句柄;一旦某个文件句柄就绪,就能够通知线程进行相应的读写操作;没有文件句柄就绪时会阻塞应用程序。多路是指网络连接,复用指的是同一个线程。 I/O多路复用模型是建立在内核提供的多路分离函数select基础之上的,使用select函数可以避免同步非阻塞IO模型中轮询等待的问题。 可以先了解下fd和socketlinux中的文件描述符与套接字socket redis中的使用 在redis中支持四种类型的实现。根据环境的不同,include进去不同的…

2022/01/05 0条评论 898点热度 0人点赞 阅读全文
1234532