12_Redis为什么这么快&高性能设计之epoll和IO多路复用深度解析

Redis为什么这么快&高性能设计之epoll和IO多路复用深度解析

一、before

  1. 多路复用要解决的问题

  2. 结论

二、IO多路复用模型

2.1 是什么

  1. IO:网络IO
  2. 多路:多个客户端连接(连接就是套接字描述符,即socket或者channel),指的是多条TCP连接
  3. 复用:用一个进程来处理多条连接,使用单进程就能够实现同时处理多个客户端的连接
  4. 总结:
    1. 实现了用一个进程来处理大量的用户连接
    2. IO多路复用类似一个规范和接口,落地实现可以分 select -> poll -> epoll 三个阶段来描述

2.2 Redis单线程如何处理那么多并发客户端连接,为什么单线程,为什么快

12_Redis为什么这么快&高性能设计之epoll和IO多路复用深度解析_第1张图片

2.3 参考《Redis设计与实现》

12_Redis为什么这么快&高性能设计之epoll和IO多路复用深度解析_第2张图片

12_Redis为什么这么快&高性能设计之epoll和IO多路复用深度解析_第3张图片

总结:

12_Redis为什么这么快&高性能设计之epoll和IO多路复用深度解析_第4张图片

2.4 同步&异步&阻塞&非阻塞

案例:

  1. 同步

    调用者要一直等待调用结果的通知后才能进行后续的执行,现在就要,我可以等,等出结果为止。

  2. 异步

    指被调用方先返回答应,让调用者先回去,然后再计算调用结果,计算完最终结果后再通知并返回给调用方

    异步调用要想获得结果一般通过回调

  3. 同步与异步

    同步、异步的讨论对象是被调用者(服务提供者),重点在于获得调用结果的消息通知方式上

  4. 阻塞

    调用方一直在等待而且不能做别的任何事情,当前进程或线程会被挂起

  5. 非阻塞

    调用在发出后,调用方先去忙别的事情,不会阻塞当前进程或线程,而是立即返回

  6. 阻塞与非阻塞

    阻塞、非阻塞的讨论对象是调用者(服务请求者),重点在于等消息时候的行文,调用者能够干其他事情

  7. 总结

    1. 同步阻塞:服务员说快到你了,先别离开,我后台看一眼,马上通知你。客户在海底捞火锅前台干等着,啥都不干。
    2. 同步非阻塞:服务员说快到你了,先别离开。客户在海底捞火锅前台边刷抖音边等着叫号。
    3. 异步阻塞:服务员说还要再等等,你先去逛逛,一会儿通知你。客户怕过号,在海底捞火锅前台拿着排号小票等着,啥也不干,一直等着店员通知。
    4. 异步非阻塞:服务员说还要再等等,你先去逛逛,一会儿通知你。客户拿着小票排队,一边刷着抖音,等着店员通知。

2.5 Unix网络编程中的五种IO模型

  1. Blocking IO:阻塞IO
  2. NoneBlocking IO:非阻塞IO
  3. IO multiplexingIO 多路复用
  4. signaldriven IO:信号驱动 IO
  5. asynchrous IO:异步IO

2.6 Java验证

  1. BIO

    12_Redis为什么这么快&高性能设计之epoll和IO多路复用深度解析_第5张图片

  2. NIO

    12_Redis为什么这么快&高性能设计之epoll和IO多路复用深度解析_第6张图片

    12_Redis为什么这么快&高性能设计之epoll和IO多路复用深度解析_第7张图片

2.7 IO多路复用详情

  1. 是什么

    12_Redis为什么这么快&高性能设计之epoll和IO多路复用深度解析_第8张图片

    12_Redis为什么这么快&高性能设计之epoll和IO多路复用深度解析_第9张图片

    12_Redis为什么这么快&高性能设计之epoll和IO多路复用深度解析_第10张图片

  2. 能干嘛

    reactor设计模式

    12_Redis为什么这么快&高性能设计之epoll和IO多路复用深度解析_第11张图片

    image-20230319200029591

    每一个网络连接其实都对应一个文件描述符

    12_Redis为什么这么快&高性能设计之epoll和IO多路复用深度解析_第12张图片

    12_Redis为什么这么快&高性能设计之epoll和IO多路复用深度解析_第13张图片

  3. select、poll、epoll 都是IO多路复用的具体实现

    select

    优点:

    缺点:

    12_Redis为什么这么快&高性能设计之epoll和IO多路复用深度解析_第14张图片

    poll

    12_Redis为什么这么快&高性能设计之epoll和IO多路复用深度解析_第15张图片

    epoll

    总结:

    12_Redis为什么这么快&高性能设计之epoll和IO多路复用深度解析_第16张图片

  4. 5中IO模型总结

你可能感兴趣的:(redis,redis,数据库,缓存)