Socket TCP连接在不同的服务器上

我想知道是否可以在服务器之间使用TCP协议创build套接字连接。

例如:我有两个服务器,一个是API,另一个是服务,所以API调用服务,如果不在同一台机器,我怎么能发送消息?

我使用ZeroMQ ,我绝对需要这种分离。

其他import件是安全的。 TCP套接字连接是否安全?

谢谢。

       

网上收集的解决方案 "Socket TCP连接在不同的服务器上"

这绝对是可能的,而且是互联网的基础。 您的计算机上的浏览器会永久打开远程服务器的套接字。

有很多方法可以lockingTCP连接:跨networking级别,操作系统级别或应用程序级别。

如果您需要对发送的数据进行encryption,事实上,如果您的服务器位于您自己的专用子网上,并且无法访问外部,则通常会使用未encryption的通信。

我从来没有使用过ZeroMQ,但是如果您将它作为中央存储或消息总线使用,您可以将其绑定到networking上具有相应可见性的接口,然后从您的任何服务器连接到它。

既然是100%可能,我觉得这个问题变成了:

你应该如何暴露他们的外部接口? 你应该在哪个抽象级别上暴露你的服务器? 即。

  • 他们应该通过原始sockets进行沟通吗?
  • 他们应该通过RPC通信吗?
  • 他们是否应该像REST那样拥有更高层次的接口?
  • 是否所有的沟通都通过zeroMQ进行?

我强烈build议你决定采取什么样的方式,你要非常谨慎地审计安全,确保没有任何东西不应该暴露在外面的世界。

你可以使用Redis来达到这个目的。 如果两个服务器(一个是API和其他你称为服务的)必须与API调用(客户端)通信。 那么Redis pub / sub是个不错的build议。 在这里输入图像描述

如果他们不在同一台服务器是可以在一台机器内进行通信或远程通信。取决于你如何configuration它。

TCP安全套接字是可以configuration使用SSL请参阅Redisencryption 。

这里是关于如何通过redis进行通信的好主题。 请参阅redis上的实时通信