怎么理解并发多进程服务和多线程服务器

怎么理解并发多进程服务和多线程服务器,第1张

1,进程:子进程是父进程的复制品。子进程获得父进程数据空间、堆和栈的复制品。

2,线程:相对与进程而言,线程是一个更加接近与执行体的概念,它可以与同进程的其他线程共享数据,但拥有自己的栈空间,拥有独立的执行序列。

两者都可以提高程序的并发度,提高程序运行效率和响应时间。

线程和进程在使用上各有优缺点:线程执行开销小,但不利于资源管理和保护;而进程正相反。同时,线程适合于在SMP机器上运行,而进程则可以跨机器迁移。

答案二:

根本区别就一点:用多进程每个进程有自己的地址空间(address space),线程则共享地址空间。所有其它区别都是由此而来的:

1。速度:线程产生的速度快,线程间的通讯快、切换快等,因为他们在同一个地址空间内。

2。资源利用率:线程的资源利用率比较好也是因为他们在同一个地址空间内。

3。同步问题:线程使用公共变量/内存时需要使用同步机制还是因为他们在同一个地址空间内。

网上的答案的 版本怎么想怎么都太学术了。我当时看到过一个比喻特别的好, 我就模仿者把它说下来哈,有错误希望支持哈:

多进程的服务器就好比是

立体的交通系统(立交桥)虽然说建造的时候花费比较大,消耗的资源比较多,但是真要是跑起来不会交通堵塞。但是汽车在上面跑,相互通信就是个很费事儿问题(进程间通信比较麻烦);多线程就好比是平面的交通系统,造价低,但是很容易交通堵塞,

但是也有好处同步的时候方便。

在网络服务器方面:

单进程 < 多进程(单线程)< 多进程(多线程)

在游戏方面的应用:

I、多线程服务器,玩家数据缓存和向DB的存储我们可以开一个线程单独去做,这样不会有什么大的问题。日志和网络上面说过可以很容易切割出去,主要就是对游戏逻辑的切割。

A:按场景分线程,一个线程管理若干个场景。这样配置灵活,一个线程可以管理若干个小场影,除非有个场景人多到一个CPU跑不下来,一般的游戏都会满足需求。缺点则是不在同一线程的Object在做逻辑交互时,必须用异步,如果用到了脚本,那么这里的复杂度和性能要值得注意。如果项目中出现单个服务器解决不鸟的问题(例如战场服务器),似乎就成了多线程多进程的庞大架构。

B:将某些功能切割到其它线程,例如Object的管理和查找,NPCAI的寻路,这种方式貌似在做逻辑需要分离到别的线程模块功能时有点麻烦,如果直接上锁等待肯定不是最好的方式,所以这些逻辑必须变成异步。

2、多进程服务器,其实这里的多进程和场景多线程改成了多进程。这里玩家数据缓存和向DB的存储我觉得用一个单独的DB服务器。多进程服务器可以在GameServer和GameClient之间加一个Gate,因为在跨服场景不需频繁断线连接。多进程服务器所有的通讯都依靠网络,有些逻辑必须有网络延迟的消耗。优点是配置灵活,在物理机器性能不够时可以通过扩充物理机器来解决

服务器还有有一个很蛋疼的问题就是过载: 下面介绍一下产生的原因和解决办法:

服务器过载:

原因是高优先级处理阶段对CPU的不公平抢占。所以,如果限制高优先级处理阶段对CPU的占用率,或者限制处理高优先级的CPU个数,都可以减轻或者消除收包活锁现象。具体的可以采用以下的方法:

方法一、采用轮询机制

为了减少中断对系统性能的影响,在负载正常的情况下采用“下半处理”的方法就非常有效,而在高负荷情况下,采用这个方法仍然会造成活锁现象,这时可以采用轮询机制。虽然这个方法在负载正常的情况下会造成资源的浪费和响应速度降低,但在网络数据频繁到达服务器时就要比中断驱动技术有效的多。

