通信中间件需要解决什么问题
分布式系统中两个不同的系统需要进行通信的时候,使用的是scocket编程,需要直接面对网络中的四层模型,编程时需要确定目标端的详细物理地址。这是非常不方便的。为了解决这个问题,需要通信中间件来屏蔽底层硬件,避免上层应用编程每次都造轮子(from scratch)
通信中间件rpc
rpc(remote procedure call),有了rpc之后,远程系统的通信像同一个系统内的通信一样方便。nfs(network file system)就是其中的一个例子。
rpc是同步通信,在服务器响应之前,客户端需要已知忙等
分布式对象
分布式对象的思想起源于面向对象编程,分布式对象将原来本地的对象调用转为远程对象调用。
分布式对象技术用orb(object request broker)(对象请求代理)来实现,corba是一个典型的例子,它支持很多平台(java c++都支持),所以应用非常广泛。
MOM(message oriented middleware)
rpc采用的通信是同步通信,接收方必须在接收到消息之前阻塞等待。
为了解决效率问题,采用mom(面向消息中间件),这里采用了一个中间服务器,我们称它为邮箱服务器,发送方发送的消息存储在邮箱服务器中,当接收方上线的时候可以选择接受消息,这和我们qq邮箱非常相似。
mom采用了消息队列message queue的方法,message就类似于邮箱服务中的消息,queue就类似于邮箱服务中的邮箱服务器。通过mom可以实现一对一和多对多的通信。
分类:
- point to point:类似于email
- publisher-subscriber:用户可以订阅topic,只要订阅了topic的subscriber都可以收到消息,类似于youtube
hyperlink