nginx_event_pipe用于实现upstream对上游服务器包体数据的读取,然后在处理之后,将结果返回给请求端(downstream)。
1. 相关静态函数声明
2. 函数ngx_event_pipe()
用于实现upstream对上游服务器包体数据的读取,然后在处理之后,将结果返回给请求端(downstream)。下面我们仔细分析一下函数的实现:
3. 函数ngx_event_pipe_read_upstream()
本函数用于读取上游服务器的包体数据,然后调用相应的方法进行处理。下面我们简要分析一下函数的实现:
上面关于使用多线程写temp文件(ngx_write_chain_to_temp_file()),这里我们再多说一句:
4. 函数ngx_event_pipe_write_to_downstream()
此函数用于向下游请求端发送相应的响应信息。下面我们详细分析一下函数的执行流程:
5. 函数ngx_event_pipe_write_chain_to_temp_file()
此函数用于将ngx_event_pipe
相关缓存中的信息写到临时文件中。下面我们详细分析一下函数的实现流程:
此函数较为简单,用于拷贝buf
,并将其插入到p->in链表的表尾。
7. 函数ngx_event_pipe_remove_shadow_links()
此函数用于移除一个buf上的所有shadow
8. 函数ngx_event_pipe_add_free_buf()
此函数用于将b
添加到p->free_raw_bufs
中。参看前面的代码,我们知道p->free_raw_bufs可能仍有一部分空间被使用,因此在添加b
这一块缓存空间时要特别注意。下面我们简要分析一下此函数:
9. 函数ngx_event_pipe_drain_chains()
本函数用于p->busy、p->out、p->in这些缓存空间释放回p->free中,并将c1->buf->shadow空间释放回p->free_raw_bufs中.
[参看]
-
《深入理解Nginx》笔记之ngx_event_pipe_s结构体
-
ngx_event_pipe_write_to_downstream分析
-
ngx_event_pipe_read_upstream分析
-
nginx upstream模块详解(基础结构篇)
-
nginx upstream模块详解(处理流程篇二 upstream与event_pipe交互)
-
nginx的upstream模块数据转发过程及流量控制分析
-
Nginx upstream原理分析-带buffering给客户端返回数据