模仿OpenStack写自己的RPC

在openstack中使用两种通信方式,一种是Restful API,另一种是远程过程调用RPC。本片文章主要讲解openstack中RPC的使用方式,以及如何在我们自己的架构中使用RPC。

在我前面的一篇文章《基于Rabbitmq的RPC调用》中已经简单的介绍过RPC,Rabbitmq两种技术,openstack中的RPC调用实现是自己的通用库oslo_message,该库是对基于Rabbitmq实现的RPC的一个封装。

 

 一、技术介绍

nova模块是openstack中最核心的服务,nova模块使用了众多的RPC服务将业务解耦,如:nova-api; nova-conductor; nova-scheduler; nova-compute等。每一个服务都是一个RPC的服务端,同时每一个服务都是一个RPC的客户端。

模仿OpenStack写自己的RPC

service服务启动的就是nova的RPC服务

模仿OpenStack写自己的RPC

 

nova各个服务启动时就是开启了一个RPC的服务端,在调用其他服务时会创建一个客户端,通过客户端调用到相应的服务。以nova创建虚拟机为例,在上图的第三步中,nova-scheduler选择好计算节点,将创建虚拟机的信息通过RPC发送给计算节点。代码经过RPC客户端的封装和调用,本文的重点就是如何调用RPC客户端。
 

模仿OpenStack写自己的RPC

 

cctxt = self.client.prepare(version=version)

cctxt.cast(context,'select_destinations',**kw)

内容版权声明:除非注明,否则皆为本站原创文章。

转载注明出处:https://www.heiqu.com/wpswps.html