找到约 1645 条结果
  • 云原生现场分析 Part4 — eBPF 跟踪 Istio/Envoy 之上下游事件驱动协作下的 HTTP 反向代理流程
    注,原文来自 [链接] 。如你看到的转载图片不清,请回到原文。为何要了解 upstream/downstream 事件驱动协作下的 HTTP 反向代理流程逆向工程与云原生现场分析 系列介绍HTTP 反向代理的总流程Downstream Read Request 模块协作Upstream Write Request 模块协作Upstream Read Response 模块协作Downstream Write Response ...
    2022-04-07
  • Go中的网络轮询器(1)--Epoll在Go中的抽象
    Go用netpoll实现对不同操作系统的I/O多路复用的抽象(或者说是封装),Go中多路复用与平台无关。编译器在编译时根据平台的不同使用不同的多路复用器进行编译。
    2022-09-07
  • I/O并发编程总结
    在传统的网络服务器的构建中,IO模式会按照Blocking/Non-Blocking、Synchronous/Asynchronous这两个标准进行分类,其中Blocking与Synchronous基本上一个意思,而NIO与Async的区别在于NIO强调的是Polling(轮询),而Async强调的是Notification(通知)。譬如在一个典型的单进程单线程Socket接口中,阻塞型的接口必须在上一个...
    2016-04-10
    3
  • Redis单线程为什么快
    为啥这么快:1.redis是基于内存的,内存的读写速度非常快; 2.redis是单线程的,省去了很多上下文切换线程的时间; 3.redis使用多路复用技术,可以处理并发的连接;
    2020-06-09
  • 【随笔】异步编程浅析
    1.最近研究redis关于主从复制的功能实现,发现客户端实时响应slaveof的命令后,把主从复制添加到epoll的时间事件中再进行操作。因此有疑问,redis是如何进行文件和时间事件的调度
    2018-10-24
  • 记一次 strace 追踪的 Docker + VirtualBox 的底层 bug
    Docker 是一种容器技术,它可以提供一个隔离的环境,让用户的程序运行在一个完全隔离的虚拟的系统里,但 Docker 不是虚拟化,使用 Docker 可以在 Linux 上实现对于任意程序打包一次,到处运行。愿意接受安利的同学请移步 [链接] 。
    2016-02-03
    5
  • Redis 为什么这么快?
    使用单线程,可以避免不必要的上下文切换和竞争条件,没有多进程或多线程引起的切换和 CPU 的消耗,不必考虑各种锁的问题,没有锁释放或锁定操作,不会因死锁而降低性能;
    2020-02-26
  • 从源代码角度看epoll在Go中的使用(一)
    Go提供了功能完备的标准网络库:net包,net包的实现相当之全面,httptcpudp均有实现且对用户提供了简单友好的使用接口。在Linux系统上Go使用了epoll来实现net包的核心部分,本文从用户接口层入手,分析Go在Linux平台上的epoll使用,文中若有不当之处请指出。
    2020-02-22
  • 高性能服务器开发基础系列 (一)主线程与工作线程的分工
    服务器端为了能流畅处理多个客户端链接,一般在某个线程A里面accept新的客户端连接并生成新连接的socket fd,然后将这些新连接的socketfd给另外开的数个工作线程B1、B2、B3、B4,这些工作线程处理这些新连接上的网络IO事件(即收发数据),同时,还处理系统中的另外一些事务。这里我们将线程A称为主线程,B1、B2、B3、B4...
    2018-05-23
  • 彻底搞懂 IO 底层原理
    “道”  最基础的计算机理论,隐藏于表象之下,非常抽象、晦涩难懂,需要用具象化的事物加以理解;“术” 具体的技艺,它有可能是一门语言,比如:python 出手见效快;
    2020-11-30
  • Redis 源码:Redis 网络模型、通信协议和内存回收
    文件描述符(File Descriptor):简称 FD,是一个从 0 开始递增的无符号整数,用来关联 Linux 中的一个文件,在 Linux 中,一切皆文件,例如常规文件、视频、硬件设备等,当然也包括网络套接字(Socket)
    2023-10-23
  • 就这一次:TCP、IP、操作系统、Netty、算法一次性讲透
    就这一次:大学四年没有学会的TCPIP、操作系统、SocketIO、NIO、Linux内核、Epoll、数据结构与算法,一堂课讲明白IO篇1,为什么IO这么重要2,阻塞和非阻塞的本质区别3,java代码和内核如何交互4、NIO和多路复用器的差异5,IO在面试中起到的作用从TCP,NIO,Epoll一直学到Netty0、TCP通信基础0.1 操作系统中的BIONIOSELEC...
    2020-09-08
  • 多人聊天室 (多线程 || epoll)
    使用多线程缺点很明显,服务器为每个客户开一个线程,每个线程都阻塞等待读客户端需要两个线程,一个用来读,一个用来写。epoll的代码还在研究中[链接]可以参考这个顺便一提windows下没有epoll,只有Linux支持。
    2021-02-18
  • 两种高效的事件处理模式
    服务器程序通常需要处理三类事件:I/O 事件、信号及定时事件。随着网络设计模式的兴起,Reactor 和 Proactor 事件处理模式应运而生。同步 I/O 模型通常用于实现 Reactor 模式,异步 I/O 模型则用于实现 Rroactor 模式。
    2017-08-14
  • 从阻塞IO到io_uring: Linux IO模型的演进之路
    最近想重新梳理一下自己对BIO、NIO 、AIO、IO_Uring的理解,让我们来先说BIO,所BIO就是 Blocking IO,那究竟Blocking在什么地方呢? 让我们先开始写代码,首先我们需要开启一个ServerSocketChannel,驻留在对应的端口上,监听连接:
    2025-02-28
  • IO模型
    Redis是单线程的,为什么支持高并发?node.js,nginx也是单线程的。除了Redis数据是存在内存里面的,所有操作都是内存级别的,还有其它原因导致它有如此高的性能?
    2019-05-29
  • muduo源码分析之muduo简单运用
    今天不先实现muduo项目,我们先来看下muduo库的基本使用,只有了解了如何用,才能在写代码的时候知道自己写的找个函数是干嘛的,实际上是怎么使用的这个函数。首先说简单点,就是定义一个Server,设置两个回调函数
    2022-04-22