Coder Social home page Coder Social logo

protoshell's Introduction

#protoshell

Protoshell implements a protocol buffer serialiaser for Storm's multi-language support that greatly improves Storm's multilang throughput over the build-in JSON serialiser.

Protoshell requies that all messages sent and received as part of the tuple fields be protocol buffer messages.

Protoshell is a binary communications protocol, as opposed to the text-based communications protocol used in Storm's JSON serialiser. It transfers varint delimited bytes, where each byte slice is a serialised protocol buffer structure.

Please refer to GoStorm and its protobuf encoding for a reference implementation of a third-party non-JVM language implementation of the Storm multilang protocol written in Go and requiring the protoshell serialiser.

Storm 0.9.2 and later now support pluggable multilang serialisation, based on this protobuf work, which means that protoshell can now be used with standard Storm.

#Performance Protoshell currently provides three to fives times higher throughput, when compared to the standard Storm JSON multilang protocol.

#The protocol To simplify the process of implementing third-party components in other languges, the protoshell serialiser to a large degree follows the same structure as the Storm multilang protocol.

As per the multilang protocol, a third-party implementation would first have to receive the topology context. The Context object is specified in messages.proto.

The third-party implementation must then respond with its process id (pid), using the Pid object in messages.proto.

The third-party application should also write its pid to the folder specified in the PidDir field in the Context object. Storm uses this pid to kill a components when an error occurs or the topology is killed.

After the pid has been communicated and recorded, the component can start to receive message.

A spout will receive SpoutMsgProto's and a bolt will receive BoltMsgProto's. The same rules that govern the reception of messages in Storm's multilang protocol also apply to the protoshell communications protocol.

If a third-party implementation wishes to transfer data to storm, it should do so by making use of the ShellMsgProto object.

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    ๐Ÿ–– Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. ๐Ÿ“Š๐Ÿ“ˆ๐ŸŽ‰

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google โค๏ธ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.