繁体   English   中英

与远程Java程序联网

[英]Networking with a remote java program

我正在寻找一个bukkit服务器网络,它们都在一个允许服务器间通信的单个游戏模块下运行。 这样做的常规方法是利用MySQL数据库,并定期(5秒左右)从数据库中拉出所有服务器,以使所有服务器保持最新状态。 我想知道是否有更好的方法可以做到这一点。

我有个主意,但是我对联网还不了解,是否可行。 我正在考虑让游戏mod在它自己的java服务器(此后称为mod服务器,与bukkit不相关)下运行。 国防部服务器将拥有与国防部相关的所有数据,它将负责执行与国防部有关的所有计算(处理货币交易,增加和删除要求的土地以及处理纳税周期)。 所有bukkit服务器都需要在需要确定例如某个玩家是否可以打破障碍或伤害其他玩家的时候与mod服务器进行交互。 对Mod数据的所有更改均在Mod服务器上完成。 bukkit服务器本质上只是与Mod服务器进行交互的门户。 只要mod服务器是单线程的,那么就不会有任何并发​​问题,竞争条件或冲突。

我一直在阅读远程方法调用,并且我认为这也许是实现此目标的途径。 mod服务器将被视为RMI服务器,而客户端将是Bukkit服务器。 我通读了Java Sockets的文档,但不确定是否正是我要找的东西。 我在搜索它时遇到了困难,因为这只是一个概念,我不知道所有的技术术语。 有什么想法或建议吗? 谢谢。

每个bukkit服务器都应负责管理其中的播放器,并且仅管理其中的播放器。 因此,当玩家加入该特定服务器时只需加载玩家数据时,就不需要此mod服务器来处理SQL。 可以在本地数据上完成对播放器的任何更新,然后在播放器离开或发生时将其提交到数据库。 例如,服务器将zPermissions用于跨服务器权限。 它会根据更改进行更新,并且更改到另一台服务器的播放器拥有原始服务器的所有权限。 唯一的问题是组权限更改时,只需要重新加载权限即可更新,但是一旦组织好服务器,这些权限就不会经常更改。

您在使用BungeeCord吗? 如果是这样,则可以创建自己的插件频道。
您可以通过自己的通道将数据从每个子服务器(bukkit服务器)发送到主服务器(bungeecord代理)。 这里是一个解释:
http://www.spigotmc.org/wiki/bukkit-bungee-plugin-messaging-channel/#the-bungeecord-plugin-channel

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM