Tango's Blog

总之岁月漫长,但却值得等待。

NGINX系列之事件模型

nginx在完成进程的创建后,主进程进入信号处理的循环中,不参与事件处理;worker进程则进入事件处理过程。nginx任何操作,包括定时任务、连接、读写等都可以定义为事件,事件具有的特点是被动特性,即发生才处理,避免因为轮训状态而导致的时间消耗。本章将介绍nginx的事件处理模型。 事件模型简介 定时器任务 上一章节中提到nginx如何实现定时任务?如何确保定时任务的准确性? ng...

NGINX系列之ngx_connection

上文介绍nginx事件模型,当用户发起请求时候,为便于对连接进行管理,服务端将用户的请求封装为一种数据结构ngx_connection_t,从而方便维护客户端各种请求信息以及连接生命周期的管理。 数据结构 struct ngx_connection_s { void *data; ngx_event_t *read; ngx...

Elasticsearch原理分析

ElasticSearch是一个基于Lucence的搜索服务器。它提供了一个分布式多用户能力的全文搜索引擎,基于RESTful web接口。 ES核心概念 系统概念 集群cluster 代表一个集群,集群中有多个节点,其中有一个为主节点,这个主节点是可以通过选举产生的,主从节点是对于集群内部来说的。es的一个概念就是去中心化,字面上理解就是无中心节点,这是对于集群外部来说的,因为从外部来...

NGINX系列之HTTP模块开发

上文介绍nginx请求11个阶段处理,本文将动手实操开发并注册一个HTTP模块,在实现ngx_http_hello_world_module 模块的过程中,详细介绍其实现步骤。 模块组成介绍 模块定义 模块名称 ngx_http_hello_world_module 模块功能 功能相对简单,从Hello World开始,通过实现扩展HTTP模块ngx_http...

ZooKeeper系列之原理漫谈

ZooKeeper 是一个开源的分布式协调服务,由雅虎创建,是 Google Chubby 的开源实现。 分布式应用程序可以基于 ZooKeeper 实现诸如数据发布/订阅、负载均衡、命名服务、分布式协 调/通知、集群管理、Master 选举、配置维护,名字服务、分布式同步、分布式锁和分布式队列 等功能。 Zookeeper架构 集群架构 zookeeper可以实现单机部署和集群部署,...

Docker容器之核心原理

Docker容器核心原理 在上一节中已经介绍docker的使用以及常用命令,本章则介绍docker实现的核心原理,在开始之前提出几个问题: 宿主机中进程ID号和容器内的进程ID号会产生冲突么? 修改容器的hosts文件会对宿主机的hosts文件产生影响么? 如果保证或者限制容器内的cpu、mem等资源的使用量? 对于上述问...

Docker容器之简单应用

#遇见Docker容器 学校期间接触到容器的概念,但一直未曾真正实践,看到名字就感觉望而生畏,在实习阶段真正接触到Docker容器的使用,惊叹于这一神来之笔!!太有用了!! 相信程序员经常遇到如下场景: 测试员小A:Monkey,程序在我机器上运行不了.... 程序员:在我机器上正常啊.... .......无限撕逼中....... .......无限找BUG中.... 上述场景,...

Zookeeper系列之漫话ZooKeeper


NGINX系列之内存池

Nginx内存池 ngx_pool_t Nginx作为高性能到web服务器,自然需要满足高效的内存使用率和分配效率。 内存池满足上述两个要求,主要优点: 统一内存管理,避免内存碎片化,提高系统到使用率(Nginx做内存对齐处理,牺牲一定到使用率换来寻址速率) 避免多次向系统申请内存(涉及内核态和用户态转换),提高内存到分配效率; 内存统一分配和销毁,避免内存泄露。 数...

NGINX系列之HTTP阶段分析

读取完请求头后,nginx进入请求的处理阶段。简单的情况下,客户端发送过的统一资源定位符(url)对应服务器上某一路径上的资源,web服务器需要做的仅仅是将url映射到本地文件系统的路径,然后读取相应文件并返回给客户端。但这仅仅是最初的互联网的需求,而如今互联网出现了各种各样复杂的需求,要求web服务器能够处理诸如安全及权限控制,多媒体内容和动态网页等等问题。这些复杂的需求导致web服务器不...