Skip to content
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

Add "group" to Ditto pubsub #878

Closed
yufei-cai opened this issue Nov 9, 2020 · 0 comments · Fixed by #906
Closed

Add "group" to Ditto pubsub #878

yufei-cai opened this issue Nov 9, 2020 · 0 comments · Fixed by #906
Milestone

Comments

@yufei-cai
Copy link
Contributor

Add a "group" concept to Ditto pubsub similar to groups in Akka pubsub.

  • Subscribers may subscribe with a group name.
  • Published signals are delivered to exactly 1 subscriber within each group chosen consistently according to the entity ID.

WIth this feature, the event publishing at connections will scale with the number of client actors by having the client actors subscribe for events directly using the connection ID as group.

@thjaeckle thjaeckle added this to the 1.5.0 milestone Nov 9, 2020
yufei-cai added a commit to bosch-io/ditto that referenced this issue Dec 7, 2020
…or declared ack labels with group.

Signed-off-by: Yufei Cai <yufei.cai@bosch.io>
yufei-cai added a commit to bosch-io/ditto that referenced this issue Dec 7, 2020
…iling)

- akka.japi.Pair is not serializable. Use a different data structure.

Signed-off-by: Yufei Cai <yufei.cai@bosch.io>
yufei-cai added a commit to bosch-io/ditto that referenced this issue Dec 7, 2020
…f serialization; test remote conflict.

- Delete AckDData, which uses a non-serializable type akka.japi.Pair
  as value of ORMultiMap.

- Opted to use String as value type of ORMultiMap and deserialize
  on each ddata change notification. This way, sweeping changes to
  serialization configuration in all dependent services are avoided.

Signed-off-by: Yufei Cai <yufei.cai@bosch.io>
yufei-cai added a commit to bosch-io/ditto that referenced this issue Dec 7, 2020
…ter; add javadoc.

Signed-off-by: Yufei Cai <yufei.cai@bosch.io>
yufei-cai pushed a commit to bosch-io/ditto that referenced this issue Dec 7, 2020
…er into own "API" package

* made abstract classes package private where now feasible
* small javadoc adjustments

Signed-off-by: Thomas Jaeckle <thomas.jaeckle@bosch.io>
yufei-cai added a commit to bosch-io/ditto that referenced this issue Dec 7, 2020
- Add serialization and deserialization of grouped acknowledgement
  label declarations.

- Add typed change notifications from AckUpdater.

- Handle remote racing.

Signed-off-by: Yufei Cai <yufei.cai@bosch.io>
yufei-cai added a commit to bosch-io/ditto that referenced this issue Dec 7, 2020
Signed-off-by: Yufei Cai <yufei.cai@bosch.io>
yufei-cai added a commit to bosch-io/ditto that referenced this issue Dec 7, 2020
…in topics ddata.

Signed-off-by: Yufei Cai <yufei.cai@bosch.io>
yufei-cai added a commit to bosch-io/ditto that referenced this issue Dec 7, 2020
…essed topic type from ByteString to Long to prepare for JSON serialization.
yufei-cai added a commit to bosch-io/ditto that referenced this issue Dec 7, 2020
…tal update.

Incremental update removed due to losing granuality of topics
in the distributed data.

Signed-off-by: Yufei Cai <yufei.cai@bosch.io>
yufei-cai added a commit to bosch-io/ditto that referenced this issue Dec 7, 2020
Command deserialization is extended to give recursive access
to the registry in order to deserialize inner signals.

Signed-off-by: Yufei Cai <yufei.cai@bosch.io>
yufei-cai added a commit to bosch-io/ditto that referenced this issue Dec 7, 2020
Reason: Serialization of PublishSignal command.

Signed-off-by: Yufei Cai <yufei.cai@bosch.io>
yufei-cai added a commit to bosch-io/ditto that referenced this issue Dec 7, 2020
Inner signal may not be a command. Should recurse onto mapping
strategies level instead of the same (command) registry.

Signed-off-by: Yufei Cai <yufei.cai@bosch.io>
yufei-cai added a commit to bosch-io/ditto that referenced this issue Dec 7, 2020
Signed-off-by: Yufei Cai <yufei.cai@bosch.io>
yufei-cai added a commit to bosch-io/ditto that referenced this issue Dec 7, 2020
…e publisher side.

Signed-off-by: Yufei Cai <yufei.cai@bosch.io>
yufei-cai added a commit to bosch-io/ditto that referenced this issue Dec 7, 2020
…roups at the subscriber.

Signed-off-by: Yufei Cai <yufei.cai@bosch.io>
yufei-cai added a commit to bosch-io/ditto that referenced this issue Dec 7, 2020
…ibe in a group.

Signed-off-by: Yufei Cai <yufei.cai@bosch.io>
yufei-cai added a commit to bosch-io/ditto that referenced this issue Dec 7, 2020
…nectionPersistenceActorTest; fix that grouped ack label declarations conflict with themselves.

