我现在正在上分布式系统的类(class),我无法理解中间件的概念。我知道它是一个软件层,在应用程序和网络上的实际通信之间提供一定程度的抽象,但我需要具体的例子。我知道 CORBA 和 Java RMI 是中间件的示例,但这些对我来说并没有真正意义。
当我用 Java 编写一个通过 DatagramSockets() 进行通信的客户端-服务器程序时,这个中间件是什么?如果是这样,为什么不呢? Java DatagramSocket() 方法提供了从我的应用程序到网络上实际通信的抽象级别。
最佳答案
到目前为止,我同意评论者的意见 - 这并不是一个明确的术语。
但是,我能想到的最适用于您的问题的是消息队列,例如 0MQ或 RabbitMQ .它们提供了与网络交互的不同方式,这些方式比直接使用 TCP 或 UDP 更抽象。他们都鼓励使用可应用于大多数分布式系统问题的“网络模式”。
0MQ 提供有关客户端和服务器开始顺序的灵 active ,使用多种协议(protocol)(线程之间/进程之间/通过 TCP/通过 UDP/...)发送消息,并处理网络断开连接。
RabbitMQ(我对此知之甚少)提供了持久保存到磁盘的集中式消息队列,并允许您网络上的客户端只知道相关队列的位置(而不是该队列的所有生产者/消费者的位置)是)。
关于sockets - 什么是分布式系统中的中间件?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15734537/