首页 > 编程知识 正文

vifa oslo,solo3

时间:2023-05-06 20:53:21 阅读:167461 作者:390

oslo.messaging库为OpenStack中的每个项目使用RPC和事件通知(Event Notification )提供了统一的接口。

oslo.messaging库支持amqp、kafka等通信协议。 openstack使用amqp协议,缺省情况下使用kombu的库进行amqp协议通信,因此以kombu实现的amqp的驱动程序为中心进行分析。

oslo.messaging提供的RPCClient类用于RPC调用,主要提供两个表示同步RPC调用和异步RPC调用的接口call和cast,openstack也使用这两个接口进行RPC调用接下来从这一类开始吧。 首先,让我们看一下类图。

RPCClient继承于_BaseCallContext类,call、cast的实现主要是_BaseCallContext类,这两个函数主要通过调用Transport._send进行调用其中,_CallContext继承_BaseCallContext类主要实现类方法_prepare,后续RPCClient的prepare直接调用该类方法。 此方法可用于设置调用RPC之前的参数。 从上面的类图来看,真正实现功能的是Transport类。 接下来,让我们看一下Transport类的类图。

Transport的_send ) )源代码中,您可以看到它是通过调用self._driver.send函数实现的。 这里的中心是这个_driver。 请注意,这里还有一个用于创建特定Transport对象的全局get_transport函数。 这是

stevedore库是一个通用组件库,它为oslo项目中的其他OpenStack项目提供动态加载功能。 stevedore利用python的特性,使代码更容易动态加载。 还可以通过在运行时检测并加载扩展插件来配置和扩展APP应用程序。 其中get_transport是在传入的url中查找合适的后端驱动程序。 setup.cfg文件显示各种驱动程序。

oslo.messaging.drivers=

rabbit=Oslo _ messaging._ drivers.impl _ rabbit : rabbit驱动程序

amqp=Oslo _ messaging._ drivers.impl _ amqp 1: proton driver

# thisdriverissupportingforonlynotificationusage

kaf ka=Oslo _ messaging._ drivers.impl _ kaf ka 3360 kaf ka driver

# To avoid confusion

kombu=Oslo _ messaging._ drivers.impl _ rabbit : rabbit driver

# This is just for internal testing

fake=Oslo _ messaging._ drivers.impl _ fake : fake driver

由上述结构可知,使用kmobu的对应的驱动程序是Oslo _ messaging._ drivers.impl _ rabbit 3360 rabbit驱动程序,所以下面来看rabbit驱动程序的类图

从上面的类图中可以看到,所有后端驱动程序都继承一个名为BaseDriver的接口类,而RabiitDriver继承AMQPDriverBase类。 AMQPDriverBase实现了RPC通信的业务逻辑,通过ConnectionPool获取具体的connection,RabbitDriver继承了AMQPDriverBase类后,主要功能是在类初始化时使用connection 从代码中可以看出,Connection是最终调用combu库的类。

版权声明:该文观点仅代表作者本人。处理文章:请发送邮件至 三1五14八八95#扣扣.com 举报,一经查实,本站将立刻删除。

  • 相关阅读