下载本文档
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
服务器通信技术方案、'.、.刖言1.服务器通讯需要解决的问题2日..润属钐瘗歌枥庑赖赁》单台RCU设备通讯情况2^^」沟.金富^爱氇谴净祸测楸。上万个RCU甚至达到将近百万终端与服务器同时通讯2单台服务器2酽锕极一镇桧猪—钯。Hill2集群服务器2弹贸摄尔霁毙揽砖卤庑诒尔肤。.目前服务器通讯主流技术方案3^养抟箧飙舞怼类蒋蔷黑占金必杂。网上常用主流方案简介与比较3厦礴恳蹒骈畤翥继慎骚卺癞.传统的socket通讯模型3茕桢广鳓.选块网踊泪镀齐金匀。IWindows下IOCP模型3鹅娅尽损鹌惨屣茏^赖繁诘^。linux下epoll模型4箱丛妈.为赡债蛭练浮槠挞嗪。.其它的网络通讯第三方开源库简介及比较5簧真圣金玄.22服务器集群方案6渗彭呛俨匀谔鳖调—钞。.根据项目情况选择最合适方案8铙1朱卧泻.圣骋贶丁直廉缝勘罴。推荐选择linux系统下的epoll及开源库Boost::asio8版帝可能问题8:俣阃—阊邺-修订记录序号版本号修订内容修订人修订日期1.00.000第一个版本颜冬2013.09.07前百RCU-U设备采集数据如:车辆诊断,通过GSM基站定位,内置GPS,GPRS系统提供远程数据,对车辆各个系统的运行状况(如ENG、ABS、ETC等)实时监测状态数据等。坛博乡这些数据的网络通讯平台,则由服务器提供的通讯技术来实现,因此如何实现这种多设备数据同时接收的技术方案很重要。本文将详细介绍相关技术及提出方案。蜡.夥瘪辍伥铉锚.赘一服务器通讯需要解决的问题单台RCU设备通讯情况主要通讯数据:设备端,刚连接时登陆验证(设备端信息验证);设备端,诊断数据及其它采集数据上传到服务器(估计频率每秒发一次);服务器端,发送指令,实现对设备端的远程配置;RCU设备工程师估计的数据:1每个RCU设备每秒钟产生一条数据,每条数据大概100个字节左右(0.1K左右);2可以假设每台车每天平均开动1小时或2小时(实际产生数据时间);RCU数量(个)1秒1小时2小时10.1kb360kb720kb1万1000kb0.97M3515M3.43G7030M6.86G100万100,000kb97M343G686G1000万1000,000kb970M3430G3.35TB6860G6.70TB从上数据显示如果达到:100万级别的RCU用户量,需要服务器有近百兆的网络带宽吞吐量。1000万级别的RCU用户量,需要服务器有近千兆的网络带宽吞吐量。上万个RCU甚至达到将近百万终端与服务器同时通讯1.2.1单台服务器如果按照经典的server/client通讯模型,当有一个设备通过(TCP/UDP)连接服务器时,服务端单独开一个线程为这个设备数据服务,显然,当路数越多,我们的设备又是长连接方式,很快服务器将在设备近千路时服务器资源将达到上限,并且存在大量线程切换与管理问题。这时如果我们能合理利用单台服务器资源(如:windows下iocp模式,linux下的epoll网络通信模式等),在更优的管理模式下,将能接更多设备的服务(网上资料预估几千路的长连接甚至硬件较好配置下达到万路以上)。上面我们能在单台服务器在较好硬件配置和软件优化的模型管理下,能解决几千路上万路设备的长连接。―—昙―嫡擞。11.2.2集群服务器但是,如果几十万台甚至接近百万级别的设备数量同时访问服务端时,这个时候需要涉及到一种合理的集群服务器架构模式。理论上,为了达到1:10000的连接,可以采用Server-Client的连接方式,而为了达到1:10000*100的连接,我们怎么办呢?一般会采用Client->ConnServer->LogicServer。相当于有一批服务器来合理布局解决设备的大并发通讯问题。辍—鹏踪韦辚罐飙铳麦。ConnServer在接受完Client的连接后,将LogicServer暴露给Client,并立刻断开连接,称之为短连接。以后的数据交互就和ConnServer没有关系了,让LogicServer直接跟client再长连接通讯,这种架构有很多的优势。,—福番饴.锦.琼针。
LogicSilverLogicSilver[图一:标准集群Server架构方案]目前服务器通讯主流技术方案2.1网上常用主流方案简介与比较2.1.1传统的socket通讯模型socket有两种:流式Socket(SOCK_STREAM)和数据报式Socket(SOCK_DGRAM)。流式是一种面向连接的Socket,针对于面向连接的TCP服务应用;数据报式Socket是一种无连接的Socket,对应于无连接的UDP服务应用。猫—燎舶诛髅.庑献朋鸟缩。一般小型的c/s通讯系统利用socketAPI和结合一个线程对应一个客户的开发模式。如果路数增多,容易耗尽服务端资源。该通讯模型利用硬件资源效率不高。锹籁饕迳琐肇禊鸥娅..牙摈2.1.2Windows下IOCP模型IOCP完成端口模型又是怎样实现的呢?首先我们创建一个完成端口CreateIOCompletionPort。绑定端口之后,建立一个监听线程,用来监听客户端的连接,当有连接进来时,将该连接的套接字加入到IOCP对队列中,同时再创建几个工作线程(CPU数*2+2),工作线程调用getQueuedCompletionStatus方法在关联到这个完成端口上的所有套接字上等待I/O的完成,再判断完成了什么类型的I/O,然后接着发出WSASend和WSARecv,这样在该连接发生请求时,IOCP模型就会在工作线程通知,这样我们就可以在工作线程中,完成对客户端的请求做出一系列响应。情氽一硕饨荠龈话鹫—■uu完成端口提供了一个高效复杂的内核对象,使得非I/O处理和I/O处理能重叠并行地操作。该对象通过指定工作线程的数量,对重叠的I/O操作进行处理。当一个事件发生,此完成端口就被操作系统加入一个队列中,然后应用程序可以对核心层进行查询以得到此完成端口。IOCP的核心思想简单说就是:将所有用户的请求都投递到一个消息队列中,利用事先创建好的若干个工作线程逐一从消息队列中取出消息并加以处理。这样不仅减少了线程资源,也大大提高了线程的利用率。要注意的是,所谓完成端口,实际上是Windows采用的一种I/O构造机制,并非通常所说的端口(如Port:80)。——蟒镧%H
2.1.3linux下epoll模型epoll是Linux下多路复用IO接口select/poll的增强版本,它能显著提高程序在大量并发连接中只有少量活跃的情况下的系统CPU利用率。因为它会复用文件描述符集合来传递结果而不用迫使开发者每次等待事件之前都必须重新准备要被侦听的文件描述符集合,另一点原因就是获取事件的时候,它无须遍历整个被侦听的描述符集,只要遍历那些被内核IO事件异步唤醒而加入Ready队列的描述符集合就行了。epoll除了提供select/poll那种IO事件的电平触发(LevelTriggered)外,还提供了边沿触发(EdgeTriggered),这就使得用户空间程序有可能缓存IO状态,减少epoll_wait/epoll_pwait的调用,提高应用程序效率。尧侧.藕传统的select/poll另一个致命弱点就是当你拥有一个很大的socket集合,不过由于网络延时,任一时间只有部分的socket是“活跃”的,但是select/poll每次调用都会线性扫描全部的集合,导致效率呈现线性下降。但是epoll不存在这个问题,它只会对“活跃”的socket进行操作---这是因为在内核实现中epoll是根据每个fd上面的callback函数实现的。那么,只有“活跃”的socket才会主动的去调用callback函数,其他idle状态socket则不会。识罅金―益濡留.俨津通讯模型主要优点主要缺点传统socket适合于连接量较小的通讯情况,通过socetAPI建立C/S通讯。服务连接路数小,IO没有复用,一般是一个线程对应终端的服务模式。通讯情况下,每个socket句柄,包含不活跃的连接也会需要遍历。Windows下IOCP适合于大量连接数(上万路),IO复用,消息队列,可指定相应工作线程数,轮询端口的事件,充分利用多核,高效率地服务于多并发。只跑在windows服务器下,如果数据库平台为linux服务器,影响系统功能模块整合。linux下epoll适合于大量连接数(上万路),多路复用IO接口,只遍历那些被内核IO事件异步唤醒而加入Ready队列的描述符集合。通讯情况下,只对活跃的连接遍历,提高了效率。当前主流ET和LT模式下,其中LT模式比较复杂,较难处理数据收发。服务器为linux,也有系统优势。基于以上比较,我们服务器的操作系统平台是linux下(大数据库的平台也是),显然大并发访问通讯模型linux下epoll更合适我们项目实际需求。劳.皆痫—㈣鹦。^1112.1.4其它的网络通讯第三方开源库简介及比较Libeventlibevent是一个事件触发的网络库,适用于windows、linux、bsd等多种平台,内部使用select、epoll、kqueue等系统调用管理事件机制。著名分布式缓存软件memcached也是libeventbased,而且libevent在使用上可以做到跨平台,而且根据libevent官方网站上公布的数据统计,似乎也有着非凡的性能。—灭萦欢一鹫―libevent包括事件管理、缓存管理、DNS、HTTP、缓存事件几大部分。事件管理包括各种IO(socket)、定时器、信号等事件;缓存管理是指evbuffer功能;DNS是libevent提供的一个异步DNS查询功能;HTTP是libevent的一个轻量级http实现,包括服务器和客户端。libevent也支持ssl,这对于有安全需求的网络程序非常的重要,但是其支持不是很完善,比如httpserver的实现就不支持ssl。鲨胃编诎襁御彻瞿统康摇饬缗。Libevlibev是libevent之后的一个事件驱动的编程框架,其接口和libevent基本类似。据官方介绍,其性能比libevent还要高,bug比libevent还少。硕痍郑颃诌.棒搞.薮鹭胶据。ACE有人评价其框架模式很值得学习,但是其网络应用效率和开发应用相比其他开源库较差,这也是其主要用于研究很少用于商业应用的原因,这方面不像boost应用广泛。应用中需要充分理解其复杂的架构模式。这不是短时间可掌握和灵活运用的,相对来说其他第三方网络开源库相对模式精简很多。阕擞-择一秘麓—ICEZeroCICE是指ZeroC公司的ICE(InternetCommunicationsEngine)中间件平台。对于客户端和服务端程序的开发提供了很大的便利。—贸恳弓一颔果纷金廊。■nnmn目前ICE平台中包括Ice,Ice-E,IceTouch。Ice为主流平台设计,包括Windows和Linux,支持广泛的语言,包括C++,Java,C#(和其他.Net的语言,例如VisualBasic),Python,Ruby,PHP和ActionScript。也包括所有的ICE服务,例如IceGrid,IceStorm等。Ice-E是Ice在资源受限的平台上的一个实现,支持C++和嵌入式操作系统,例如WindowsCE,
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 美国医药采购制度
- 采购部经理起草采购制度
- 警用装备采购制度
- 采购样品间管理制度
- 期货采购风险管理制度
- 街道食堂采购管理制度
- 采购目标绩效管理制度
- 维修维护配件采购制度
- 员工餐餐厅采购管理制度
- 采购部门业绩考核制度
- 蒸汽工程安装方案(3篇)
- 颅内动脉急诊取栓技术
- 2025年四川大学教育培训部业务岗工作人员招聘考前自测高频考点模拟试题附答案详解
- 江苏省2025年接受高级访问学者的高等学校
- 村民自治课件
- 2024注册核安全工程师考试历年机考真题集附完整答案详解
- gmp规范培训课件
- 腰椎术后伤口感染管理要点
- 狱内案件立案表宁夏警官职业应用法律系87课件
- -世界水日主题班会课件
- 2025新人教版七年级下册英语 Unit 6知识点梳理及语法讲义(答案版)
评论
0/150
提交评论