Skip to content
This repository has been archived by the owner on Mar 31, 2021. It is now read-only.

Guide on how to customize services using extensions/plugins #21

Open
duribe-vibrent opened this issue Feb 25, 2019 · 1 comment
Open

Comments

@duribe-vibrent
Copy link

duribe-vibrent commented Feb 25, 2019

In the documentation, there is a mention that it would be possible to use other data stores by using some extension points, but there are no details on how this could be accomplished. I found the class that implements the interface for Cassandra, but not sure what would need to be done to do it with an RDBMS like MySQL.

Also, is there an alternative to Hazelcast? We don't have that in our infrastructure, but we do have Zookeeper and Redis (which also offers distributed locks).

@sandeepmalik
Copy link
Contributor

Hi @duribe76, Good point. I'll update the documentation to that effect. Essentially, you will need to implement two interfaces defined in this file.
https://github.com/walmartlabs/bigben/blob/master/lib/src/main/kotlin/com/walmartlabs/bigben/entities/EntityProvider.kt

And put that class as "domain" module in
https://github.com/walmartlabs/bigben/blob/master/app/src/main/resources/bigben.yaml

As far as Hazelcast is concerned, BigBen uses it in embedded mode so there's really no infrastructure required to set it up separately. There're three places where Hz is used:

  1. Cluster management and singleton lock (ZK can be used)
  2. Distributed counter (for sharding) (redis/memcache/Couchbase can be used)
  3. Distributed executor for parallel processing / triggering of events across the cluster (Spark, Ignite, etc can be used).

So, there're three different functions and Hz allows us to tackle each one of them in embedded mode without any external dependency, so that's why we chose it.

Sign up for free to subscribe to this conversation on GitHub. Already have an account? Sign in.
Labels
None yet
Development

No branches or pull requests

2 participants