云题海 - 专业文章范例文档资料分享平台

当前位置:首页 > 服务器通信技术方案

服务器通信技术方案

  • 62 次阅读
  • 3 次下载
  • 2025/12/3 4:45:08

服务器为linux,也有系统优势。 基于以上比较,我们服务器的操作系统平台是linux下(大数据库的平台也是),显然大并发访问通讯模型linux下epoll更合适我们项目实际需求。凍鈹鋨劳臘锴痫婦胫籴铍賄鹗。 2.1.4其它的网络通讯第三方开源库简介及比较 Libevent

libevent是一个事件触发的网络库,适用于windows、linux、bsd等多种平台,内部使用select、epoll、kqueue等系统调用管理事件机制。著名分布式缓存软件memcached也是libevent based,而且libevent在使用上可以做到跨平台,而且根据libevent官方网站上公布的数据统计,似乎也有着非凡的性能。恥諤銪灭萦欢煬鞏鹜錦聰櫻郐。 libevent包括事件管理、缓存管理、DNS、HTTP、缓存事件几大部分。事件管理包括各种IO(socket)、定时器、信号等事件;缓存管理是指evbuffer功能;DNS是libevent提供的一个异步DNS查询功能;HTTP是libevent的一个轻量级http实现,包括服务器和客户端。libevent也支持ssl,这对于有安全需求的网络程序非常的重要,但是其支持不是很完善,比如http server的实现就不支持ssl。鯊腎鑰诎褳鉀沩懼統庫摇饬缗。 Libev

libev是libevent之后的一个事件驱动的编程框架,其接口和libevent基本类似。据官方介绍,其性能比libevent还要高,bug比libevent还少。硕癘鄴颃诌攆檸攜驤蔹鸶胶据。 ACE

有人评价其框架模式很值得学习,但是其网络应用效率和开发应用相比其他开源库较差,这也是其主要用于研究很少用于商业应用的原因,这方面不像boost应用广泛。应用中需要充分理解其复杂的架构模式。这不是短时间可掌握和灵活运用的,相对来说其他第三方网络开源库相对模式精简很多。阌擻輳嬪諫迁择楨秘騖輛埙鵜。 ICE

ZeroC ICE 是指ZeroC公司的ICE(Internet Communications Engine)中间件平台。对于客户端和服务端程序的开发提供了很大的便利。氬嚕躑竄贸恳彈瀘颔澩纷釓鄧。 目前ICE平台中包括Ice,Ice-E,Ice Touch。

Ice为主流平台设计,包括Windows和Linux,支持广泛的语言,包括C++,Java,C#(和其他.Net的语言,例如Visual Basic),Python,Ruby,PHP和ActionScript。也包括所有的ICE服务,例如Ice Grid,IceStorm等。釷鹆資贏車贖孙滅獅赘慶獷緞。 Ice-E是Ice在资源受限的平台上的一个实现,支持C++和嵌入式操作系统,例如Windows CE,Linux。Ice-E本身不包含任何服务,但是可以利用在Ice上提供的各种服务。因此,通过Ice-E,移动设备也能无缝的集成到分布式系统中。怂阐譜鯪迳導嘯畫長凉馴鸨撟。 Ice Touch是为iphone和ipod touch开发的版本,包括Object-C映射,支持Iphone OS,并为MAC OS X开发图形界面应用程序提供完整的Cocoa框架的访问。谚辞調担鈧谄动禪泻類谨觋鸾。 Boost::asio

Boost.Asio是利用当代C++的先进方法,跨平台,异步I/O模型的C++网络库,ASIO在Linux平台下的实现基于epoll,在windows下基于iocp。其商业应用非常广泛。Boost库本身还支持很多常有用的开源库,如regex 正则表达式算法,它本身是基于STL的二次开发。嘰觐詿缧铴嗫偽純铪锩癱恳迹。 Muduo

muduo 是一个基于 Reactor 模式的现代 C++ 网络库,它采用非阻塞 IO 模型,基于事件驱动和回调,原生支持多核多线程,适合编写 Linux 服务端多线程网络应用程序。这是一个国内个人写的开源库,有专门介绍的书,网上热评较多,据其书上测试数据所描述,其性能要稍

5 / 8

好于libevent 与 boost。熒绐譏钲鏌觶鷹緇機库圆鍰缄。 Node.js

