首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >如何在风暴中编写c++ spout/bolt和在风暴中的节俭使用

如何在风暴中编写c++ spout/bolt和在风暴中的节俭使用
EN

Stack Overflow用户
提问于 2013-10-01 13:40:44
回答 1查看 4K关注 0票数 10

来自here:Storm从一开始就被设计成与多种语言兼容。Nimbus是一种Thrift服务,拓扑被定义为Thrift结构。Thrift的使用允许Storm在任何语言中使用。

我看到在java中创建的拓扑通过将拓扑(spouts、bolts、ComponentCommon)序列化为Thrift数据类型进行部署,然后部署在Nimbus上。在Java中,很容易将对象及其方法和数据序列化。因此,另一方面,Nimbus只需要创建对象并调用它们。(我可能遗漏了这里的细节,但我希望我没有弄错)

但我想知道如何用C++编写拓扑并以相同的方式部署它。thrift是否有助于序列化基于c++的拓扑,而Nimbus以与Java相同的方式部署/执行拓扑?

我已经在这方面看到了link1 link2的链接,唯一的解决方案似乎是使用Shelbolt。其调用该过程并通过标准i/o与其通信。

为了使用Thrift的方式,我们需要在C++中重写storm核心吗?另外,当Thrift只支持JVM语言时,为什么还要使用它?Thrift似乎根本不适用于python/c++这样的语言。

EN

回答 1

Stack Overflow用户

发布于 2014-01-26 03:53:52

我不确定我是否正确理解了您的问题--根据我的理解,您是在问Is it possible [without the Shebolt hack] to use Storm [with Thrift as comm protocol] with C++-written bolts and with C++ as the language that creates the topology

由于这个问题缺乏其他答案,并且基于我自己的研究,我假设对于您的问题没有完成的、可用的实现。

因此,如果你真的必须使用Storm (它的常见用例是JVM,所以即使理论上它可以与任何语言一起工作,但这并不意味着有其他语言的生态系统)和C++,你别无选择,只能使用Shebolt或自己修改Thrift。

正如您所知道的,thrift本身也被移植到了C++。因此,可以在C++中重新构建API调用。基本上,您需要移植the Java TopologyBuilder。在C++端,您可以启动with the Thrift C++ tutorial

这也是一种黑客攻击,因为你基本上只重建了堆栈的一半(在本例中是在Thrift之上),但一般来说,对于Storm这样的系统设计,你几乎没有其他选择。例如,已经从-scr重新构建了MySQL二进制协议

除非有人已经为你完成了这项工作(在我的研究中我完全忽略了这一点),否则我别无选择,只能自己去做(也许storm也不是最适合你的工具!)

如果除了ShellBolt之外的另一个技巧(可能更复杂,甚至更慢)对你来说已经足够好了,你可以尝试从C++内部启动一个JVM,例如查看this SO post。我不推荐这样做。

如果您需要一个替代的分布式任务队列,我有在Python环境中使用Celery的良好经验,但是我没有在C++中直接使用它的经验(我通常使用ZeroMQ控制Python,或者在必要时编写自己的基于ZeroMQ的队列,但这不是通用的解决方案)。

票数 4
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/19108769

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档