English 中文(简体)
服务器袖珍方案拟订模式问题[闭门]
原标题:
  • 时间:2009-05-19 01:20:41
  •  标签:

我们不准许对书籍、工具、软件图书馆以及更多的图书馆征求建议的问题。 你可以ed问这个问题,以便用事实和引言回答。

Closed 4 years ago.

在过去几个月里,我一直在着手在C++和 Java实施一些袖珍服务器。 我在 Java写了一台小型服务器,该服务器将处理和安放;处理一个网站上的闪电应用程序的投入,我成功地制作了一个服务器,处理C++多个参与者的2D客户游戏的投入。 我在一个项目和计划中使用了TCP;在另一个项目中使用了UDP。 现在,我确实有一些问题,我无法在网上找到,我希望一些专家能够帮助我:

我要说的是,在C++中建立一个服务器,处理数千个独立和(或)网络应用的投入,我如何当时设计我的服务器? 到目前为止,我通常为每个用户建立一个新的和独特的连接点,但我怀疑这是前进的道路。

此外,如何确定网络上发送的包装单的布局;数据通常是在双向或文本状态下发送的? 当你向不同的媒体发送数据时,你如何处理序列物体(例如C++服务器用于闪电应用)?

最后,利用通常用来支持除增强的“水”以外的可移动性(例如,在窗户机器和营地开发;在轴箱上部署)的图书馆是容易的。

谢谢。

最佳回答

象你一样,这里还有几个问题。 我尽最大努力回答我可以看到的情况。

页: 1 我应如何在我的网络服务器上进行翻新?

我将仔细研究一下你在您的服务器正在 sp的工人大厦上重新做的工作。 为每项请求开辟新的通道是一个好的想法。 但如果平行请求的数量很小,而且每个线上执行的任务迅速进行,则不会伤害任何东西。

如果你真的想要做正确的事,那么你可以拥有一个可以想象的/有活力的读物库,在工人的读物自由时可以回收。 这样,你就可以确定一个最大范围的人才库。 之后,你的服务器将达到总库的大小......然后再提出进一步的请求,直到工人能够读到。

我该如何格式化我的数据包?

除非你重新拟定一份全新的议定书,否则,这是你确实需要担心的事情。 除非你重新处理流层媒体(或另一种可接受包装损失/腐败的申请),否则你可能获得利用民主力量联盟的申请。 TCP/IP可能将成为你的最佳灯塔......,这将为你确定包装设计。

3。 我使用哪种格式进行序列化?

您对电线数据进行序列化的方式取决于哪类应用会耗尽你的服务。 单体序列化通常较快,导致较少的数据需要从网络上转移。 在使用双字母序列化之外,一种语文的双双双字母序列化可能不会在另一种语文中发挥作用。 因此,与你的服务器连接的客户很可能必须用你所用的同样语言书写。

XML 帝国化是另一个选择。 这将需要更长的时间,并拥有更多数据,以转交网络。 除了使用XML serial化等东西外,你获得的门槛仅限于能够与你本人联系和放弃服务的各类客户。

你们必须选择最适合你们需要的东西。

......与各种选择相联,并列出你们的最佳工作。 希望你们找到能够比我在这里提到的东西更快、更可靠地发挥作用的东西。

问题回答

就服务器设计而言,我要说的是,你是正确的:尽管“一到四舍五入-四舍五入”是一种简单易行的办法,但这不是一条走路,因为它赢得了一定比例和其他服务器设计模式。

我个人喜欢COMMUNICATION-THREADS/WORKER-THREADS办法,在这种办法中,一批有活力的工人校友负责生产者校对产生的所有工作。

在这一模式中,你将在等待由另一套处理网络I/O的校对产生的任务的集合中拥有一些线索。

我发现UNIX Network Program,由Richard Stevens和网络方案拟订方法中这种令人吃惊的来源。 而且,尽管名称如此,它也在窗户环境中非常有用。

关于包装单的布局(你应该对此提出不同的问题,因为我认为这是一个完全不同的问题),在选择TEXT vs BINaire办法时,存在着权衡。

案文(即XML)可能更容易加以压缩和记录,一般而言更为简单,而《巴厘岛议定书》则应当使你在处理速度和网络包装规模方面表现得更好,但你必须处理诸如这种言论和 st等更为复杂的问题。

