网络服务器设计的模型及一些设计方法

网络设计与架构:优化与实践 本文深入探讨了网络设计和架构中的关键问题,涵盖了不同网络模型的匹配、校园核心网络的最佳实践、服务器的合理布局以及如何通过网络协议和硬件优化来提升网络性能和稳定性。文章通过实际案例分析,提供了网络设计的多项最佳实践,并探讨了在不同应用场景下选择合适技术的重要性。 阅读详情

1.常用服务器模型
a.迭代服务器
只有一个进程/线程处理请求
设计方法:
一般为单进程,加上select多路复用,非阻塞socket
b.迭代/并发混合型服务器
平时迭代处理,对消耗大的请求并发处理
设计方法:
平时是迭代型的服务器
处理请求时设置一个超时,当请求的处理时间超时时,创建一个进程/线程,把处理转给新的进程/线程处理,主进程/线程继续处理其他请求
c.并发服务器
多个进程/线程并发处理请求
设计方法: 多进程,多线程


2.以上三类的服务器比较
迭代服务器:最简单,性能不高
并发服务器:性能较高,但结构相对比较复杂,开发难度中等
迭代/并发混合型服务器:性能不错,但结构通常比单纯的并发服务器更复杂


3.多进程的并发服务器
a.每个连接fork一个进程
主进程accpet连接,有新连接到来时fork一个进程,然后继续accept,等待新的连接
数据传输由子进程处理,处理完后子进程exit
每个子进程只处理一个连接
b.Prefork进程,各个子进程竞争accept
主进程预先fork一些进程
各个子进程竞争accept,然后处理数据传输
一个子进程可以处理一个连接,也可以同时处理多个连接(通过select等)
惊群现象
c.Prefork进程,由父进程accept请求,通过流管道转发fd到子进程
主进程accept,通过流管道转发fd到子进程
子进程收到fd后,处理数据传输,处理结束后通知父进程
父进程处理的事情比较简单,容易监控子进程
以上3种方式性能比较:
a.每个连接fork一个进程:处理smtp等状态较多,数据量比较大时比较简单实用,总体性能不大好
b.Prefork进程,各个子进程竞争accept:比较简单,性能不错
c.Prefork进程,由父进程accept请求,通过流管道转发fd到子进程:代码复杂,性能一般不如上一种


4.多线程的并发服务器
每个连接一个线程
Prethread多个线程,各个线程互斥accept
Prethread多个线程,主线程accept并分发连接给子线程


5.多进程与多线程的比较
使用线程的模型:性能比使用进程要高,但代码比较复杂,对代码质量要求更高
线程出错后可能会影响到所有线程,多进程的模式一个进程出错一般不会影响其他进程
多线程模型共享数据比较简单有效,多进程模型共享数据比较麻烦,效率也不如线程


6.一些流行的网络服务器采用的模型
Sendmail: 采用多进程,每个连接fork一个进程.
每个连接fork一个子进程
子进程只处理一个连接
子进程fork一个localmail进程(可以由用户自己编写),通过管道把数据转给localmail处理,把邮件处理业务逻辑独立出来
优点:结构简单,不用维护复杂的状态机
Apache1.3:采用多进程, prefork进程,各个子进程竞争accept
Prefork一些子进程
子进程竞争accept,每次只处理一个连接
主进程不accept,根据负载情况调整子进程数量
子进程运行一段时间后,主进程会让它退出,然后创建一个新的进程,防止内存泄漏等
主进程通过shared memory监控子进程


7.Tencent自己的一些网络服务器采用的模型
移动QQ: Prefork多个进程,竞争accept,
典型的一问一答TCP服务器,结构简单
Prefork多个进程,竞争accept
每个进程通过select可以同时处理多个连接
采用这种结构的原因有:
每秒请求<1000,可以满足要求
结构简单,容易开发、维护

古风仙侠少女三视图提示词,一键生成角色设定 3D中国写实CG风格,CG渲染质感,精细3D建模,PBR物理材质,细腻服装纹理,电影级灯光,丰富表情,高精度场景,次世代引擎画质。平视正交视角,统一光照,纯白背景,无文字无水印,避免强透视和动态变形。3D中国写实CG风格,CG渲染质感,精细3D建模,PBR物理材质,细腻服装纹理,电影级灯光,丰富表情,高精度场景,次世代引擎画质。3D中国写实CG风格,CG渲染质感,精细3D建模,PBR物理材质,细腻服装纹理,电影级灯光,丰富表情,高精度场景,次世代引擎画质。少女,古风仙侠少女气质,灵动、温婉、仙气。 阅读详情

