Skip to content

Add Vert.x integration OS vs EE comparison #1716

New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Open
wants to merge 6 commits into
base: main
Choose a base branch
from
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
4 changes: 2 additions & 2 deletions docs/modules/integrate/pages/get-started-with-vertx.adoc
Original file line number Diff line number Diff line change
Expand Up @@ -468,7 +468,7 @@ You need to start at least 3 instances for the cluster to form successfully. For

== Summary

In this tutorial, you learned how to add the vertx-hazelcast module and enable distributed session management, as well as how to use the `io.vertx.core.shareddata.Counter` data structure to implement a unique id generator.
In this tutorial, you learned how to add the vertx-hazelcast module and enable distributed session management, as well as how to use the `io.vertx.core.shareddata.Counter` data structure to implement a unique id generator.

== Next steps

Expand All @@ -477,4 +477,4 @@ You can dive deeper into the two available modules for integrating Hazelcast wit
- `io.vertx:vertx-hazelcast`: the open-source module maintained by the Vert.x team.
- `com.hazelcast:vertx-hazelcast-enterprise`: the enterprise module with advanced features like strong consistency for locks and counters using the CP Subsystem.

See: https://hazelcast.com/blog/seamless-integration-with-vert-x-boosting-performance-and-scalability-in-java-applications/[Seamless Integration with Vert.x]
See: https://hazelcast.com/blog/seamless-integration-with-vert-x-boosting-performance-and-scalability-in-java-applications/[Seamless Integration with Vert.x].
44 changes: 42 additions & 2 deletions docs/modules/integrate/pages/integrate-with-vertx.adoc
Original file line number Diff line number Diff line change
Expand Up @@ -14,12 +14,52 @@ In Vert.x, a cluster manager is used for various functions including:

There are 2 modules to choose from:

- `io.vertx:vertx-hazelcast` — this module is part of Vert.x and is maintained by the Vert.x team with contributions from Hazelcast developers. This module is licensed under the Apache 2 license.
- `io.vertx:vertx-hazelcast` — this module is part of Vert.x and is maintained by the Vert.x team with contributions from Hazelcast developers. This module is open source software (OSS) under the Apache 2 license.

- `com.hazelcast:vertx-hazelcast-enterprise` — this module is built on top of `vertx-hazelcast` and leverages functionality of {enterprise-product-name} to implement some of the cluster manager functionality (e.g. it uses the CP Subsystem to implement strongly consistent Lock and Counter data structures: `io.vertx.core.shareddata.Lock` and `io.vertx.core.shareddata.Counter`).
- `com.hazelcast:vertx-hazelcast-enterprise` — this module is built on top of `vertx-hazelcast` and leverages Hazelcast {enterprise-product-name} features to implement some of the cluster manager functionality. For example, it uses the CP Subsystem to implement strongly consistent Lock and Counter data structures: `io.vertx.core.shareddata.Lock` and `io.vertx.core.shareddata.Counter`.

TIP: To learn how to add the vertx-hazelcast module and enable distributed session management, as well as how to implement a unique ID generator, see xref:get-started-with-vertx.adoc[Get started with Vert.x].

== Compare editions

The open source module `io.vertx:vertx-hazelcast` is based on an AP data structure, IMap. If you require consistency over availability, you will need to use the `com.hazelcast:vertx-hazelcast-enterprise` module, which is based on CP data structures in the xref:cp-subsystem:cp-subsystem.adoc[CP Subsystem]. This requires an {enterprise-product-name} license.

TIP: You can request a trial license from link:https://hazelcast.com/get-started/[].

The following table lists the differences between the two modules.

[cols="1a,1a,1a"]
|===
|Feature|Hazelcast Vert.x OSS|Hazelcast Vert.x {enterprise-product-name}

| Type of structures used
| AP
| CP

| Lock
| Based on IMap
| Uses CP Semaphore

| Counter
| Based on IMap value
| Uses CP IAtomicLong

| Shared Map
| IMap
| IMap

| Maven artifact
|`io.vertx`: `vertx-hazelcast`
|`com.hazelcast`: `vertx-hazelcast-enterprise`

| License
| Free OSS, Apache 2.0 license
| Requires Hazelcast {enterprise-product-name} license

|===

NOTE: SharedMap is implemented with IMap in both modules. Using CPMap would impact license costs and performance. You can still use CPMap directly using the Hazelcast API (not via Vert.x SharedData wrappers) if you have an {enterprise-product-name} license.

== Use Vert.x Hazelcast Enterprise Cluster Manager
[.enterprise]*Enterprise*

Expand Down