1、RPC是一种技术框架的称呼,不是某种具体协议,不局限于某种协议,RPC顾名思义就是远程过程调用,其核心思想是,RPC客户端调用远程服务器上的接口完成过程调用,远程服务器把结果返回。

2、RPC的最底层仍然是socket来实现服务器之间的网络通信。但是,socket之上,在哪一层实现RPC调用,则可以有两大类,一类是基于TCP实现的,一类是基于HTTP实现的。

      基于TCP实现的RPC,参见参考文档中“基于TCP和HTTP协议的RPC简单实现”

      基于HTTP实现的RPC,根据数据序列化的方式分为XML和JSON两种,即XML-RPC和JSON-RPC,实践见文档:

               http://www.cnblogs.com/zhouhaibing/p/7005235.html

               

3、RPC实现了客户端和服务器端之间的一对一的关系,现实情况是,RPC的客户端应用分布在多个服务器上,RPC的服务器端也分布在多个服务器上,此时就不可能让客户端指定某个服务器的方式进行远程调用,于是,消息队列派上用场。

      

 

     

4、openstack中大量使用的消息队列是rabbitMQ,但是为了屏蔽具体实现,以及可以替换成其他产品实现,于是在AMQP上抽象了 oslo_message 公共库,关系如下:

     

        

      

参考文档:

1、OpenStack的oslo_messaging组件使用  http://blog.csdn.net/gj19890923/article/details/50278669

2、Neutron-server初始化 — RPC服务初始化  http://blog.csdn.net/qiqishuang/article/details/52056511

3、基于TCP和HTTP协议的RPC简单实现 http://blog.csdn.net/xlgen157387/article/details/53543009

4、

posted on 2017-10-29 19:59  爱编程的小兵  阅读(360)  评论(0编辑  收藏  举报