如何在两台Java服务器之间建立网络通信

如何在两台Java服务器之间建立网络通信,java,Java,目前我有两台Java服务器(游戏服务器和数据库服务器),将来还会有更多。我需要在its之间建立网络通信,因为它们可以在不同的机器上运行 最初,我想序列化对象并通过网络发送它们,假设您需要将用户保存到数据库中,我序列化对象并发送它以保存,但是我们如何处理删除、修改等。。。因此,我认为这种方法不是很可取 在这方面,问题可能是有任何现成的工具或技术可用于此目的,或者可能值得实现协议本身(但如何更好地实现)?从协议开始 定义可以发送的内容以及服务器需要的数据。如果需要,您可以使用序列化,但在使用序列化的

目前我有两台Java服务器(游戏服务器和数据库服务器),将来还会有更多。我需要在its之间建立网络通信,因为它们可以在不同的机器上运行

最初,我想序列化对象并通过网络发送它们,假设您需要将用户保存到数据库中,我序列化对象并发送它以保存,但是我们如何处理删除、修改等。。。因此,我认为这种方法不是很可取


在这方面,问题可能是有任何现成的工具或技术可用于此目的,或者可能值得实现协议本身(但如何更好地实现)?

从协议开始

定义可以发送的内容以及服务器需要的数据。如果需要,您可以使用序列化,但在使用序列化的同时,您还应该提供有关发送内容的附加信息,以及(如果需要)如何使用序列化的附加信息

当然,您的业务逻辑还没有现成的实现


您可以决定发送什么、何时以及如何发送。

使用JSON定义您自己的协议,如下所示:设计一个包含您希望来回传递的数据的对象,或者为每个方向设计一个单独的实体。有几种现成的解决方案可以将对象转换为JSON字符串并返回。然后通过TCP发送字符串-例如,请参见。

因此,有各种机制可供两台服务器(API)通信,从RMI、RPC到REST、JMS。您必须决定要实现什么机制。REST就是一个很好的例子,根据您想要执行的操作,您可以选择适当的Http方法,所以在插入/更新时使用POST/PUT并在正文中传递数据。虽然delete(delete)只调用api(方法),但在最坏的情况下,可以使用一些标志

JMS是另一种方便的机制,您可以在其中发送消息并执行操作。与REST类似,您可以定义消息格式,消息头可用于定义要执行的操作


做这种事情的一种老式方法,如您所说的与数据库服务器通信,是通过传递适当的参数来定义DB用户存储过程(USP)或函数&callusp/function。当然,您必须编写客户端应用程序来执行此传递/调用任务。

如果一个是游戏服务器,另一个是数据库,那么您的数据库不应该是“Java服务器”。在这种情况下,可以说该数据库是游戏服务器的数据源。首先,您可以研究hibernate,了解数据访问对象(DAO)以及jdbc之类的东西。但目前有必要分担责任,未来将有一个代理、一个平衡器和一个聊天服务器。他们之间需要建立关系。