方法二、减低中断的频率

这里主要有两种方法:批中断和暂时关闭中断。批中断可以在超载时有效的抑制活锁现象,但对服务器的性能没有什么根本性的改进;当系统出现接收活锁迹象时,可以采用暂时关闭中断的方法来缓和系统的负担,当系统缓存再次可用时可以再打开中断,但这种方法在接收缓存不够大的情况下会造成数据包丢失。

方法三、减少上下文切换

这种方法不管服务器在什么情况下对性能改善都很有效,这时可以采用引入核心级(kerne1—leve1)或硬件级数据流的方法来达到这个目的。核心级数据流是将数据从源通过系统总线进行转发而不需要使数据经过应用程序进程,这个过程中因为数据在内存中,因此需要CPU操作数据。

硬件级数据流则是将数据从源通过私有数据总线或是虽等DMA通过系统总线进行转发而不需要使数据经过应用程序进程,这个过程不需要CPU操作数据。这样在数据传输过程中不需要用户线程的介入,减少了数据被拷贝的次数,减少了上下文切换的开销。

问题一:什么是轮询检测 有好些待检测的点,就如有好几个房间一样,你依次去访问每个房间,12345……12345……123,这样就是轮询了。只是这个工作是由硬件完成!

我理解的是不会的,由于轮询会有地址,所以在处理上应该是按时间来分配的,主站在访问一个从站时,会发送一个握手信号,如果得到的是肯定的信号,即任务,则接受任务,无任务,就跳转。具体你可以参考下《计算机网络》或者是《微机控制技术》等书籍。

问题二:轮询是什么意思,简单通俗点 动词作名词的时候在动词后面加上ing形式。

动词作名词可以作为主语和宾语运用,名词后面不可以加宾语,但是动名词后面可以加宾语。

例如:踢足球是我的爱好。

踢足球:Play football

但是在踢足球作主语的时候,要改成动词ing形式。

Playing football is my hobby!

问题三:安防监控里视频轮询是什么意思? 在监视器上循环显示各摄像机监控画面

问题四:什么是机械轮询速率 鼠标轮训率(即回报率,有时也称刷新率)指鼠标MCU(Micro Controller Unit,微型控制单元)与电脑的传输频率。例如回报率为125Hz则我们可以简单的认为MCU可以每8ms向电脑发送一次数据,500Hz则是每2ms发送一次。

某游戏鼠标在125Hz和1000Hz时的轮询率测试

回报率是玩家非常重视的鼠标性能参数,理论来说,更高的回报率更能发挥鼠标的性能,特别是对于游戏玩家来说更具实际意义。但高回报率同时也对电脑配置有更高要求,如果电脑配置较低同时又把鼠标回报率设置较高的话反而会造成鼠标掉帧的情况,且越高回报率越耗电,所以现在很多鼠标都提供了回报率调节设置。

普通办公要求鼠标回报率达到125Hz,而游戏级鼠标必须达到500Hz才能够让玩家满意,目前础界最高的鼠标回报率是1000Hz。

问题五:鼠标的dpl和polling是什么意思 DPI就是灵敏度,数值越高,移动一下鼠标,屏幕上指针就跑很远好的激光鼠标高的有8400,一般显示器19201080的分辨率调成1300~1800就够了

polling就是轮询率,也可以说是刷新率,就是每秒钟鼠标向电脑报告的次数,数值越高,你用鼠标移动时,指针在屏幕上的定位更精确好点的鼠标有1000/秒的

问题六:请问轮询回路是什么意思,急,谢谢 嗯!

问题七:苹果6手机出现轮询iP是什么意思 一个域名针对多个ip A记录的解析,DNS服务器将解析请求按照A记录的顺序,逐一分配到不同的IP上,这样就完成了简单的负载均衡

问题八:惠普一体机轮询接收什么意思 轮询接收传真

