mmorpg服务器端的网络库(libuv/boost::asio?)

Network Library for server side of a mmorpg (libuv/boost::asio?)

本文关键字:boost asio libuv 服务器端 网络 mmorpg      更新时间:2023-10-16

我目前正在重写一个非常老的mmorpg的服务器端,我正在寻找一个好的开源网络库与C/c++一起使用。

由于客户端已经存在,我不能使用任何强制某种包结构或通信的库(例如,RakNet)。

服务器将主要使用UDP,在三个不同的端口。

在网上搜索后,我找到了boost::asio和libuv。

boost::asio似乎是一个成熟的选择,因为我已经在使用boost了,但是我读到他们的UDP实现有点差,而且它不能达到多核处理器的最大性能,因为在使用epoll时存在一些锁。

libuv看起来很棒,它是事件驱动的,由一个大项目支持,但是目前还没有这样的项目使用它,所以我对是否使用它持怀疑态度。

你们怎么想?我可以在这样的项目中使用libuv吗,还是必须使用boost::asio?我也愿意接受其他的建议(它们需要是跨平台的,我已经放弃了enet, libevent和libev)。

libuv或Boost。亚洲应该没问题。我在实时和近实时应用程序中的库之间观察到了类似的结果。

如果你使用Boost。请注意:

  • 如何最小化处理器内存分配量
  • 可以通过向io_service构造函数提供一个concurrency_hint 1来消除
  • io_service锁定。然而,这并不能阻止反应器内的锁定。
从我的游戏开发经验来看:
  • 如果网络功能通过接口或队列提供给游戏代码,那么在一个基于事件的库与另一个基于事件的库(如Boost)之间进行交换是相当简单的。Asio和libuv.
  • 服务器架构比网络代码本身的影响要大得多。同时提升。Asio和libuv提供IPC功能,可能对多守护进程服务器架构有用。
虽然这两个库之间有一些重叠,但还是值得一读。

libevent是优秀的,我很惊讶你抛弃了它。ZeroMQ非常好,但是对Windows的支持有点有限。RabbitMQ是由我的一个朋友在SF.

提振。亚洲也很好。既然你似乎仅限于c++,那么libevent就是我所使用的,它应该远远超过我所工作的其他MMO游戏,在网络延迟和响应网络方面,但它确实需要tcp。