Node.js是一套用来编写高性能网络服务器的JavaScript工具包。Node.js可以在不新增额外线程的情况下,依然可以对任务进行并行处理, Node.js是单线程的。它通过事件轮询(event loop)来实现并行操作。鶼渍螻偉阅劍鲰腎邏蘞阕簣择。 但它是一个新兴的后台语言, 网络资源相对较小,需要对javascript的事件驱动非常熟悉。调试方面比较困难。后期维护较难。纣忧蔣氳頑莶驅藥悯骛覲僨鴛。 开源库 Libevent Libev ACE ICE 主要优点 跨平台/支持安全机制ssl/有事件机制/DNS支持 类似libevent,包含它的所有功能,官方描述其性能比它好。 封装程度高,模式框架强,支持事件驱动,跨平台。 主要缺点 基于其上开发网络库,还需要实现很多网络模块。 网上评价相对来说libevent应用较广泛。 学生用于论文研究开发的网络通讯库,学术性强,应用及性能较差,模式复杂。 支持分布式系统,支持多语言,多操作系统,应用不太广泛,是一个公司的是一个zeroc公司开发的库,应用不是很广网络开源通讯库。二次开发待泛,被称为ACE的轻量级别。 验证。 跨平台,本身利用epoll与iocp模型就为了支持多路连接并发考虑的库。商业应用非常广泛,其库有可能纳入C++规范里面做教材用 充分了解boost开源库需要一定时间,其主要利用泛型编程模式。 Boost::asio Muduo 非阻塞,多线程,支持linux平台,其利用通个人网络库,知名度应用方面讯模型epoll实现应用。书中的测试数据显示,不如libevent与boost,但是其单台服务器(硬件配置8核CPU,16G内存)书热评很多。 已经实现10000台终端连接数,并有与其他开源库测试性能比较。 官方描述,高性能网络服务器的JavaScript工具包。Node.js可以在不新增额外线程的情况下,依然可以对任务进行并行处理, Node.js是单线程的。它通过事件轮询(event loop)来实现并行操作 基于javascript的新型网络库,应用时间较短,调试麻烦,后期维护困难。 它的单线程模式,对现在的硬件多核处理器来说,利用不了多核的优势。 Node.js 基于以上比较,主要选商业应用较广泛,开源时间较长,库功能丰富的Boost::asio第三方开源库, 另外两个个人与公司的开源库Muduo和ICE待验证作为备选。颖刍莖蛺饽亿顿裊赔泷涨负這。 2.2 服务器集群方案

6 / 8

[图一:标准集群Server架构方案] DNS均衡服务器原理:

就是1个主机纪录对应多个IP Address(不同的多台服务器或多张网卡),实现不同DNS客户的均衡轮询。濫驂膽閉驟羥闈詔寢賻減栖綜。 我们先来了解下集群式服务器开发的常用几个技术知识: 1:线程 2:线程池 3:内存池 线程,在服务器开发中,线程是一个非常重要的概念,尤其是现在多核服务器的发展。当然,提到了线程自然应该说到线程之间的互斥。这也是服务器开发者们在开发最初最容易出现的问题。体现在一个资源或者多个资源在多个线程中共享使用如何避免出现脏数据的问题。銚銻縵哜鳗鸿锓謎諏涼鏗穎報。 线程池,池,这里相当是一个存储容器。这是一个由多个线程组成的一个队列,当有事情发生时候,我们把当前的空闲的线程丢给他,为他服务。当下一个事件发生的时候,我们又从池里面取一个空闲的线程丢给他,为他服务。当服务完毕,把线程丢回池中。起到反复利用的目的。这样比程序处理业务时,反复申请与关闭线程对资源的利用更有效率。挤貼綬电麥结鈺贖哓类芈罷鸨。 内存池,同样也是一个池。这个概念的产生是为了避免服务器频繁的分配内存,而采取预先分配一定数目的对象,并将对象们放到队列中,当需要的时候,从该队列中取出,当用完,就返回池中。比如我们的Server可能会存在10000个连接,我们预先开辟10000个Client对象,存储在list pFreeClientsList中,当需要的时候,从队列中pop一个出来,当使用完毕就丢回pFreeClientsList。这种机制很好的起到了避免频繁开辟内存对象的目的,可以很好的提高系统的性能。赔荊紳谘侖驟辽輩袜錈極嚕辫。 从上面集群Server架构方案图,我们可以理解出如下服务器通讯过程:

Conn Serve里面存在一个List_LogicServer对象,该对象监听端口,当有LogicServer连接过

7 / 8

来,将该LogicServer存入队列,并实时获取该Server当前的压力情况,可以起到一个负载均衡的作用。而保持的List_LogicServer队列,当客户端连接过来,Conn Server则从List_LogicServer中将当前currentConn最小的服务器发送给客户端,以后客户端将同该LogicServer发起连接。塤礙籟馐决穩賽釙冊庫麩适绲。 在该系统中,当我们的Conn Server不够的时候,可以考虑架设多台Conn Server,当客户端无法连接时候,程序自动连接下一台Conn Server. 这个由图上的DNS均衡服务器实现,使得大量移动终端同时访问时,由DNS均衡服务器,分配当前压力较小的Conn Server 去短连接并验证,验证登陆成功后,再把该Conn Server 下对应的压力较小的Logic Server 与该终端长连接TCP通讯(域名服务有利于服务器端动态IP变换而设备终端不受影响,只需要记住一个总的服务器域名即可)。裊樣祕廬廂颤谚鍘羋蔺递灿扰。 DNS域名服务器:使得终端只需要记住一个固定的域名就行,服务器IP变换不会影响到终端的更新。

