网络编程
文章平均质量分 95
网络
柏油
不负冬日春晓 不负青春韶华
展开
-
《高性能网络模型学习路线图》让你少走弯路,持续更新中 ...
说到高性能网络编程,你的脑海里会想到:IO 多路复用、Reactor 、epoll 等等。这些都是高性能网络模型的组成,本文致力于梳理高性能网络模型系列文章,帮助你真正吃透高性能网络模型。原创 2022-09-15 07:30:00 · 429 阅读 · 0 评论 -
一文搞懂,redis单线程执行全貌(深入拆解分析)
redis 6.0 版本之前,采用的是单线程模型,即:一个线程既要负责命令读写、解析,又要负责命令执行。但是,仍然能达到极高的并发能力,其终极法宝是`优秀的IO模型 + 纯内存操作 + 优秀的数据结构及算法的设计`。redis6.0 及之后的版本,引入了多线程模型,主要目的是`分担主线程的压力`,负责部分IO事件读写、解析的工作;但是,命令执行仍然都由主线程处理。原创 2022-05-04 16:28:54 · 3608 阅读 · 3 评论 -
高性能网络编程之 Reactor 网络模型(彻底搞懂)
网络框架的设计离不开 I/O 线程模型,线程模型的优劣直接决定了系统的吞吐量、可扩展性、安全性等。目前主流的网络框架几乎都采用了 I/O 多路复用的方案。Reactor 模式作为其中的事件分发器,负责将读写事件分发给对应的读写事件处理者。大名鼎鼎的 Java 并发包作者 Doug Lea,在 Scalable I/O in Java 一文中阐述了服务端开发中 I/O 模型的演进过程。Netty 中三种 Reactor 线程模型也来源于这篇经典文章有助于分担 Reactor 线程的压力。原创 2022-04-26 23:38:14 · 10194 阅读 · 10 评论 -
I/O多路复用模型之 select、poll、epoll
Redis 作为一个 Client-Server 架构的数据库,其源码中少不了用来实现网络通信的部分。而你应该也清楚,通常系统实现网络通信的基本方法是使用 Socket 编程模型,**包括创建 Socket、监听端口、处理连接请求和读写请求**。但是,由于基本的 **Socket 编程模型一次只能处理一个客户端连接上的请求**,所以当要处理高并发请求时,一种方案就是使用多线程,让每个线程负责处理一个客户端的请求。而 Redis 负责客户端请求解析和处理的线程只有一个,那么如果直接采用基本 Socke原创 2022-04-20 23:29:24 · 5266 阅读 · 4 评论 -
Tomcat整体架构,脉络梳理看这篇就够了~
文章目录前言Tomcat 要实现 2 个核心功能:Tomcat 支持的多种 I/O 模型和应用层协议Tomcat组件一览一、Tomcat核心组件1、Server组件2、Service组件3、Connector组件4、Engine组件5、Host组件6、Context组件7、Wrapper组件二、请求处理整体过程总结前言Tomcat 要实现 2 个核心功能:处理 Socket 连接,负责网络字节流与 Request 和 Response 对象的转化。加载和管理 Servlet,以及具体处理 Re原创 2021-08-26 23:54:11 · 1115 阅读 · 0 评论 -
NioEndpoint核心组件,tomcat参数调优你用得着
文章目录前言一、NioEndpoint总体概览二、NioEndpoint核心实现1. LimitLatch组件2. Acceptor组件3. Poller组件4. SocketProcessor5. Executor总结前言NioEndpoint在Tomcat中扮演的角色负责接收请求的连接,并封装成SocketProcessor,最后交给线程池去执行;NioEndpoint 组件实现了 I/O 多路复用模型。一、NioEndpoint总体概览Tomcat 的 NioEndpoint 包含原创 2021-08-20 00:13:22 · 958 阅读 · 0 评论 -
一文搞懂,4种主要的 I/O 模型(高并发IO的底层原理)
文章目录前言4种主要的IO模型1. 同步阻塞IO2. 同步非阻塞IO3. IO多路复用4. 异步I/O总结前言I/O是什么?I/O 就是计算机内存与外部设备之间拷贝数据的过程,CPU 访问内存的速度远远高于外部设备,因此 CPU 是先把外部设备的数据读到内存里,然后再进行处理I/O模型要解决的问题考虑一个实际场景:数据读取操作的基本流程,首先是在用户态发起调用操作,通过系统函数read()间接的调用系统内核,从网卡读取数据,先将数据读取到内核缓冲区,再由内核缓冲区拷贝到用户态内存缓冲区原创 2021-08-18 00:29:50 · 4992 阅读 · 4 评论 -
socket编程1(linux环境下)
描述:有服务端(server)客户端(client)程序,要求实现,服务端从文件中读取文件信息,一次读取10个字节,然后发送到客户端显示,每次读取之后睡眠1秒钟。server.c:/*server.c*/#include <sys/types.h>#include <sys/socket.h>#include <stdio.h>#inc...原创 2018-05-24 21:47:54 · 541 阅读 · 0 评论