Storm - DRPC versus Transactional versus Trident - When to use what?

3.4k views Asked by At

Trident seems to have deprecated DRPC and Transactional Topologies. And its also not so clear why a regular topology cannot do what a DRPC Topology would do. Whats the specialty with DRPC Topology?

Can somebody explain when to use DRPC, Transactional, Trident?

Any help appreciated

3

There are 3 answers

0
Gordon Seidoh Worley On

Both DRPC and Transactional topologies are just conveniences built on top of the basic Storm topology. You are right that you would implement them wholly on your own, but the treat thing is that they already exist and can simplify your work when dealing with these common patterns.

That said, you are right in that Trident is intended to deprecate transactional and DRPC topologies by wrapping up a lot of what they do in a better abstraction layer for building Storm topologies. Be sure to check out the Trident tutorial for some more info on how you can use Trident.

The choice between Trident and DRPC/Transactional is which version of Storm you are using. If you are using 0.8.x, Trident is unavailable. If you are using 0.9.x, Trident has replaced DRPC/Transactional and you must use Trident to do what those kinds of topologies did before.

0
schiavuzzi On

Trident is available in Storm 0.8.x, too. The first Storm release to include Trident was 0.8.0. See the announcement post in the storm-user group for more information.

In any case, it is recommended to use Trident, since DRPC and Transactional topologies are deprecated from 0.8.0 on. Trident simplifies a lot on these old topologies, and is more fun to use and understand.

0
teu On

Trident works pretty well with 0.8.2, and replaces the lower-level transactional topologies.

Where/when was it stated that DRPC is deprecated? I have not seen such an announcement.

There is nothing that precludes the use of Trident for processing, and DRPC for queries. The Trident tutorial itself (http://storm.apache.org/releases/0.10.0/Trident-tutorial.html) uses DRPC.

The main use of DRPC is to query a running topology. You can think of it as a convenient way to insert a query tuple and get an answer back when that tuple is processed.