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

时间:2019-03-06 06:06:29

标签: java

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

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

在这方面,问题可能是为此目的有任何现成的工具或技术,或者可能值得实施《议定书》本身(但是如何做得更好)?

3 个答案:

答案 0 :(得分:2)

从协议开始。

定义可以发送的内容以及服务器需要的数据。如果需要,您可以使用序列化,但是与此同时,您还应该提供有关正在发送的内容以及需要处理的内容的其他信息。

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

决定发送什么,何时以及如何发送。

答案 1 :(得分:1)

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

答案 2 :(得分:1)

因此,从RMI,RPC到REST,JMS,两种服务器(API)可以通过多种机制进行通信。您必须决定要实现的机制。 REST是一个很好的例子,根据您要执行的操作,选择适当的Http方法,因此在插入/更新时使用POST / PUT并将数据传递到正文中。尽管delete(DELETE)仅调用api(method),但在最坏的情况下可以使用某些标志。

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

做这种事情的一种老式方法,就像您所说的与数据库服务器通信一样,将是定义数据库用户存储过程(USP)或函数并通过传递适当的参数来调用USP /函数。在课程结束时,您必须编写客户端应用程序才能执行此传递/调用任务。