Search code examples
hazelcastvert.xsockjshazelcast-imaphazelcast-jet

Fast and Scalable Real-Time Application (Is Hazelcast Jet a good way?)


Actually, in our architecture, we use Hazelcast IMDG, in order to share information about user operativities among several server nodes.

Our map has the following structure: [key:String|value: CustomObject].

Now, we want to expand our product functionality and we want to develop a real-time dashboard performing real-time data stream by doing:

  1. Complex Aggregation
  2. Continuous Query
  3. etc.

At the end of the process we want to “send” the result to a Vert.x Eventbus and then to a socket layer (SockJS), in order to show the data in a dashboard.

Our need is to set-up a scalable and fast system, in order to handle a heavy amount of data such as thousands of events per second.

The first image represent our current (old) architecture, the second image represent our “target” architecture.

Old Architecture

Target Architecture



What do you think about target architecture?

Is the role of Hazelcast Jet correct or are there another way to perform these operations (for example only with Hazelcast IMDG)?


Thanks in advance.


Solution

  • Looks like a good fit for Hazelcast Jet. You probably will use Sources.mapJournal() to process entries as they are added to the IMap. You can aggregate into sliding windows easily. Writing a Vert.x Event Bus sink should be straightforward with SinkBuilder. Thousands events/s is a low figure, it depends on how much work will you do with each event.