相关推荐

EGO_Plannerv2代码学习(一):栅格建图之V1 V2的区别

最近在尝试将高飞老师的集群规划器部署到真实无人机上跑一下,开这个新帖记录下学习过程中的问题和想法。

qq_41069236的博客 5753

服务器的几种模型

<br />出自:http://tieba.baidu.com/f?kz=204063863<br /> <br /> <br />循环服务器:循环服务器在同一个时刻只可以响应一个客户端的请求  <br /><br /> 并发服务器:并发服务器在同一个时刻可以响应多个客户端的请求  <br /> <br />1、循环服务器:UDP服务器 <br />UDP循环服务器的实现非常简单:UDP服务器每次从套接字上读取一个客户端的请求,处理, 然后将结果返回给客户机.  <br /><br /> 可以用下

yuanzhenhai的专栏 707

eQTL:连接突变与基因表达的桥梁

欢迎关注”生信修炼手册”!在高等生物中,很多的重要性状都为数量形状,比如农作物的产量,人类复杂疾病(高血液,糖尿病)等等。对于这些数量性状而言,往往受到多个基因的调控作用。为了更好的开展...

庐州月光的博客 7071

常用的服务器模型

常用的服务器模型

weixin_48150445的博客 661

聊一聊固态电池和钠离子电池新技术

总之,固态电池是一种“安全又高效的未来电池”,它的好处非常明显,但目前还处于研发阶段,离普及还有一段距离。未来,这两种技术可能会与锂离子电池并存,分别满足不同的市场需求。我尝试用最通俗易懂的语言将复杂的技术讲给大家听。钠离子电池和锂离子电池的工作原理很相似,但它用的是。固态电池和钠离子电池是两种正在研发和推广的。,它们有潜力解决现有锂离子电池的部分缺点。,而不是锂(Li)。

weixin_33324696的博客 3333

AMD MI50 Linux ROCm 6.4 手动编译与大模型推理实战

GPU加速计算是现代AI推理的核心基础,其性能依赖于硬件架构、驱动栈与运行时环境的深度协同。ROCm作为AMD开源GPU计算平台,采用‘自下而上’的Linux生态集成路径,强调对上游内核、编译器与固件的强耦合。MI50基于Vega 20(gfx900)架构,虽具备32GB HBM2高带宽显存与14.7 TFLOPS FP16算力,但因ROCm官方支持策略转向CDNA架构,自6.5版本起被移出支持列表,仅ROCm 6.4仍提供实验性兼容——这使其成为Linux下部署私有大模型的关键‘最后一班船’。本文围绕MI

weixin_32770423的博客 370

服务器程序的设计方法

服务器程序与客户端程序的不同之处在于Socket的制作方法,因为在服务器程序中要准备好服务器Socket之后等待客户端的连接请求。         在netlock中,要在开始处就生成服务器Socket,生成ServerSocket实例的构造器有几种,此程序中采用指定服务器端口号与指定最大连接数Backlog的构造器。         代码如下: import java.io.*; imp

u011365209的专栏 896

THB6128步进电机驱动芯片介绍

THB6128芯片也称为步进电机驱动芯片,采用BiCDMOS工艺,IC管脚间距为1mm的小型MFP30KR封装而成。

weichen_78的博客 7182

简单web服务器的设计与实现

socket web服务器

zdy_lsh的博客 1万+

YOLO26科研升级:OREPA在线重参数化,让模型精度在训练中持续跃升

在目录下,新建AddModules文件夹,将orepa.py放入其中。

LXY_LOVE36的博客 99

【Bug已解决】Anthropic tool_result 找不到对应 tool use id 解决方案

方案适用场景推荐指数每个tool_use必须生成对应tool_result最基础的原则,所有Harness都必须遵守⭐⭐⭐⭐⭐裁剪历史时成对处理实现了上下文裁剪/压缩逻辑的Harness⭐⭐⭐⭐⭐并行工具调用结果数量校验支持多工具并行调用的场景⭐⭐⭐⭐使用官方SDK高层封装不需要特别定制消息组装逻辑⭐⭐⭐⭐请求前主动校验中间件追求生产级健壮性,提前拦截问题⭐⭐⭐⭐⭐这类报错,本质上是。

一键难忘的博客 1万+

游戏服务器架构探讨

重回技术怀抱 ---- 开篇   有段时间没有研究技术了,这次正好看到了新版的mangos,较之以前我看的版本有了比较大的完善,于是再次浏览了下他的代码,也借此机会整理下我在游戏服务器开发方面的一些心得,与大家探讨。  另外由于为避免与公司引起一些不必要的纠纷,我所描述的全都是通过google能够找到的资料,所以也可以认为我下面的内容都是网上所找资料的整理合集。在平时的开发中我也搜索过相关

gddsky的小空间 4291

GameFramework教程✨六、怎样加载一个3D UI

怎样加载一个3D UI

星河造梦坊 1583

网络服务器设计的模型及一些设计方法(转)

收藏 1. 常用服务器模型 a.迭代服务器:只有一个进程/线程处理请求。一般为单进程,加上select多路复用,非阻塞socket。 b.迭代/并发混合型服务器:平时迭代处理,对消耗大的请求并发处理。处理请求时设置一个超时,当请求的处理时间超时时,创建一个进程/线程,把处理转给新的进程/线程处理,主进程/线程继续处理其他请求。 c.并发服务器:多个进程/线程并发处理请求。 2. 以上三类的服务器比

wzwind的专栏 763

怀旧版电脑GBC模拟器

再现原版GBC掌机的界面,电脑运行连游戏界面都一样大小,很怀旧,很真实,(英文版)强烈推荐,很小的文件,很难才找到的。

jre9下载 jdk9

(Java SE Runtime Environment 9.0) 9.0u175 官方最新版 【x86|x64】

毕业设计 机器学习服务器异常日志分类(源码+论文)

🔥这两年开始毕业设计和毕业答辩的要求和难度不断提升,传统的毕设题目缺少创新和亮点,往往达不到毕业答辩的要求,这两年不断有学弟学妹告诉学长自己做的项目系统达不到老师的要求。为了大家能够顺利以及最少的精力通过毕设,学长分享优质毕业设计项目,今天要分享的是🚩毕业设计 基于深度学习的新闻文本分类算法系统(源码+论文)🥇学长这里给一个题目综合评分(每项满分5分)难度系数:3分工作量:3分创新点:4分🧿 项目分享:见文末!项目包含内容1万4千字 完整详细设计论文🧿 项目分享:见文末!

fawubio的博客 344

Data-Structures-and-Algorithm-Analysis-in-Java.pdf

作者: Weiss, Mark A. 出版社: Addison Wesley Data Structures and Algorithm Analysis in Java is an “advanced algorithms” book that fits between traditional CS2 and Algorithms Analysis courses. In the old ACM Curriculum Guidelines, this course was known as CS7. This text is for readers who want to learn good programming and algorithm analysis skills simultaneously so that they can develop such programs with the maximum amo...

Linux 网络编程——并发服务器的三种实现模型

服务器设计技术有很多,按使用的协议来分有 TCP 服务器和 UDP 服务器,按处理方式来分有循环服务器和并发服务器。循环服务器与并发服务器模型在网络程序里面,一般来说都是许多客户对应一个服务器(多对一),为了处理客户的请求,对服务端的程序就提出了特殊的要求。目前最常用的服务器模型有:·循环服务器:服务器在同一时刻只能响应一个客户端的请求·并发服务器:服务器在同一时刻可以响应多个客户端的请求UDP ...

秋叶原 && Mike || 麦克 9万+

服务器模型

1. 在网络程序里面,通常都是一个服务器处理多个客户机。为了处理多个客户机的请求,服务器端的程序有不同的处理方式。目前最常用的服务器模型:1)循环服务器:循环服务器在同一个时刻只能响应一个客户端的请求2)并发服务器:并发服务器在同一个时刻可以响应多个客户端的请求 2. 循环服务器模型无论是TCP循环服务器还是UDP循环服务器,其本质就是一个while循环,这种模型低效也很少使用,本博文不再叙述。 ...

朝辞暮见的博客 1387

毕设 机器学习服务器异常日志分类(源码+论文)

