经过多线程处理提升Redis性能

Redis一般被称为单进程单线程模型。程序员

这不是真的!后端

Redis还运行多个后端线程来执行后端清理工做,例如清理脏数据和关闭文件描述符。在Redis中,主线程负责主要任务,包括但不限于:接收来自客户端的链接,处理链接读/写事件,解析请求,处理命令,处理定时器事件和同步数据。只有一个CPU核心运行单个进程和单个线程。缓存

对于小数据包,Redis服务器能够处理80,000到100,000 QPS。更大的QPS超出了Redis服务器的处理能力。常见的解决方案是在分布式架构中对数据进行分区并采用多个服务器。安全

然而,该解决方案也具备许多缺点。例如,要管理的Redis服务器太多; 某些适用于单个Redis服务器的命令不适用于数据分区; 数据分区没法解决热点读/写问题; 数据偏斜,从新分配和放大/缩小变得更加复杂。因为单进程和单线程的限制,咱们但愿能够重构多线程以充分利用SMP多核架构的优点,从而提升单个Redis服务器的吞吐量。服务器

要使Redis成为多线程,最简单的思考方式是每一个线程都执行I / O和命令处理。可是,因为Redis处理的数据结构很复杂,多线程须要使用锁来确保线程安全。锁定粒度的不正确处理可能会下降性能。网络

咱们建议增长I / O线程的数量,以使独立的I / O线程可以读取/写入链接,解析命令和回复数据包中的数据,而且仍让单个线程处理命令并执行计时器事件。这样,能够增长单个Redis服务器的吞吐量。数据结构

单进程和单线程模型

好处

  1. 因为单进程和单线程模型的限制,耗时的操做(例如dict rehash和过时的密钥删除)被分解为多个步骤并在Redis实现中逐个执行。这防止了操做长时间执行,所以避免了操做对系统的长时间阻塞。单进程和单线程代码易于编译,这减小了由多进程和多线程引发的上下文切换和锁定占用。多线程

缺点

  1. 只能使用一个CPU内核,没法利用多核优点。架构

  2. 对于繁重的I / O应用程序,网络I / O操做会消耗大量CPU容量。使用Redis做为缓存的应用程序一般是繁重的I / O应用程序。这些应用程序基本上具备高QPS,使用相对简单的命令(例如get,set和incr),可是对RT敏感。它们一般具备高带宽使用率,甚至可能达到数百兆比特。因为10 GB和25 GB网络适配器的普及,网络带宽再也不是瓶颈。所以,咱们须要考虑的是如何利用多核的优点和网络适配器的性能。负载均衡

多线程模型与实现

线程模型

有三种线程类型,即:

  1. 主线程

  2. I / O线程

  3. 工人线程

    1. 主线程:接收链接,建立客户端,并转发到I / O线程的链接。

    2. I / O线程:处理链接读/写事件,解析命令,将完整解析的命令转发到工做线程进行处理,发送响应数据包并删除链接。

    3. 工做线程:处理命令,生成客户端响应数据包,并执行计时器事件。

    4. 主线程,I / O线程和工做线程分别由事件驱动。

    5. 线程经过无锁队列交换数据,并经过隧道发送通知。

    多线程模型的好处

    提升读/写性能

    压力测试结果代表,在小数据包场景中,读/写性能可提升约三倍。

  4. 提升主/从同步速度

    当主设备将同步数据发送到从设备时,数据将在I / O线程中发送。从主站读取数据时,从站从工做线程读取完整数据,从I / O线程读取增量数据。这能够有效地提升同步速度。

    后续任务

    第一项任务是增长I / O线程数并优化I / O读/写功能。接下来,咱们能够分解工做线程,以便每一个线程完成I / O读取,以及工做线程的工做。

    设置I / O线程数

    1. 测试结果代表I / O线程的数量不该超过6.不然,工做线程将成为简单操做的瓶颈。

    2. 在启动进程时,必须设置I / O线程的数量。进程运行时,没法修改I / O线程数。根据当前的链接分配策略,修改I / O线程的数量涉及从新分配链接,这很是复杂。

    注意事项

    1. 随着10 GB和25 GB网络适配器的普及,必须仔细考虑如何充分利用硬件性能。咱们能够使用技术,例如用于networkI / O的多线程和内核绕过用户模式协议栈。

    2. I / O线程可用于实现无阻塞数据迁移。I / O线程对数据进程进行编码或转发命令,而目标节点对数据进行解码或执行命令。

    ————————————————————

    推荐阅读:

    老王讲架构:负载均衡

    支付宝系统架构内部剖析

    大数据Spark与Storm技术选型

    【赞】用Python实现Zabbix-API 监控

    程序员怎么留住健康?

    大数据智慧平台技术方案

    大数据聚合平台解决方案

相关文章
相关标签/搜索