- 博客(7)
- 收藏
- 关注
原创 nginx源码分析(5)——监听socket初始化
在nginx源码分析(4)中,看到了nginx的事件模型,但其中没有介绍监听socket的初始化。而对于web server来说,需要通过监听socket来监听客户端的连接等。本篇将会具体介绍这方面的内容。还记得在前文介绍ngx_cycle_t结构时,它具有一个listening属性,是一个数组,存储所有监听socket,下面就来看看这些信息是什么时候添加的、以及如何初始化的。1. 重要的数据
2012-07-18 15:50:31 10596 2
原创 nginx源码分析(4)——事件模型
对于一个服务器来说,事件模型是至关重要的,nginx本身的高性能也要归功于其优秀的事件模型。一般地,nginx的事件模型是基于epoll的,而使用epoll需要调用epoll_create、epoll_ctl和epoll_wait三个函数。由于nginx本身的松耦合模块机制,这些函数的调用被隐藏在很难发现的地方,本篇文章就来介绍nginx的事件模型的初始化过程,从而大家可以清晰的知道epoll各个
2012-07-12 23:05:27 8771 1
原创 nginx源码分析(3)——进程模型
原本计划这一篇的内容是配置文件的解析,不过为了连贯性,还是继续nginx初始化的过程。nginx的进程模型与大多数http服务器采用的模型是一样的,都是Master-Worker模型。Master进程负责处理外部信号,同时管理所有的Worker进程。而Worker进程就是用来处理连接的建立、请求和响应,大部分的事件处理都是在worker进程中。1. 基本的数据结构 1. ng
2012-07-11 17:05:24 5495
原创 nginx源码分析(2)——http模块的初始化过程
前一篇文章介绍了nginx的启动初始化过程,包括了所有模块的初始化过程,比如http模块、事件模块等。这里再详细介绍一下http模块的启动过程,还记得在前一篇文章中提到过ngx_conf_parse函数背后隐藏了大量的细节吗?这里就揭开这层神秘的面纱,去看看几个重要的http模块是如何初始化的。这里依然沿用上一篇文章的结构,首先来看几个重要的数据结构。1. 重要的数据结构 1
2012-07-10 19:30:31 11964 1
原创 nginx源码分析(1)——启动过程
1. 重要的数据结构 1. ngx_module_t nginx中所有模块的类型都是ngx_module_t类型的,定义了模块的一些属性。nginx是完全模块化的,所有的组件都是模块,从而实现了nginx的高度松耦合。同时,我们在进行nginx模块开发时,也离不开这个数据结构。struct ngx_module_s { /** * 在具体类
2012-07-09 18:19:34 7970 3
原创 系统调用的实现原理
系统调用概述 计算机系统的各种硬件资源是有限的,在现代多任务操作系统上同时运行的多个进程都需要访问这些资源,为了更好的管理这些资源进程是不允许直接操作的,所有对这些资源的访问都必须有操作系统控制。也就是说操作系统是使用这些资源的唯一入口,而这个入口就是操作系统提供的系统调用(System Call)。 系统调用是属于操作系统内核的一部分的,必须以某种方式提供给进
2012-07-06 15:00:39 27838 6
原创 财经行情API架构优化实践
从3月份到5月份一直在做行情API的架构优化,在这个过程中遇到了很多问题,也尝试了很多的解决方案,但都没有寻找到一个最佳的方案,最后基于API的特点自己实现了一个基于共享内存的key-value存储touchdb。这里,和大家一起分享一下。1. 行情API及旧架构介绍 先简单介绍一下行情API,让大家对这个应用的特性、需求有一个足够的了解,才能清楚了解后续的优化过程。
2012-07-04 11:46:49 6286
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人