ZeroMQ 上下文应该每个驱动实例创建一次¶
https://blueprints.launchpad.net/oslo.messaging/+spec/zmq-context-per-driver-instance
ZeroMQ 上下文对象具有单例特性,因此每个驱动创建它超过一次会造成资源浪费。
现在它是每个 socket 创建一次。
提议的变更¶
oslo-messaging¶
将 zmq 上下文的创建从 ZmqSocket 构造函数 ZmqSocket.__init__()
# oslo_messaging/_drivers/impl_zmq.py
class ZmqSocket(object):
def __init__(self, addr, zmq_type, bind=True, subscribe=None):
self.ctxt = zmq.Context(CONF.rpc_zmq_contexts)
self.sock = self.ctxt.socket(zmq_type)
移动到 ZmqDriver 构造函数 ZmqDriver.__init__()
# oslo_messaging/_drivers/impl_zmq.py
class ZmqDriver(base.BaseDriver):
def __init__(self, conf, url, default_exchange=None,
allowed_remote_exmods=None):
self.ctxt = zmq.Context(CONF.rpc_zmq_contexts)
更新 ZmqSocket.__init__() 以将 zmq 上下文作为参数传递
# oslo_messaging/_drivers/impl_zmq.py
class ZmqSocket(object):
...
def __init__(self, zmq_ctx, addr, zmq_type, bind=True, subscribe=None):
self.ctxt = zmq_ctx
self.sock = self.ctxt.socket(zmq_type)
备选方案¶
无
Impact on Existing APIs¶
无
安全影响¶
无
性能影响¶
无
Configuration Impact¶
无
开发人员影响¶
无
实现¶
负责人¶
- 主要负责人
Oleksii Zamiatin (ozamiatin@mirantis.com)
- 其他贡献者
无
里程碑¶
next-kilo
工作项¶
执行代码移动
更新 impl_zmq 中所有使用 socket 的地方
孵化¶
N/A
采用¶
N/A
库¶
oslo.messaging
文档影响¶
N/A
依赖项¶
无
参考资料¶
注意