轮询可使hp all-in-one 请求另一传真机发送其队列中的传真。当您使用“轮询以接收”功能时,hp all-in-one 会呼叫指定的传真机,并请求从该传真机发送传真。指定的传真机必须设为轮询状态并有准备好发送的传真。

hp all-in-one 不支持轮询密码。轮询密码是一种安全功能,需要接收端传真机向其轮询的设备提供密码来接收传真。确保您轮询的设备没有设置密码(或未更改缺省密码),否则hp all-in-one 将无法接收传真。

hp officejet j3500 只能接收黑白传真。

从控制面板设置轮询来接收传真

1 在传真区域中,重复按传真菜单,直到出现“传真方式”。

2 输入另一台传真机的传真号码。

3 按开始传真/黑白或开始传真/彩色。

如果您按开始传真/彩色,但发件人发送的是黑白传真,则该设备打印黑白传真。

问题九:轮询监控是什么意思 就是根据设定,一个个检查

问题十:nginx负载均衡轮询是什么意思 请确定另外一个地址是否可以访问,如果另外一个地址nginx访问不了,那么就会出现你这种情况,永远只访问那个可以访问的地址

网络管理自动化

对于网络管理系统而言,用户希望能将时间和精力尽可能地投入到对网络有效的监控和管理上,而不是消耗在操作维护一个复杂的管理平台上。而安奈特AT-SNMPc网管平台软件的推出,不但使网络管理工作从过去繁杂的人工操作变成自动化,并且具有主动性和增值功能。

据悉,安奈特AT-SNMPc网管平台软件是一个结合了完整的网 管特性,高扩展能力,易用性的网管平台。该软件平台具有良好的伸缩特性,可以适用于任意规模的网络系统。

易于使用和部署

AT-SNMPc中文版安装简单,几分钟即可完成。提供全面的中文操作,对系统、交换机、路由器等网络设备提供专门的菜单项。在安装完毕后开始启动运行,AT-SNMPc 首先会自动查找网络所有的设备,并且依据设备间的路径关系绘制出拓扑结构图。在AT-SNMPc显示设备工作状况的同时,还会显示出设备间连接链路的状态,管理人员可以通过观察整体连接图,即刻掌握所有的网络链路,广域链路,备份链路工作状态。此外,AT-SNMPc可以同时对网络设备和应用程序进行监控,可以监视广域链路,服务器,应用程序的响应时间,往返通信延迟,一旦这些时间超过了设定的阈值,AT-SNMPc会自动生成警报通告管理人员。

提供网络映射图

AT-SNMPc支持多级层次映射,每一个层可以表示城市、建筑或子网。导入地图或建筑平面图的位图,通过手工或自动网络布置,用户可以创建一个和实际网络十分接近的布局。同时,AT-SNMPc还能自动地布局每一个网络映射,可以是树型、环型或曲折的总线型拓扑,并且每个映射对象使用专门的设备图标或用户选择的图标来表示,而且用对象的颜色来表示设备的状态。

支持SNMP v3

该系统平台支持SNMP v3身份验证和加密方式,可对不同的用户提供相应的多级视图和管理权限,安全地管理网络中所有设备。

高伸缩性分布式结构

AT-SNMPc企业版采用分布式体系结构,支持分布式多域管理,每个服务器都可以导入一个或多个远程服务器的映射。用户可以通过本地或远程TCP/IP连接,从任何一台Windows工作站上运行远程控制程序。而通过采用分布式轮询机制和服务器组件,可满足工作组、大型企业内部网(Intranet)或管理服务供应商的配置管理要求。

提前预警

AT-SNMPc自动发现和轮询SNMP/ICMP、WEB、FTP、SMTP和TELNET服务,还为4个用户提供可选的TCP端口。在网络管理过程中,一旦趋势报告被设立,轮询代理就会监控所有的报表变量并且针对所采集的数据进行自动的分析和整理,以一周内每个小时为典型模式计算出一个基准线。然后,轮询代理会将实际轮询的数据与基准线相比较,当变量较明显地偏离基线时就产生告警,并通过邮件、寻呼或其他方式实现事件通知,并将事件通知转发给相应的管理者。

实现远程监控

通过AT-SNMPc的Windows客户端控制台和Java Web控制台可以实现远程监控和管理。在远程控制方面,用户可以在任何一台Windows工作站上使用本地或远程的TCP/IP连接来运行远程控制台程序。此外,AT-SNMPc远程访问扩展还支持基于JAVA的远程控制台。JAVA控制台可以在任何连接在Internet或Intranet上的计算机上运行,包括Apple, Linux和 Windows系统。基本的功能包括映射拓扑显示,事件日志察看和实时的MIB表格/图形显示,另外还包括一个JAVA代理Telnet应用程序来配置Cisco路由器和其他的设备。

具有高互连互通性

在今天复杂的网络环境中,存在着来自很多厂商的各类网络产品。为了能够高效地管理所有厂商的设备,AT-SNMPc 支持包括安奈特在内的80多个网络厂商的产品,可以管理任何厂商的Hub,交换机、路由器和其他设备上的标准或私有信息。同时,AT-SNMPc还提供MIB编译功能,这样就可以对任何提供了厂商MIB的设备进行管理。此外,AT-SNMPc 还提供了一个自动面板生成器。这个生成器可以自动地创建任何支持标准SNMP的网络设备的图标,并显示其端口数量和类型。通过菜单,用户可以方便地对设备的图标进行自定义修改。并且AT-SNMPc 还专门为管理服务提供商MSP (Management Service Providers) 提供了一项功能,可以从一个服务器管理多个客户的网络,即使这些网络中的私有IP地址段存在互相重叠的情况。

管理机制完善

在AT-SNMPc系统中,对管理菜单进行了专门设计,满足对更多设备的管理,同时也使管理更加容易。 AT-SNMPc V6 还包括了对 Windows 和Unix 系统服务器如CPU和磁盘空间等关键参数的监控。对系统性能可以进行实时统计或者进行长期的趋势分析。对网管人员关心的网络参数可以设置阈值,这样,当问题发生时,系统会自动通过邮件或寻呼方式通知网管人员。另外还新增了Cisco 性能标准。

一、消息推送基础

消息推送,就是在互联网上通过定期传送用户需要的信息来减少信息过载的一项新技术。推送技术通过自动传送信息给用户,来减少用于网络上搜索的时间。它根据用户的兴趣来搜索、过滤信息,并将其定期推给用户,帮助用户高效率地发掘有价值的信息

当我们开发需要和服务器交互的移动应用时,基本上都需要和服务器进行交互,包括上传数据到服务器,同时从服务器上获取数据。

一般情况下,客户端与服务器之间通讯客户端是主动的,但这就存在一个问题就是一旦服务器数据有更新或者服务器要下发通知给客户端只能等客户端连接的时候才能实现。这种方式使消息失去了实时性。

如何使客户端能够实时的收到服务器的消息和通知,总体来说有两种方式,第一种是客户端使用Pull(拉)的方式,就是隔一段时间就去服务器上获取一下信息,看是否有更新的信息出现。第二种就是 服务器使用Push(推送)的方式,当服务器端有新信息了,则把最新的信息Push到客户端上。这样,客户端就能自动的接收到消息。 

虽然Pull和Push两种方式都能实现获取服务器端更新信息的功能,但是明显来说Push方式比Pull方式更优越。因为Pull方式更费客户端的网络流量,更主要的是费电量,还需要我们的程序不停地去监测服务端的变化。  

二、几种常见的解决方案实现原理

1)轮询(Pull)方式:客户端定时向服务器发送询问消息,一旦服务器有变化则立即同步消息。

2)SMS(Push)方式:通过拦截SMS消息并且解析消息内容来了解服务器的命令,但这种方式一般用户在经济上很难承受。

