网站大量收购独家精品文档,联系QQ:2885784924

基于Nignx优化缓存代理.docx

  1. 1、本文档共24页,可阅读全部内容。
  2. 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
  3. 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  4. 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多

Nginx多进程高并发、低时延、高可靠机制缓存代理中的应用

开发背景

???现有开源缓存代理中间件有twemproxy、codis等,其中twemproxy为单进程单线程模型,只支持memcache单机版和redis单机版,都不支持集群版功能。

???由于twemproxy无法利用多核特性,因此性能低下,短连接QPS大约为3W,长连接QPS大约为13W,同时某些场景时延抖动厉害。

???为了适应公有云平台上业务方的高并发需求,因此决定借助于twemproxy来做二次开发,把nginx的高性能、高可靠、高并发机制引入到twemproxy中,通过master+多worker进程来实现七层转发功能。

Twemproxy

Twemproxy简介

Twemproxy是一个快速的单线程代理程序,支持?Memcached?ASCII协议和更新的Redis协议。它全部用C写成,使用Apache2.0License授权。支持以下特性:

i)速度快

ii)轻量级

iii)维护持久的服务器连接

iiii)启用请求和响应的管道

iiiii)支持代理到多个后端缓存服务器

iiiii)同时支持多个服务器池

iiiiii)多个服务器自动分享数据

iiiiiii)可同时连接后端多个缓存集群

iiiiiiii)实现了完整的?memcachedascii?和?redis?协议.

iiiiiiiii)服务器池配置简单,通过一个YAML文件即可

iiiiiiiiii)一致性hash

iiiiiiiiii)详细的监控统计信息

iiiiiiiiiii)支持Linux,*BSD,OSXandSolaris(SmartOS)

iiiiiiiiiiii)支持设置HashTag

iiiiiiiiiiiiiii)连接复用,内存复用,提高效率

memcache缓存集群拓扑结构

图1twemproxy缓存集群拓扑图

如上图所示,实际应用中业务程序通过轮询不同的twemproxy来提高qps,同时实现负载均衡。

推特原生twemproxy瓶颈

如今twemproxy凭借其高性能的优势,?在很多互联网公司得到了广泛的应用,已经占据了其不可动摇的地位,?然而在实际的生产环境中,存在以下缺陷,如下:

i)单进程单线程,?无法充分发挥服务器多核cpu的性能

ii)当twemproxyqps短连接达到8000后,消耗cpu超过70%,时延陡增。

iii)大流量下造成IO阻塞,无法处理更多请求,qps上不去,业务时延飙升

iiii)维护成本高,如果想要充分发挥服务器的所有资源包括cpu、?网络io等,就必须建立多个twemproxy实例,维护成本高

iiiii)扩容、升级不便

原生twemproxy进程呈现了下图现象:一个人干活,多个人围观。多核服务器只有一个cpu在工作,资源没有得到充分利用。

Nginx

nginx是俄罗斯软件工程师IgorSysoev开发的免费开源web服务器软件,聚焦于高性能,高并发和低内存消耗问题,因此成为业界公认的高性能服务器,并逐渐成为业内主流的web服务器。主要特点有:

i)完全借助epoll机制实现异步操作,避免阻塞。

ii)重复利用现有服务器的多核资源。

iii)充分利用CPU亲和性(affinity),把每个进程与固定CPU绑定在一起,给定的CPU上尽量长时间地运行而不被迁移到其他处理器的倾向性,减少进程调度开销。

iiii)请求响应快

iiiii)支持模块化开发,扩展性好

iiiii)Master+多worker进程方式,确保worker进程可靠工作。当worker进程出错时,可以快速拉起新的worker子进程来提供服务。

iiiiii)内存池、连接池等细节设计保障低内存消耗。

iiiiii)热部署支持,master与worker进程分离设计模式,使其具有热部署功能。

iiiiiii)升级方便,升级过程不会对业务造成任何伤害。

Nginx多进程提供服务过程如下图所示:

Nginxmaster+worker多进程机制在twemproxy中的应用

为什么选择nginx多进程机制做为参考?

Twemproxy和nginx都属于网络io密集型应用,都属于七层转发应用,时延要求较高,应用场景基本相同。

Nginx充分利用了多核cpu资源,性能好,时延低。

Master-worker多进程机制原理

Master-worker进程机制采用一个master进程来管理多个worker进程。每一个worker进程都是繁忙的,它们在真正地提供服务,master进程则很“清闲”,只负责监控管理worker进程,包含:接收来自外界的信号,向各worker进程发送信号,监控worker进程的运行状态,当wor

文档评论(0)

说明书文档库 + 关注
实名认证
内容提供者

提供说明书查找服务。

1亿VIP精品文档

相关文档