🔥这两年开始毕业设计和毕业答辩的要求和难度不断提升,传统的毕设题目缺少创新和亮点,往往达不到毕业答辩的要求,这两年不断有学弟学妹告诉学长自己做的项目系统达不到老师的要求。为了大家能够顺利以及最少的精力通过毕设,学长分享优质毕业设计项目,今天要分享的是🚩毕业设计 基于深度学习的新闻文本分类算法系统(源码+论文)🥇学长这里给一个题目综合评分(每项满分5分)难度系数:3分工作量:3分创新点:4分🧿 项目分享:见文末!项目包含内容1万4千字 完整详细设计论文🧿 项目分享:见文末!

mabile123444的博客 493

毕设成品 机器学习服务器异常日志分类(源码+论文)

🔥这两年开始毕业设计和毕业答辩的要求和难度不断提升,传统的毕设题目缺少创新和亮点,往往达不到毕业答辩的要求,这两年不断有学弟学妹告诉学长自己做的项目系统达不到老师的要求。为了大家能够顺利以及最少的精力通过毕设,学长分享优质毕业设计项目,今天要分享的是🚩毕业设计 基于深度学习的新闻文本分类算法系统(源码+论文)🥇学长这里给一个题目综合评分(每项满分5分)难度系数:3分工作量:3分创新点:4分🧿 项目分享:见文末!项目包含内容1万4千字 完整详细设计论文🧿 项目分享:见文末!

m0_12378的博客 555

【Linux网络编程】并发服务器的三种实现模型

服务器设计技术有很多,按使用的协议来分有 TCP 服务器和 UDP 服务器,按处理方式来分有循环服务器和并发服务器。 循环服务器与并发服务器模型 在网络程序里面,一般来说都是许多客户对应一个服务器(多对一),为了处理客户的请求,对服务端的程序就提出了特殊的要求。 目前最常用的服务器模型有: ·循环服务器:服务器在同一时刻只能响应一个客户端的请求

C/C++软件工程师、嵌入式软件工程师、物联网研发工程师、C/C++讲师、物联网讲师、嵌入式讲师、鸿蒙讲师---欢迎大家一起交流(私信添加博主微信) 1701

毕设项目分享 机器学习服务器异常日志分类(源码+论文)

🔥这两年开始毕业设计和毕业答辩的要求和难度不断提升,传统的毕设题目缺少创新和亮点,往往达不到毕业答辩的要求,这两年不断有学弟学妹告诉学长自己做的项目系统达不到老师的要求。为了大家能够顺利以及最少的精力通过毕设,学长分享优质毕业设计项目,今天要分享的是🚩毕业设计 基于深度学习的新闻文本分类算法系统(源码+论文)🥇学长这里给一个题目综合评分(每项满分5分)难度系数:3分工作量:3分创新点:4分🧿 项目分享:见文末!项目包含内容1万4千字 完整详细设计论文🧿 项目分享:见文末!

knooor的博客 362

毕设开源 机器学习服务器异常日志分类(源码+论文)

🔥这两年开始毕业设计和毕业答辩的要求和难度不断提升,传统的毕设题目缺少创新和亮点,往往达不到毕业答辩的要求,这两年不断有学弟学妹告诉学长自己做的项目系统达不到老师的要求。为了大家能够顺利以及最少的精力通过毕设,学长分享优质毕业设计项目,今天要分享的是🚩毕业设计 基于深度学习的新闻文本分类算法系统(源码+论文)🥇学长这里给一个题目综合评分(每项满分5分)难度系数:3分工作量:3分创新点:4分🧿 项目分享:见文末!项目包含内容1万4千字 完整详细设计论文🧿 项目分享:见文末!

bee_dc的博客 461

网络基础知识梳理和Muduo库使用

本文梳理了网络编程的基础知识,并介绍了Muduo库的使用。首先,文章概述了TCP和UDP协议、IO复用接口(select、poll、epoll)以及多线程编程等基础知识。接着,详细解释了阻塞、非阻塞、同步、异步等IO模型,并通过代码示例展示了Linux提供的同步和异步IO接口。文章还介绍了Unix/Linux上的五种IO模型,包括阻塞IO、非阻塞IO、IO复用、信号驱动和异步IO,分析了它们的优缺点和适用场景。最后,文章提出了“one loop per thread”的服务器设计模型,强调在多核时代,每个线

qq_55317476的博客 1048
上一篇: 软件开发高手:十年磨一剑 beiyan
下一篇: 流媒体相关知识介绍及其RTP应用
ccfboy
博客等级 码龄18年 45粉丝 23原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值