3)持久连接(Push)方式:客户端和服务器之间建立长久连接,这样就可以实现消息的及时行和实时性。

三、消息推送解决方案概述

A、C2DM云端推送方案

在Android手机平台上,Google提供了C2DM(Cloudto Device Messaging)服务。Android Cloud to Device Messaging (C2DM)是一个用来帮助开发者从服务器向Android应用程序发送数据的服务。该服务提供了一个简单的、轻量级的机制,允许服务器可以通知移动应用程序直接与服务器进行通信,以便于从服务器获取应用程序更新和用户数据。

该方案存在的主要问题是C2DM需要依赖于Google官方提供的C2DM服务器,由于国内的网络环境,这个服务经常不可用。

1Socket是对TCP/IP协议的封装,Socket本身并不是协议,而是一个调用接口(API),通过Socket,我们才能使用TCP/IP协议。

2MQTT协议是应用层协议不依赖长连接,适合弱网络。通过topic缓存信息。符合物联网设备的使用场景。因为通过topic缓存信息,因此可以实现通过topic与多个端的一对多连接,而不是设备与设备的多对多连接,节省了能耗及带宽。

MQTT的心跳,及非信息的报文,较Websocket更少,更节省带宽及能耗。更适用于物理网的多种网络协议。

3WebSocket和Http一样在应用层,提供使用一个TCP连接进行双向通讯的机制,包括网络协议和API,以取代网页和服务器采用HTTP轮询进行双向通讯的机制。 本质上来说,WebSocket是不限于HTTP协议的,但是由于现存大量的HTTP基础设施,代理,过滤,身份认证等等,WebSocket借用HTTP和HTTPS的端口。由于使用HTTP的端口,因此TCP连接建立后的握手消息是基于HTTP的,由服务器判断这是一个HTTP协议,还是WebSocket协议。 WebSocket连接除了建立和关闭时的握手,数据传输和HTTP没丁点关系了。

Socket 连接,至少需要一对套接字,分为 clientSocket,serverSocket 连接分为3个步骤:

(1) 服务器监听:服务器并不定位具体客户端的套接字,而是时刻处于监听状态;

(2) 客户端请求:客户端的套接字要描述它要连接的服务器的套接字,提供地址和端口号,然后向服务器套接字提出连接请求;

(3) 连接确认:当服务器套接字收到客户端套接字发来的请求后,就响应客户端套接字的请求,并建立一个新的线程,把服务器端的套接字的描述发给客户端。一旦客户端确认了此描述,就正式建立连接。而服务器套接字继续处于监听状态,继续接收其他客户端套接字的连接请求

Socket为长连接:通常情况下Socket 连接就是 TCP 连接,因此 Socket 连接一旦建立,通讯双方开始互发数据内容,直到双方断开连接。在实际应用中,由于网络节点过多,在传输过程中,会被节点断开连接,因此要通过轮询高速网络,该节点处于活跃状态。

很多情况下,都是需要服务器端向客户端主动推送数据,保持客户端与服务端的实时同步。

若双方是 Socket 连接,可以由服务器直接向客户端发送数据。

若双方是 HTTP 连接,则服务器需要等客户端发送请求后,才能将数据回传给客户端。

因此,客户端定时向服务器端发送请求,不仅可以保持在线,同时也询问服务器是否有新数据,如果有就将数据传给客户端。

MQTT(Message Queuing Telemetry Transport,消息队列遥测传输)是轻量级基于代理的发布/订阅的消息传输协议,设计思想是开放、简单、轻量、易于实现。这些特点使它适用于受限环境。

例如:

①网络代价昂贵,带宽低、不可靠。

②在嵌入设备中运行,处理器和内存资源有限。

该协议的特点有:

①使用发布/订阅消息模式,提供一对多的消息发布,解除应用程序耦合。 ②对负载内容屏蔽的消息传输。

③使用 TCP/IP 提供网络连接。

