HN user

XPherior

160 karma
Posts17
Comments13
View on HN
medium.com 8y ago

What keeps Apache Kafka from eating the world?

XPherior
2pts3
pyroclast.io 8y ago

Streamlining event data infrastructure

XPherior
1pts0
pyroclast.io 8y ago

A low-tech primer on event data for your boss

XPherior
3pts0
pyroclast.io 8y ago

Complex event processing in Clojure and ClojureScript

XPherior
3pts0
pyroclast.io 9y ago

Turn plain Clojure code into streaming microservices

XPherior
1pts0
pyroclast.io 9y ago

Rapidly connecting realtime event streaming to programming languages

XPherior
3pts0
pyroclast.io 9y ago

Challenges of Record Replay in Event Streaming Architectures

XPherior
6pts0
pyroclast.io 9y ago

The Future of Event Stream Processing

XPherior
13pts0
www.onyxplatform.org 9y ago

Simulate Big Data Computations in the Browser

XPherior
8pts0
www.onyxplatform.org 10y ago

Onyx: High Performance Cluster Computation for Clojure

XPherior
6pts0
www.onyxplatform.org 10y ago

Onyx: High Performance, Distributed Batch and Stream Processing

XPherior
7pts0
www.onyxplatform.org 10y ago

Onyx: Flexible Stream Processing for the JVM

XPherior
4pts0
www.youtube.com 10y ago

Clojure Conj 2015: Onyx – Distributed Computing in Clojure

XPherior
2pts0
michaeldrogalis.github.io 10y ago

Onyx 0.7.0: High Performance Cluster Computing in Clojure

XPherior
21pts0
michaeldrogalis.github.io 11y ago

Onyx 0.6.0: Going Faster

XPherior
142pts13
michaeldrogalis.github.io 11y ago

Onyx 0.5.0: The Cluster as a Value

XPherior
11pts0
michaeldrogalis.tumblr.com 11y ago

Onyx 0.4.0: DAG workflows, catalog grouping, lib-onyx

XPherior
2pts0

We persist the IDs to disk with RocksDB itself when that happens, periodically pruning them away when the messages are complete. The Bloom filter is mostly an optimization - even though it does the job most of the time. You're right - we intentionally omitted further discussion of that piece.

I wasn't aware that they're Thrift serializable - that's cool, and offers roughly what Onyx does in terms of its workflow representation.

Onyx goes a little further though in terms of its catalog. I wanted more of the computation to be pulled out into a data structure. That includes runtime parameters, flow, performance tuning knobs, and grouping functions. All of these things are represented as data in Onyx. It's a little harder, at least in my experience, to do these things in Storm.

- Picking up Kafka means introducing another dependency.

- Onyx's log doesn't grow particularly large because it's only used for coordination, not for messaging.

- Because the log isn't huge, and can be GC'ed, consumers don't experience high volumes of messages.

- ZooKeeper offers sequential node creation - making it a really good fit for what the log needs to do.

I'll paraphrase a few snippets from my own documentation to answer these questions. Happy to comment more if needed.

Information models are often superior to APIs, and almost always better than DSLs. The hyper-flexibility of a data structure literal allows Onyx workflows and catalogs to be constructed at a distance, meaning on another machine, in a different language, by another program, etc. Contrast this to Storm. Topologies are written with functions, macros, and objects. These things are specific to a programming language, and make it hard to work at a distance - specifically in the browser. JavaScript is the ultimate place to be when creating specifications.

Further, the information model for an Onyx workflow has the distinct advantage that it's possible to compile other workflows (perhaps a datalog) into the workflow that Onyx understands.

See https://github.com/MichaelDrogalis/onyx/blob/0.5.x/doc/user-... for a continued explanation of why Onyx is more of an "open" concept.

Hello, Michael Drogalis - the author here.

I'm also not a Spark user, but I have used Storm:

- Storm is significantly more mature and performant the moment.

- Storm has a better cross-language story in terms of bolt functions.

- Pretty much everything in Onyx is much more open ended. This applies to deployment, program structure, and workflow creation - and is mostly an artifact of how aggressively Onyx uses data structures.

- Onyx has a far better reach across languages in terms of its information model.

- Onyx will be adopting a tweaked version of Storm's message model next release to get on the same level of performance and reliability. We're dropping the HornetQ dependency.

- Onyx is born out of years of frustration of direct usage of Storm and Hadoop.

I'm not sure if exactly-once messaging is possible in a distributed system. Onyx gets close in that it uses transactions to move data across queues atomically. But code can fail just before a transaction is committed. The transaction will only be committed once, but the code leading up to the transaction will be run twice. Is that really exactly-once? IMO, it's not.