
源码之路
文章平均质量分 81
chosen0ne
互联网码农,对Linux,分布式计算和存储,编译器,nginx,脚本语言感兴趣
展开
-
nginx源码分析(1)——启动过程
1. 重要的数据结构 1. ngx_module_t nginx中所有模块的类型都是ngx_module_t类型的,定义了模块的一些属性。nginx是完全模块化的,所有的组件都是模块,从而实现了nginx的高度松耦合。同时,我们在进行nginx模块开发时,也离不开这个数据结构。struct ngx_module_s { /** * 在具体类原创 2012-07-09 18:19:34 · 8061 阅读 · 3 评论 -
redis源码分析(7)——rdb
介绍redis持久化rdb的实现细节原创 2015-04-15 16:23:30 · 7734 阅读 · 0 评论 -
redis3.0深入详解(1)
从源码层面介绍redis3.0相对于2.8的改进原创 2015-04-10 17:24:06 · 11444 阅读 · 4 评论 -
redis源码分析(6)——aof rewrite
介绍redis的aof rewirte代码实现原创 2015-03-23 11:19:23 · 8200 阅读 · 0 评论 -
redis源码分析(5)——aof
介绍redis持久化机制——aof的实现原创 2015-03-17 11:50:37 · 5320 阅读 · 0 评论 -
redis源码分析(3)——请求处理
从源码分析,redis请求的处理过程原创 2015-01-23 12:23:05 · 18444 阅读 · 0 评论 -
redis源码分析(2)——事件循环
redis源码分析,介绍事件循环的实现原创 2015-01-14 21:51:33 · 5155 阅读 · 0 评论 -
redis源码分析(1)——初始化
redis源码分析,介绍redis的初始化及启动过程原创 2015-01-13 23:05:16 · 5445 阅读 · 0 评论 -
redis源码分析(4)——发送响应内容
本篇介绍redis发送响应内容的过程原创 2015-01-30 16:25:44 · 5619 阅读 · 7 评论 -
LevelDB源码阅读(1)—— SSTable的生成
介绍LevelDB的SSTable文件格式,创建过程原创 2014-10-22 16:09:18 · 3411 阅读 · 0 评论 -
nginx源码分析(7)——请求处理
在建立连接过程中,对于nginx监听到的每个客户端连接,都会将它的读事件的handler设置为ngx_http_init_request函数,这个函数就是请求处理的入口。在处理请求时,主要就是要解析http请求,比如:uri,请求行等,然后再根据请求生成响应。下面看一下nginx处理的具体过程。1. ngx_http_init_request 在ngx_http_in原创 2012-10-09 11:18:28 · 9322 阅读 · 0 评论 -
nginx源码分析(8)——phase handler处理
nginx将请求的处理过程划分为11个phase(阶段),相当于是对请求处理的一种抽象,便于定制处理过程。这个11个phase,分别是(定义在http/ngx_http_core_module.h):typedef enum { NGX_HTTP_POST_READ_PHASE = 0, /* 读取请求 */ NGX_HTTP_SERVER_REWRITE_PHAS原创 2012-10-10 14:12:55 · 9340 阅读 · 1 评论 -
nginx源码分析(9)——filter模块
phase handler处理中介绍了content handler用于产生响应内容,随便找一个content phase的模块,比如:ngx_http_static_module.c,会发现在content handler中会调用ngx_http_send_header,然后最后调用ngx_http_output_filter。这两个函数就是发送响应头部和响应体的,在nginx中输出内容是通过f原创 2012-10-11 18:11:14 · 7750 阅读 · 7 评论 -
nginx源码分析(2)——http模块的初始化过程
前一篇文章介绍了nginx的启动初始化过程,包括了所有模块的初始化过程,比如http模块、事件模块等。这里再详细介绍一下http模块的启动过程,还记得在前一篇文章中提到过ngx_conf_parse函数背后隐藏了大量的细节吗?这里就揭开这层神秘的面纱,去看看几个重要的http模块是如何初始化的。这里依然沿用上一篇文章的结构,首先来看几个重要的数据结构。1. 重要的数据结构 1原创 2012-07-10 19:30:31 · 12119 阅读 · 1 评论 -
nginx源码分析(4)——事件模型
对于一个服务器来说,事件模型是至关重要的,nginx本身的高性能也要归功于其优秀的事件模型。一般地,nginx的事件模型是基于epoll的,而使用epoll需要调用epoll_create、epoll_ctl和epoll_wait三个函数。由于nginx本身的松耦合模块机制,这些函数的调用被隐藏在很难发现的地方,本篇文章就来介绍nginx的事件模型的初始化过程,从而大家可以清晰的知道epoll各个原创 2012-07-12 23:05:27 · 8866 阅读 · 1 评论 -
nginx源码分析(6)——建立连接
对于web server来说,必须能够监听到客户端的连接才能与之通信,这篇文章就看一下nginx是如何实现连接的建立。监听到新的连接实际上就是监听socket上的读事件,此时监听socket的已完成连接队列是非空的,可以非阻塞的调用accpet获取新到的连接。在nginx中每个socket都会被封装成一个连接结构,就是ngx_connection_t类型。每个ngx_connection_t结构具原创 2012-08-09 18:03:48 · 5761 阅读 · 4 评论 -
nginx源码分析(5)——监听socket初始化
在nginx源码分析(4)中,看到了nginx的事件模型,但其中没有介绍监听socket的初始化。而对于web server来说,需要通过监听socket来监听客户端的连接等。本篇将会具体介绍这方面的内容。还记得在前文介绍ngx_cycle_t结构时,它具有一个listening属性,是一个数组,存储所有监听socket,下面就来看看这些信息是什么时候添加的、以及如何初始化的。1. 重要的数据原创 2012-07-18 15:50:31 · 10719 阅读 · 2 评论 -
nginx源码分析(3)——进程模型
原本计划这一篇的内容是配置文件的解析,不过为了连贯性,还是继续nginx初始化的过程。nginx的进程模型与大多数http服务器采用的模型是一样的,都是Master-Worker模型。Master进程负责处理外部信号,同时管理所有的Worker进程。而Worker进程就是用来处理连接的建立、请求和响应,大部分的事件处理都是在worker进程中。1. 基本的数据结构 1. ng原创 2012-07-11 17:05:24 · 5606 阅读 · 0 评论 -
redis源码分析(8)——replication
从源码级别介绍redis的主从同步的实现机制原创 2015-07-31 11:48:18 · 6697 阅读 · 1 评论