希望会有所助益。

虽然先前的答复提供了良好的方向,只是为了完整,但我要指出,翻新并不是大量服务器运行的绝对要求。 一些实例是。 也可采用许多可扩展性的方法,即校对池、预设流程、服务器库等。

1 D-1, 1 D-1, 1 P-5, 1 P-4, 1 P-3, 1 P-2, 1 GS, 1 NS, 1 UNV 最后,使用通常用来支持除增强作为动力以外的可移动性的图书馆(例如,在窗户机器和营地开发;在轴心箱上部署)。

The ACE Library is another Alternative. 它非常成熟(自90年代初以来就已经结束),并广泛部署。 http://www.boost.org/doc/libs/1_37_0/doc/html/boost_asio.html”rel=“nofollow noretinger”>Boost ASIO可在Rive网站

2) 我要说的是,在C++中建立一个服务器,处理数千个独立和(或)网络应用的投入,我如何当时设计我的服务器? 迄今为止,我通常为每个用户建立一个新的和独特的网络,但我怀疑这是通往的道路。

有一些常用的方法,包括但不限于:thread-per-linkion。 (你描述的方法)和threadcum(介绍的方法)。 每个人都有自己的亲子。 许多人看着权衡。 良好的起点可能是Thread patterns Wikipedia page。

Dan Kegel s “

页: 1 如何确定在网络上发送的包装单的布局;数据通常是在双向或文本状态下发送的? 当你向不同的媒体发送数据时(例如C++服务器用于闪电应用)你如何处理序列物体?

我同意其他人的看法,发送二进制数据通常会更有效率。可以使用boost serialization库将数据编组成二进制形式(以及文本形式)。成熟的二进制格式包括XDR和CDR。例如,CDR是CORBA使用的格式。公司ZeroC定义了比CDR更加高效的ICE编码。

有许多双向格式可以选择。 我的建议是,避免重塑轮椅,至少读一下其中一些双向格式,以便你不会最终陷入这些现有的双向格式所设计的相同陷阱。

尽管如此, 现在已经为你的大部分需求提供了有说服力的解决办法。 例如,OpenSplice OpenDDS。 DDS的重点是通过publish-subters model,而不是远距离援引职能。 我更熟悉环管组确定的技术,但我确信,还有其他符合你们需要的中级知识。

你们仍然需要一个提货单来处理每个客户,但设想是建立一个X袖珍库(约50),然后,当你接近(约90%)耗用所有这些记本时,会再造一个X袖。 在某些时候,在客户有关系、发送了数据和互不关联之后,你的一些袖珍材料将可供使用,而且你可以使用(用于这一信息)。

数据配置总是困难的。 如果你们的所有客户和服务器都使用同样的硬件和操作系统,那么你就可以以双向格式发送数据,但那里有许多旅行和陷阱(逐个调整是清单的顶端)。 发送格式文本总是比较容易,但从带宽和加工力来说,费用肯定会更高,因为你必须在发送之前将格式从机器改为文字,当然还要回到接收器。

更改:序列号,Im sorry,我可以帮助你,也不能帮助图书馆(我太掩体,用其中很多东西)。

服务器目录和序列化(制图)。 最重要的问题是,增加的袖珍数量是可读的,可以选择。 我不谈国防军的限制。 仅此就可减半。 我指的是,在处理评估的袖珍数据时,信号和问题数据的积累时间在非读数中增加。 因此,在加工商的作用有限时,解决办法甚至可能脱离了SW边界,需要多个加工商模式:一个读写,N正在处理。 在此情况下,所有可用的袖珍数据在选择返回后都应读到,并发送给另一个处理单位。

最新数据也是如此。

About。 在缩略语中,最好采用双字母格式,因为业绩良好。 根据联合国人权网的规定,XML也存在同样的问题。 但是,......rad,它不是简单地将长价或低价复制成一流。 但是,在这种情况下,哪怕是县,则会有所帮助(以NW格式发送/接收器,而OS负责数据转换)。 但是,在代表头盔之后,通过电传令和电传数据类型,在大多数/部分重要轨道的暴露格式上,这种数据更为安全。 我没有这样做。

Kind regards and great success for everyone. Simon Cantor





相关问题
热门标签