
Nginx开发
Nginx的开发和源码分析
zhangskd
一路风雨,一路奔跑
展开
-
Nginx的负载均衡 - 一致性哈希 (Consistent Hash)
当后端是缓存服务器时,经常使用一致性哈希算法来进行负载均衡。使用一致性哈希的好处在于,增减集群的缓存服务器时,只有少量的缓存会失效,回源量较小。在nginx+ats / haproxy+squid等CDN架构中,nginx/haproxy所使用的负载均衡算法便是一致性哈希。我们举个例子来说明一致性哈希的好处。假设后端集群包含三台缓存服务器,A、B、C。原创 2015-12-12 23:46:40 · 51253 阅读 · 7 评论 -
Nginx的负载均衡 - 最少连接 (least_conn)
我们知道轮询算法是把请求平均的转发给各个后端,使它们的负载大致相同。这有个前提,就是每个请求所占用的后端时间要差不多,如果有些请求占用的时间很长,会导致其所在的后端负载较高。在这种场景下,把请求转发给连数较少的后端,能够达到更好的负载均衡效果,这就是least_conn算法。原创 2015-12-12 23:42:00 · 34262 阅读 · 0 评论 -
Nginx的负载均衡 - 保持会话 (ip_hash)
Nginx版本:1.9.1我的博客:http://blog.youkuaiyun.com/zhangskd 算法介绍 ip_hash算法的原理很简单,根据请求所属的客户端IP计算得到一个数值,然后把请求发往该数值对应的后端。所以同一个客户端的请求,都会发往同一台后端,除非该后端不可用了。ip_hash能够达到保持会话的效果。ip_hash是基于round robin的,判断后端是否原创 2015-12-12 23:39:23 · 34631 阅读 · 0 评论 -
Nginx的负载均衡 - 加权轮询 (Weighted Round Robin) 下篇
上篇blog讲述了加权轮询算法的原理、以及负载均衡模块中使用的数据结构,接着我们来看看加权轮询算法的具体实现。如果upstream配置块中没有指定使用哪种负载均衡算法,那么默认使用加权轮询。也就是说使用加权轮询算法,并不需要特定的指令,因此也不需要实现指令的解析函数。而实际上,和其它负载均衡算法不同(比如ip_hash),加权轮询算法并不是以模块的方式实现的,而是作为Nginx框架的一部分。原创 2015-12-12 23:36:45 · 8886 阅读 · 0 评论 -
Nginx的负载均衡 - 加权轮询 (Weighted Round Robin) 上篇
当在upstream配置块中没有指定使用的负载均衡算法时,默认使用的是加权轮询。按照上述配置,Nginx每收到7个客户端的请求,会把其中的5个转发给后端a,把其中的1个转发给后端b,把其中的1个转发给后端c。这就是所谓的加权轮询,看起来很简单,但是最早使用的加权轮询算法有个问题,就是7个请求对应的后端序列是这样的:{ c, b, a, a, a, a, a },会有5个连续的请求落在后端a上,分布不太均匀。原创 2015-12-12 23:33:21 · 70677 阅读 · 2 评论 -
Nginx的负载均衡 - 整体架构
Nginx版本:1.9.1我的博客:http://blog.youkuaiyun.com/zhangskd 什么是负载均衡 我们知道单台服务器的性能是有上限的,当流量很大时,就需要使用多台服务器来共同提供服务,这就是所谓的集群。负载均衡服务器,就是用来把经过它的流量,按照某种方法,分配到集群中的各台服务器上。这样一来不仅可以承担更大的流量、降低服务的延迟,还可以避免单点故障造成服务原创 2015-12-12 23:30:26 · 23829 阅读 · 0 评论