3

背景:我正在设计一个联邦/分布式解决方案的原型,该解决方案将使用 Netty 作为通信基础设施。

我知道我将不得不围绕 Netty 创建一些功能来实现我们所需要的,但我想了解 Netty 提供了什么,所以我不会重新发明轮子。

目标:我需要提供一个通用的通信调度层,它将根据正在与之通信的目标端点自动选择适当的通信通道。

如果目标是本地的,我们要在-vm中进行通信。如果它是远程的,我们计划在 websockets 上使用我们自己的二进制格式。我们会知道它是本地的还是远程的,所以这是创建/选择正确频道的问题。

我希望每个服务器实例都有某种通道缓存/映射。这将包括:

  • 1 个(虚拟机内)通道
  • 0+ (websocket) 通道:每个服务器-服务器通道 1

问题:鉴于我们的目标,对于本地(虚拟机内)通信,我们是否应该:

  • 使用本地频道?
  • 使用嵌入式频道?- 不确定这是为了什么
  • 不使用官方频道,直接通话和通话?

使用 LocalChannel 与短路本地呼叫有很大的性能差异吗?如果我们可以在本地情况下消除编码/解码,那将是首选。

谢谢!

4

1 回答 1

3

我在以下多人游戏服务器中使用 Jetlang 和 Netty 进行虚拟机内消息传递。您可能想查看代码的 UDP 部分以了解我如何进行会话查找等。这似乎与您的用例有点相似。
EmbeddedChannel用于测试目的。请查看 jetserver 的测试用例以查看其使用示例。它不适用于主流用途。
不知道不使用频道你会怎么做,所以我无法回答那篇文章。

于 2012-10-26T03:45:19.230 回答