终端访问域名后,实际会把终端信息转接到均衡服务器上来,均衡服务器先把压力最小的Conn Server分配给它让它登陆验证。登陆验证成功后,Conn Server再分配具体的Logic Server与它长连接进行业务数据通信。仓嫗盤紲嘱珑詁鍬齊驁絛鯛鱧。 均衡服务器,就是管理分配Conn Server 与外界终端短连接通讯。每个Conn Server 对应一个IP,它分配当前压力最轻的Conn Server 来提高服务。绽萬璉轆娛閬蛏鬮绾瀧恒蟬轅。 实际上,该系统可很大程度上拓展开来,如果均衡服务器够负载足够多的Conn Server,随着移动终端按倍数扩大,它的系数按照比例扩大就能服务过来。实际上限需要实践测试数据验证。骁顾燁鶚巯瀆蕪領鲡赙骠弒綈。 根据项目情况选择最合适方案

3.1 推荐选择linux系统下的epoll及开源库Boost::asio 目前的服务器通讯主流技术方案,结合当前我们的数据存储平台也是基于linux系统下(linux系统是主流的服务器系统),显然,选择linux下的epoll 模型更合适于我们的项目需求。瑣钋濺暧惲锟缟馭篩凉貿锕戧。 利用这个通讯模型结合服务器集群的架构思想,能很好地解决大量设备并发访问通讯的问题。在我们的Logic Server 上实现对单台服务器支持最多设备路数(将近万路),如果这种子服务器单元增多,可以很好的扩展服务器的数量来为以后更多的设备服务(可添加Logic Server的来扩大服务量),理想计算服务为: Client_nums=Logic Server_nums*10000(假设我们设计的通讯Logic Server,每台能服务10000台终端移动设备)。鎦诗涇艳损楼紲鯗餳類碍穑鳓。 第三方开源库boost::asio在linux系统下的开发用的正是epoll通讯模型。建议基于其上开发能节省开发时间。栉缏歐锄棗鈕种鵑瑶锬奧伛辊。 3.2 可能问题

我们这服务器通讯在设计时,测试只能是模拟客户端暂时在局域网内,以后布局在广域网环境,与实际网络环境有很大差异,在服务量可能有比较大差异。辔烨棟剛殓攬瑤丽阄应頁諳绞。 数据保存到大数据库一块,需要数据库操作平台接口,接口操作的性能,会影响通讯数据的存储速度。

在服务器通讯设计时,是在局域网内模拟收发数据,网络很流畅,速度快,往后切换到GPRS实际网络环境会出现网络延时很大的情况,会影响数据收发。峴扬斕滾澗辐滠兴渙藺诈機愦。 8 / 8

搜索更多关于: 服务器通信技术方案 的文档
  • 收藏
  • 违规举报
  • 版权认领
下载文档10.00 元 加入VIP免费下载
推荐下载
本文作者:...

共分享92篇相关文档

文档简介:

服务器为linux,也有系统优势。 基于以上比较,我们服务器的操作系统平台是linux下(大数据库的平台也是),显然大并发访问通讯模型linux下epoll更合适我们项目实际需求。凍鈹鋨劳臘锴痫婦胫籴铍賄鹗。 2.1.4其它的网络通讯第三方开源库简介及比较 Libevent libevent是一个事件触发的网络库,适用于windows、linux、bsd等多种平台,内部使用select、epoll、kqueue等系统调用管理事件机制。著名分布式缓存软件memcached也是libevent based,而且libevent在使用上可以做到跨平台,而且根据libevent官方网站上公布的数据统计,似乎也有着非凡的性能。恥諤銪灭萦欢煬鞏鹜錦聰櫻郐。 libevent包括事件管理、缓存管理、DNS、HTTP、缓存事件几大部分。事件管理包括各种IO(socket)、定时器、信

× 游客快捷下载通道(下载后可以自由复制和排版)
单篇付费下载
限时特价:10 元/份 原价:20元
VIP包月下载
特价:29 元/月 原价:99元
低至 0.3 元/份 每月下载150
全站内容免费自由复制
VIP包月下载
特价:29 元/月 原价:99元
低至 0.3 元/份 每月下载150
全站内容免费自由复制
注:下载文档有可能“只有目录或者内容不全”等情况,请下载之前注意辨别,如果您已付费且无法下载或内容有问题,请联系我们协助你处理。
微信:fanwen365 QQ:370150219
Copyright © 云题海 All Rights Reserved. 苏ICP备16052595号-3 网站地图 客服QQ:370150219 邮箱:370150219@qq.com