加入收藏 | 设为首页 | 会员中心 | 我要投稿 拼字网 - 核心网 (https://www.hexinwang.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 站长学院 > MySql教程 > 正文

Nginx多进程高并发、低时延、高可靠机制在缓存(redis、memcache)twemproxy代理中的应用

发布时间:2019-03-16 16:47:39 所属栏目:MySql教程 来源:y123456yz
导读:1. 开发背景 现有开源缓存代理中间件有twemproxy、codis等,其中twemproxy为单进程单线程模型,只支持memcache单机版和redis单机版,都不支持集群版功能。 由于twemproxy无法利用多核特性,因此性能低下,短连接QPS大约为3W,长连接QPS大约为13W,同时某些

3) 如果是多线程方式,如果代码出现bug段错误,则整个进程挂掉,整个服务不可用。而如果是多进程方式,因为bug触发某个worker进程段错误异常,其他工作进程不会受到如何影响,20个worker进程,如果触发异常,同一时刻只有有1/20的流量受到影响。而如果是多线程模式,则100%的流量会受到影响。

4) worker进程异常退出后,master进程立马感知拉起一个新进程提供服务,可靠性更高。

5) 配置热加载、程序热升级功能实现更加容易

7.2 参照nginx改造后的twemproxy特性

支持nginx几乎所有的优秀特性,同时也根据自己实际情况新增加了自有特性:

1) master+多worker进程机制

2) 适配所有linux内核版本,内核低版本惊群问题避免支持

3) quic_ack支持

4) reuser_port适配支持

5) worker进程异常,master进程自动拉起功能支持

6) 90%、95%、98%、100%平均时延统计功能支持

7) memcache单机版、集群版支持

8) redis单机版、集群版支持

9) 二进制协议、文本协议同时支持

10) redis、memcache集群在线扩容、缩容、数据迁移支持,扩缩容、数据迁移过程对业务无任何影响。

11) 多租户支持,一个代理可以接多个memcache、redis集群,并支持混部。

12) mget、gets、sets等批量处理命令优化处理

13) 慢响应日志记录功能支持

14) 内存参数实时修改支持

15) 详细的集群监控统计功能

16) CPU亲缘性自添加

17)内存配置动态实时修改

7.3后期计划

添加如下功能:

i) 配置文件热加载支持。

ii) 代码热升级功能支持。

7.4 长远规划展望

抽象出一款类似nginx的高性能代理软件,nginx支持http协议,我们的支持tcp协议代理,覆盖nginx所有功能,包括前面提到的所有功能,同时支持模块化开发。这样,很多的tcp协议代理就无需关心网络架构底层实现,只需要根据需要开发对应的协议解析模块,和自己关心的统计、审计等功能功能,降低开发成本。现有开源的中间件,很大一部分都是tcp的,有自己的私有tcp协议,把这个抽象出来,开发成本会更低 。

【编辑推荐】

  1. Redis存储总用String?你大概错过了更优的使用方法
  2. Redis实现分布式锁的正确姿势
  3. 一文揭秘单线程的Redis为什么这么快?
  4. 面试前必须要知道的Redis面试
  5. 深入了解一下Redis的内存模型!
【责任编辑:庞桂玉 TEL:(010)68476606】
点赞 0

(编辑:拼字网 - 核心网)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!