Signed-off-by: Yufei Cai <yufei.cai@bosch.io>
yufei-cai added a commit to bosch-io/ditto that referenced this issue Dec 7, 2020
…StreamingSessionActorHeaderInteractionTest.

Signed-off-by: Yufei Cai <yufei.cai@bosch.io>
yufei-cai added a commit to bosch-io/ditto that referenced this issue Dec 7, 2020
…m ConnectionPersistenceActor to OutboundDispatchingActor; add InboundSignal; fix deserialization of null event metadata.

Signed-off-by: Yufei Cai <yufei.cai@bosch.io>
yufei-cai added a commit to bosch-io/ditto that referenced this issue Dec 7, 2020
…xtension.

Signed-off-by: Yufei Cai <yufei.cai@bosch.io>
yufei-cai added a commit to bosch-io/ditto that referenced this issue Dec 7, 2020
…igin.

Signed-off-by: Yufei Cai <yufei.cai@bosch.io>
yufei-cai pushed a commit to bosch-io/ditto that referenced this issue Dec 7, 2020
…/import stuff

Signed-off-by: Thomas Jaeckle <thomas.jaeckle@bosch.io>
yufei-cai added a commit to bosch-io/ditto that referenced this issue Dec 7, 2020
…ecover from message loss; make client actors watch each other to remove zombies from cache.

Signed-off-by: Yufei Cai <yufei.cai@bosch.io>
yufei-cai pushed a commit to bosch-io/ditto that referenced this issue Dec 7, 2020
….. to assign...

Signed-off-by: Thomas Jaeckle <thomas.jaeckle@bosch.io>
yufei-cai added a commit to bosch-io/ditto that referenced this issue Dec 7, 2020
…istence actor to client actors.

Signed-off-by: Yufei Cai <yufei.cai@bosch.io>
yufei-cai added a commit to bosch-io/ditto that referenced this issue Dec 7, 2020
…ublishSignal.

Signed-off-by: Yufei Cai <yufei.cai@bosch.io>
yufei-cai added a commit to bosch-io/ditto that referenced this issue Dec 7, 2020
…connection persistence actor where possible.

Client actors now dispatch search commands to each other whenever
they contain a subscription ID to identify the intended recipient.
Only CreateSubscription is routed through the connection persistence
for round-robin subscription ID assignment.

Signed-off-by: Yufei Cai <yufei.cai@bosch.io>
yufei-cai added a commit to bosch-io/ditto that referenced this issue Dec 7, 2020
Signed-off-by: Yufei Cai <yufei.cai@bosch.io>

Conflicts:
	services/connectivity/messaging/src/main/java/org/eclipse/ditto/services/connectivity/messaging/BaseClientActor.java
	services/connectivity/messaging/src/main/java/org/eclipse/ditto/services/connectivity/messaging/OutboundMappingProcessor.java
	services/connectivity/messaging/src/main/java/org/eclipse/ditto/services/connectivity/messaging/persistence/ConnectionPersistenceActor.java
	services/connectivity/messaging/src/main/java/org/eclipse/ditto/services/connectivity/messaging/persistence/ConnectionSupervisorActor.java
	services/connectivity/messaging/src/test/java/org/eclipse/ditto/services/connectivity/messaging/persistence/ConnectionPersistenceActorTest.java
yufei-cai pushed a commit to bosch-io/ditto that referenced this issue Dec 7, 2020
Signed-off-by: Thomas Jaeckle <thomas.jaeckle@bosch.io>
yufei-cai pushed a commit to bosch-io/ditto that referenced this issue Dec 7, 2020
Signed-off-by: Thomas Jaeckle <thomas.jaeckle@bosch.io>
yufei-cai added a commit to bosch-io/ditto that referenced this issue Dec 7, 2020
… on the same node.

For single-connectivity instance deployments, starting multiple client
actors on the same node increases concurrency and reduces the impact
of latency on connection throughput.

Signed-off-by: Yufei Cai <yufei.cai@bosch.io>
yufei-cai added a commit to bosch-io/ditto that referenced this issue Dec 7, 2020
…cription ID.

Signed-off-by: Yufei Cai <yufei.cai@bosch.io>
yufei-cai added a commit to bosch-io/ditto that referenced this issue Dec 7, 2020
…tion has 1 client.

Signed-off-by: Yufei Cai <yufei.cai@bosch.io>
yufei-cai added a commit to bosch-io/ditto that referenced this issue Dec 7, 2020
Signed-off-by: Yufei Cai <yufei.cai@bosch.io>
yufei-cai added a commit to bosch-io/ditto that referenced this issue Dec 7, 2020
…a by optimistic waiting.

Signed-off-by: Yufei Cai <yufei.cai@bosch.io>
yufei-cai added a commit to bosch-io/ditto that referenced this issue Dec 7, 2020
…and mocks.

DData topic count metrics replaced by size estimation due to
introduction of literal group names into the ddata of topics
and of declared acknowledgement labels.

Signed-off-by: Yufei Cai <yufei.cai@bosch.io>
yufei-cai added a commit to bosch-io/ditto that referenced this issue Dec 7, 2020
Class was used only by an unnecessary interface method.

Signed-off-by: Yufei Cai <yufei.cai@bosch.io>
yufei-cai added a commit to bosch-io/ditto that referenced this issue Dec 7, 2020
Akka does not attempt to compute the diff of successive ddata updates,
which is reasonable because Akka does not know that all updates of an
ORSet comes from the same node. Therefore Ditto should compute the diff
so that no unnecessary replication occurs.

Consequently, replicators no longer emits Replicator.Changed events
every update cycle because unchanged subscriptions cause no update.

Signed-off-by: Yufei Cai <yufei.cai@bosch.io>
yufei-cai added a commit to bosch-io/ditto that referenced this issue Dec 7, 2020
…mistic.

Signed-off-by: Yufei Cai <yufei.cai@bosch.io>
yufei-cai added a commit to bosch-io/ditto that referenced this issue Dec 7, 2020
…imistic; fix a double assignment in AckSupervisor.

Signed-off-by: Yufei Cai <yufei.cai@bosch.io>
yufei-cai added a commit to bosch-io/ditto that referenced this issue Dec 7, 2020
…ed SubAck for topic subscriptions

Signed-off-by: Yufei Cai <yufei.cai@bosch.io>
yufei-cai added a commit to bosch-io/ditto that referenced this issue Dec 7, 2020
…module.

The following modules no longer depends on ditto-services-models-concierge:

- ditto-services-gateway-streaming
- ditto-services-connectivity-messaging

Gateway and connectivity starter modules still depend on concierge service
models because they need ConciergeForwarder.

Signed-off-by: Yufei Cai <yufei.cai@bosch.io>
yufei-cai added a commit to bosch-io/ditto that referenced this issue Dec 7, 2020
… more pessimistic.

This reverts commit 20c6471.

Signed-off-by: Yufei Cai <yufei.cai@bosch.io>
yufei-cai added a commit to bosch-io/ditto that referenced this issue Dec 7, 2020
…and AckSupervisor.

Signed-off-by: Yufei Cai <yufei.cai@bosch.io>
yufei-cai pushed a commit to bosch-io/ditto that referenced this issue Dec 7, 2020
Signed-off-by: Thomas Jaeckle <thomas.jaeckle@bosch.io>
yufei-cai pushed a commit to bosch-io/ditto that referenced this issue Dec 7, 2020
…hod to withInserts; fixed toString()

Signed-off-by: Thomas Jaeckle <thomas.jaeckle@bosch.io>
yufei-cai added a commit to bosch-io/ditto that referenced this issue Dec 7, 2020
Signed-off-by: Yufei Cai <yufei.cai@bosch.io>

Conflicts:
	services/connectivity/messaging/src/test/java/org/eclipse/ditto/services/connectivity/messaging/persistence/ConnectionPersistenceActorTest.java
yufei-cai pushed a commit to bosch-io/ditto that referenced this issue Dec 7, 2020
…tractSubscriptions

* adjusted Subscribe, AbstractRequest Signatures to accept a Collection instead of a Set in order to make the "topics" guaranteed immutable w/o creating too much Set copies

Signed-off-by: Thomas Jaeckle <thomas.jaeckle@bosch.io>
yufei-cai added a commit to bosch-io/ditto that referenced this issue Dec 7, 2020
…BasePublisherActor.

Signed-off-by: Yufei Cai <yufei.cai@bosch.io>
yufei-cai added a commit to bosch-io/ditto that referenced this issue Dec 7, 2020
…used metric.

Signed-off-by: Yufei Cai <yufei.cai@bosch.io>
yufei-cai added a commit to bosch-io/ditto that referenced this issue Dec 7, 2020
…ubscribers-interval for responsiveness.

Signed-off-by: Yufei Cai <yufei.cai@bosch.io>
yufei-cai pushed a commit to bosch-io/ditto that referenced this issue Dec 7, 2020
Signed-off-by: Thomas Jaeckle <thomas.jaeckle@bosch.io>
yufei-cai pushed a commit to bosch-io/ditto that referenced this issue Dec 7, 2020
…Id and random UUID for "clientId" with "_" in order to be able to easily split 2 UUIDs

Signed-off-by: Thomas Jaeckle <thomas.jaeckle@bosch.io>
yufei-cai added a commit to bosch-io/ditto that referenced this issue Dec 7, 2020
… ConnectionPersistenceActorTest.enabledConnectionLogsAreEnabledAgainAfterModify.

Signed-off-by: Yufei Cai <yufei.cai@bosch.io>
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

Successfully merging a pull request may close this issue.

2 participants