openstack组件oslo.message之RPCServer实现

本文详细探讨了openstack组件oslo.message中的RPCServer实现,从初始化RPC server的源代码开始,分析了messaging.get_rpc_server、transport、executor和dispatcher之间的区别。接着,重点讲解了RPCDispatcher类以及RPCServer的start方法,阐述了如何处理和响应传入的消息,直至调用stop()方法停止服务。
摘要由CSDN通过智能技术生成

这一章主要讲openstack的组件oslo.message中RPCServer实现

在openstack中初始化一个RPC的server源代码:在/nova/rpc.py中

def get_server(target, endpoints, serializer=None):
    assert TRANSPORT is not None
    serializer = RequestContextSerializer(serializer)
    return messaging.get_rpc_server(TRANSPORT,
                                    target,
                                    endpoints,
                                    executor='eventlet',
                                    serializer=serializer)

首先看看messaging.get_rpc_server,文件位于oslo_messaging/rpc/server.py中

def get_rpc_server(transport, target, endpoints,
                   executor='blocking', serializer=None):
    """rpc_server代码结构
    """
    dispatcher = rpc_dispatcher.RPCDispatcher(target, endpoints, serializer)
    return msg_server.MessageHandlingServer(transport, dispatcher, executor)

exector参数控制如何接收和派遣传入消息,关于transport,dispatch,executor三者区别,引用一段代码注释Connect a transport to a dispatcher that knows how to process the message using an executor that knows how the app wants to create new tasks.transport是传输层,在消息中间件层接收消息,executor确定接收消息的线程模型,dispatch负责最终处理消息。

下面看下第一个类RPCDispatcher,文件位于oslo_messaging/rpc/dispatcher.py

class RPCDispatcher(object):
    """在PRC消息之下的消息调度
    """

    def __init__(self, target, endpoints, serializer):
        """rpc服务器调度的结构
        """

        self.endpoints = endpoints
        self.serializer = serializer or msg_serializer.NoOpSerializer()
        self._default_target = msg_target.Target()
        self._target = target
回到get_rpc_server方法,在分析下MessageHandlingServer类的初始化
class MessageHandlingServer(service.ServiceBase):
    """消息处理服务器
    """

    def __init__(self, transport, dispatcher, executor='blocking'):
        """消息处理服务器的结构
        """
        self.conf = transport.conf

        self.transp
  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值