【发布时间】:2015-03-16 20:12:49
【问题描述】:
我想知道通过 zeromq 公开库的最佳方式是什么。比如说,我在一台机器上安装了一个机器学习库 (mll),而我在另一台机器上运行了一个 zeromq 代理。现在,如果我有一个 zeromq 客户端需要调用 mll 中的函数,它如何通过代理来实现。
我想知道我需要采取哪些步骤才能以通用方式为图书馆工作。
【问题讨论】:
标签: libraries zeromq distributed-computing
我想知道通过 zeromq 公开库的最佳方式是什么。比如说,我在一台机器上安装了一个机器学习库 (mll),而我在另一台机器上运行了一个 zeromq 代理。现在,如果我有一个 zeromq 客户端需要调用 mll 中的函数,它如何通过代理来实现。
我想知道我需要采取哪些步骤才能以通用方式为图书馆工作。
【问题讨论】:
标签: libraries zeromq distributed-computing
基本上,您需要有一个“侦听器”,它从 ZMQ 获取数据并将其提供给您的机器学习后端代码,然后将结果传输回请求者。
有很多设计选择要做,例如在客户端和服务器之间使用什么格式来序列化数据(JSON?YAML?Pickle?Thrift?...),以及如何编码请求和请求选项。但综合考虑,这是一个非常简单的 ZMQ 用法。
当您想要功能更丰富、更完整、更健壮等设计时,问题就来了——比如多线程或多进程服务器、多机器可扩展性、安全的用户/请求身份验证和授权、作业报告和仪表板,或作业检查点。所有这些“附加功能”都是常见的“网络作业调度程序”或“(企业)消息代理”功能,它们往往与Celery 或RQ 等软件包一起提供开箱即用的功能。
如果您不想走完整的“消息代理中间件”路线,您可以先检查其他基于轻量级 ZMQ 作业代理的设计,例如 this one from Jeff Knupp。
【讨论】: