From 61c4943f62f7d57f1d576480cc32ae61a4d0c06e Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Tomasz=20Gaw=C4=99da?= Date: Mon, 26 May 2025 21:38:37 +0200 Subject: [PATCH 1/5] Add Vert.x integration OS vs EE comparison --- .../pages/get-started-with-vertx.adoc | 37 +++++++++++++++++++ 1 file changed, 37 insertions(+) diff --git a/docs/modules/integrate/pages/get-started-with-vertx.adoc b/docs/modules/integrate/pages/get-started-with-vertx.adoc index 1820072bf..6bef41f7f 100644 --- a/docs/modules/integrate/pages/get-started-with-vertx.adoc +++ b/docs/modules/integrate/pages/get-started-with-vertx.adoc @@ -459,3 +459,40 @@ Enable the CP subsystem, and in cluster.xml change the value of the `` property You need to start at least 3 instances for the cluster to form successfully. For complete documentation, see the xref:cp-subsystem:cp-subsystem.adoc[CP Subsystem] section. + +=== Differences between Hazelcast Vert.x Enterprise and Community + +Hazelcast Vert.x OSS is based on AP data structure - IMap. +If you value consistency over availability and want a CP structures to be used. + +[cols="1a,1a,1a"] +|=== +|Feature|Hazelcast Vert.x OSS|Hazelcast Vert.x Enterprise + +| Type of structures used +| AP +| CP + +| Price +| Free (OSS, Apache 2.0 license) +| Needs https://hazelcast.com/pricing/[Hazelcast Enterprise license] + +| 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` + +|=== + +NOTE For SharedMap we are still using IMap. Using CPMap would have impact on license pricing and performance, therefore IMap was kept as SharedMap. You can still use `CPMap` directly using Hazelcast API (not via Vert.x SharedData wrappers) if you have a valid license key. From 8b05a1bae036d38394ccd9ed95bb190aae226f0f Mon Sep 17 00:00:00 2001 From: Rob Swain Date: Tue, 27 May 2025 16:05:04 +0100 Subject: [PATCH 2/5] move and copy edit --- .../pages/get-started-with-vertx.adoc | 39 +--------------- .../integrate/pages/integrate-with-vertx.adoc | 44 ++++++++++++++++++- 2 files changed, 43 insertions(+), 40 deletions(-) diff --git a/docs/modules/integrate/pages/get-started-with-vertx.adoc b/docs/modules/integrate/pages/get-started-with-vertx.adoc index c4e72faf5..eae2b5395 100644 --- a/docs/modules/integrate/pages/get-started-with-vertx.adoc +++ b/docs/modules/integrate/pages/get-started-with-vertx.adoc @@ -477,41 +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] - -=== Differences between Hazelcast Vert.x Enterprise and Community - -Hazelcast Vert.x OSS is based on AP data structure - IMap. -If you value consistency over availability and want a CP structures to be used. - -[cols="1a,1a,1a"] -|=== -|Feature|Hazelcast Vert.x OSS|Hazelcast Vert.x Enterprise - -| Type of structures used -| AP -| CP - -| Price -| Free (OSS, Apache 2.0 license) -| Needs https://hazelcast.com/pricing/[Hazelcast Enterprise license] - -| 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` - -|=== - -NOTE For SharedMap we are still using IMap. Using CPMap would have impact on license pricing and performance, therefore IMap was kept as SharedMap. You can still use `CPMap` directly using Hazelcast API (not via Vert.x SharedData wrappers) if you have a valid license key. +See: https://hazelcast.com/blog/seamless-integration-with-vert-x-boosting-performance-and-scalability-in-java-applications/[Seamless Integration with Vert.x]. \ No newline at end of file diff --git a/docs/modules/integrate/pages/integrate-with-vertx.adoc b/docs/modules/integrate/pages/integrate-with-vertx.adoc index 61d429707..692c5549b 100644 --- a/docs/modules/integrate/pages/integrate-with-vertx.adoc +++ b/docs/modules/integrate/pages/integrate-with-vertx.adoc @@ -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 {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 Hazelcast AP (not via Vert.x `SharedData` wrappers) if you have an {enterprise-product-name} license. + == Use Vert.x Hazelcast Enterprise Cluster Manager [.enterprise]*Enterprise* From 4b107c88abf6811ab4690889f66f67d157a4bbb2 Mon Sep 17 00:00:00 2001 From: Rob Swain Date: Tue, 27 May 2025 16:21:18 +0100 Subject: [PATCH 3/5] formatting --- docs/modules/integrate/pages/integrate-with-vertx.adoc | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/docs/modules/integrate/pages/integrate-with-vertx.adoc b/docs/modules/integrate/pages/integrate-with-vertx.adoc index 692c5549b..8090b3c77 100644 --- a/docs/modules/integrate/pages/integrate-with-vertx.adoc +++ b/docs/modules/integrate/pages/integrate-with-vertx.adoc @@ -58,7 +58,7 @@ The following table lists the differences between the two modules. |=== -NOTE: SharedMap is implemented with IMap in both modules. Using CPMap would impact license costs and performance. You can still use `CPMap` directly using Hazelcast AP (not via Vert.x `SharedData` wrappers) if you have an {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 Hazelcast AP (not via Vert.x SharedData wrappers) if you have an {enterprise-product-name} license. == Use Vert.x Hazelcast Enterprise Cluster Manager [.enterprise]*Enterprise* From 891f3103d1805519c3848f097ca72a524e1fc1f1 Mon Sep 17 00:00:00 2001 From: Rob Swain Date: Tue, 27 May 2025 16:22:26 +0100 Subject: [PATCH 4/5] clarification --- docs/modules/integrate/pages/integrate-with-vertx.adoc | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/docs/modules/integrate/pages/integrate-with-vertx.adoc b/docs/modules/integrate/pages/integrate-with-vertx.adoc index 8090b3c77..269956301 100644 --- a/docs/modules/integrate/pages/integrate-with-vertx.adoc +++ b/docs/modules/integrate/pages/integrate-with-vertx.adoc @@ -53,8 +53,8 @@ The following table lists the differences between the two modules. |`com.hazelcast`: `vertx-hazelcast-enterprise` | License -| Free (OSS, Apache 2.0 license) -| Requires {enterprise-product-name} license +| Free OSS, Apache 2.0 license +| Requires Hazelcast {enterprise-product-name} license |=== From ba64a033c437662a1479826ae7ce1ab45a7fb16d Mon Sep 17 00:00:00 2001 From: Rob Swain Date: Wed, 28 May 2025 13:54:32 +0100 Subject: [PATCH 5/5] typo --- docs/modules/integrate/pages/integrate-with-vertx.adoc | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/docs/modules/integrate/pages/integrate-with-vertx.adoc b/docs/modules/integrate/pages/integrate-with-vertx.adoc index 269956301..2b9a6a744 100644 --- a/docs/modules/integrate/pages/integrate-with-vertx.adoc +++ b/docs/modules/integrate/pages/integrate-with-vertx.adoc @@ -58,7 +58,7 @@ The following table lists the differences between the two modules. |=== -NOTE: SharedMap is implemented with IMap in both modules. Using CPMap would impact license costs and performance. You can still use CPMap directly using Hazelcast AP (not via Vert.x SharedData wrappers) if you have an {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*