④有三种消息发布服务质量:

⑤"至多一次",消息发布完全依赖底层 TCP/IP 网络。会发生消息丢失或重复。这一级别可用于如下情况,环境传感器数据,丢失一次读记录无所谓,因为不久后还会有第二次发送。

⑥"至少一次",确保消息到达,但消息重复可能会发生。

⑦"只有一次",确保消息到达一次。这一级别可用于如下情况,在计费系统中,消息重复或丢失会导致不正确的结果。

⑧小型传输,开销很小(固定长度的头部是 2 字节),协议交换最小化,以降低网络流量。

⑨使用 Last Will 和 Testament 特性通知有关各方客户端异常中断的机制。

实现MQTT协议需要客户端和服务器端通讯完成,在通讯过程中,MQTT协议中有三种身份:发布者(Publish)、代理(Broker)(服务器)、订阅者(Subscribe)。其中,消息的发布者和订阅者都是客户端,消息代理是服务器,消息发布者可以同时是订阅者。

有三种消息发布服务质量:

“至多一次”,消息发布完全依赖底层TCP/IP网络。会发生消息丢失或重复。这一级别可用于如下情况,环境传感器数据,丢失一次读记录无所谓,因为不久后还会有第二次发送。这一种方式主要普通APP的推送,倘若你的智能设备在消息推送时未联网,推送过去没收到,再次联网也就收不到了。qos=0

“至少一次”,确保消息到达,但消息重复可能会发生。qos=1

“只有一次”,确保消息到达一次。在一些要求比较严格的计费系统中,可以使用此级别。在计费系统中,消息重复或丢失会导致不正确的结果。这种最高质量的消息发布服务还可以用于即时通讯类的APP的推送,确保用户收到且只会收到一次。qos=2

Topic,可以理解为消息的类型,订阅者订阅(Subscribe)后,就会收到该主题的消息内容(payload);

payload,可以理解为消息的内容,是指订阅者具体要使用的内容。

在MQTT协议中,一个MQTT数据包由:固定头(Fixed header)、可变头(Variable header)、消息体(payload)三部分构成。MQTT数据包结构如下:

固定头(Fixed header)。存在于所有MQTT数据包中,表示数据包类型及数据包的分组类标识。

可变头(Variable header)。存在于部分MQTT数据包中,数据包类型决定了可变头是否存在及其具体内容。

消息体(Payload)。存在于部分MQTT数据包中,表示客户端收到的具体内容。

WebSocket则提供使用一个TCP连接进行双向通讯的机制,包括网络协议和API,以取代网页和服务器采用HTTP轮询进行双向通讯的机制。 本质上来说,WebSocket是不限于HTTP协议的,但是由于现存大量的HTTP基础设施,代理,过滤,身份认证等等,WebSocket借用HTTP和HTTPS的端口。由于使用HTTP的端口,因此TCP连接建立后的握手消息是基于HTTP的,由服务器判断这是一个HTTP协议,还是WebSocket协议。 WebSocket连接除了建立和关闭时的握手,数据传输和HTTP没丁点关系了。 由此可知两者的应用场景不一样: MQTT是为了物联网场景设计的基于TCP的Pub/Sub协议,有许多为物联网优化的特性,比如适应不同网络的QoS、层级主题、遗言等等。 WebSocket是为了HTML5应用方便与服务器双向通讯而设计的协议,HTTP握手然后转TCP协议,用于取代之前的Server Push、Comet、长轮询等老旧实现。 两者之所有有交集,是因为一个应用场景:如何通过HTML5应用来作为MQTT的客户端,以便接受设备消息或者向设备发送信息,那么MQTT over WebSocket自然成了最合理的途径了。

DABAN RP主题是一个优秀的主题,极致后台体验,无插件,集成会员系统
网站模板库 » 怎么理解并发多进程服务和多线程服务器

0条评论

发表评论

提供最优质的资源集合

立即查看 了解详情