本地通信 - 127.0.0.1 与 IPC
Local Communication - 127.0.0.1 vs. IPC
我不太清楚使用 TCP 套接字与客户端连接到 127.0.0.1 服务器地址和其他 IPC(例如消息队列)之间的区别。由于两者都用于同一主机内的通信,为什么有人会选择套接字方法而将消息队列留一个,因为在这种情况下,与队列相比,套接字将导致更多的开销。
我看到的差异:-
在套接字的情况下,我们可以在 wireshark 中看到内容,在队列中则没有这种方式。
TCP 和 IPC 都是我们在分布式架构中用于进程间通信的方法。如果进程 运行 在同一台机器上,我们将使用消息队列,但肯定不是 TCP。但是假设一个应用程序在一个盒子中 运行 而另一个应用程序在另一个盒子中 运行 我们肯定必须使用 TCP 进行进程间通信。甚至网络服务也在内部实现 TCP 以与远程应用程序通信。
但是我们仍然需要在同一台机器上的两个进程之间进行基于 TCP 的通信,而同步通信是必须的。例如,如果您发送请求获取客户的帐户信息并等待响应,则您需要这种方法。但是,如果您只需要将客户端信息发送到服务器以将其存储在 table 中,并且无论您的记录是否已成功存储,您都不需要该服务器的回答,那么您只需要排队删除消息。
环回接口/地址的意义不在于你写程序专门使用它。
重点是它可以让您与本地计算机上的网络服务 运行 对话,其方式与您与网络服务 运行 对话的方式相同 ] 在远程主机上。例如,如果我正在开发一个网站,我可以在我的本地计算机上启动其服务器的测试实例,然后将我的浏览器指向 http://127.0.0.1/
就可以了。我不必先修改浏览器的代码来通过 AF_UNIX 套接字或其他任何方式进行通话。类似地,如果我正在编写一个需要数据库的应用程序,我可能会在应用程序所在的同一台计算机上开始使用数据库 运行,通过环回与它通信,但是稍后当数据库变大时我可以移动它到专用主机,除了连接配置外,我不需要更改任何其他内容。
您完全正确,本地 IPC 开销较低,当需要通信的两个进程总是在同一台机器上时应该使用它。
我不太清楚使用 TCP 套接字与客户端连接到 127.0.0.1 服务器地址和其他 IPC(例如消息队列)之间的区别。由于两者都用于同一主机内的通信,为什么有人会选择套接字方法而将消息队列留一个,因为在这种情况下,与队列相比,套接字将导致更多的开销。
我看到的差异:- 在套接字的情况下,我们可以在 wireshark 中看到内容,在队列中则没有这种方式。
TCP 和 IPC 都是我们在分布式架构中用于进程间通信的方法。如果进程 运行 在同一台机器上,我们将使用消息队列,但肯定不是 TCP。但是假设一个应用程序在一个盒子中 运行 而另一个应用程序在另一个盒子中 运行 我们肯定必须使用 TCP 进行进程间通信。甚至网络服务也在内部实现 TCP 以与远程应用程序通信。
但是我们仍然需要在同一台机器上的两个进程之间进行基于 TCP 的通信,而同步通信是必须的。例如,如果您发送请求获取客户的帐户信息并等待响应,则您需要这种方法。但是,如果您只需要将客户端信息发送到服务器以将其存储在 table 中,并且无论您的记录是否已成功存储,您都不需要该服务器的回答,那么您只需要排队删除消息。
环回接口/地址的意义不在于你写程序专门使用它。
重点是它可以让您与本地计算机上的网络服务 运行 对话,其方式与您与网络服务 运行 对话的方式相同 ] 在远程主机上。例如,如果我正在开发一个网站,我可以在我的本地计算机上启动其服务器的测试实例,然后将我的浏览器指向 http://127.0.0.1/
就可以了。我不必先修改浏览器的代码来通过 AF_UNIX 套接字或其他任何方式进行通话。类似地,如果我正在编写一个需要数据库的应用程序,我可能会在应用程序所在的同一台计算机上开始使用数据库 运行,通过环回与它通信,但是稍后当数据库变大时我可以移动它到专用主机,除了连接配置外,我不需要更改任何其他内容。
您完全正确,本地 IPC 开销较低,当需要通信的两个进程总是在同一台机器上时应该使用它。