标签: sockets network-programming middleware distributed-system
我正在上分布式系统上课,我无法理解中间件。我知道它是一个软件层,它在应用程序和网络上的实际通信之间提供了一定程度的抽象,但我需要具体的例子。我知道CORBA和Java RMI是中间件的例子,但那些对我来说真的没有意义。
当我用Java编写客户端服务器程序时,通过DatagramSockets()进行通信是中间件吗?若是,为什么不呢? Java DatagramSocket()方法提供了从我的应用程序到网络上实际通信的抽象级别。
答案 0 :(得分:1)
我同意评论者到目前为止 - 这不是一个明确的术语。
但是,我能想到的最适合您的问题的是0MQ或RabbitMQ等消息队列。它们提供了与网络交互的不同方式,这比直接使用TCP或UDP更抽象。他们都鼓励使用可以应用于大多数分布式系统问题的“网络模式”。
0MQ提供了客户端和服务器开始排序的灵活性,使用多种协议(线程之间/进程之间/通过TCP / over UDP / ...)发送消息,并处理网络断开连接。
RabbitMQ(我不太了解)提供了集中式消息队列,这些队列持久存储到磁盘并允许网络上的客户端只知道相关队列的位置(而不是该队列的所有生产者/消费者所在的位置)是)。