sockets - 什么是分布式系统中的中间件?

标签 sockets network-programming middleware distributed-system

我现在正在上分布式系统的类(class),我无法理解中间件的概念。我知道它是一个软件层,在应用程序和网络上的实际通信之间提供一定程度的抽象,但我需要具体的例子。我知道 CORBA 和 Java RMI 是中间件的示例,但这些对我来说并没有真正意义。

当我用 Java 编写一个通过 DatagramSockets() 进行通信的客户端-服务器程序时,这个中间件是什么?如果是这样,为什么不呢? Java DatagramSocket() 方法提供了从我的应用程序到网络上实际通信的抽象级别。

最佳答案

到目前为止,我同意评论者的意见 - 这并不是一个明确的术语。

但是,我能想到的最适用于您的问题的是消息队列,例如 0MQRabbitMQ .它们提供了与网络交互的不同方式,这些方式比直接使用 TCP 或 UDP 更抽象。他们都鼓励使用可应用于大多数分布式系统问题的“网络模式”。

  • 0MQ 提供有关客户端和服务器开始顺序的灵 active ,使用多种协议(protocol)(线程之间/进程之间/通过 TCP/通过 UDP/...)发送消息,并处理网络断开连接。

  • RabbitMQ(我对此知之甚少)提供了持久保存到磁盘的集中式消息队列,并允许您网络上的客户端只知道相关队列的位置(而不是该队列的所有生产者/消费者的位置)是)。

关于sockets - 什么是分布式系统中的中间件?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15734537/

相关文章:

java.io.FileNotFoundException : (The system cannot find the path specified)

c - 使用指针会导致段错误

swift - Vapor 4/Swift : Middleware development

php - 为什么在 Laravel 中使用 Guard?

c# - TcpClient应该用于这种情况吗?

Python:如何等到子进程完成初始化

http - 什么控制 TCP 段是传递到传递给 accept() 的套接字还是传递给 accept() 返回的套接字?

sockets - 套接字API : why `connect` doesn't return a descriptor?

c# - IP地址问题

node.js - 如何在 browserify 中使用非 commonjs 库?