* The rebalance in the LeastShardAllocationStrategy is only comparing the region
with most shards with the one with least shards. Makes the rebalance rather
slow. By default it's only rebalancing 1 shard at a time.
* This new strategy looks at all current allocations to find the optimal
number of shards per region and tries to adjust towards that value.
Picking from all regions with more shards than the optimal.
* Absolute and relative limit on how many shards that can be rebalanced
in one round.
* It's also not starting a new rebalance round until the previous has
completed.
* unit tests
* second phase for fine grained rebalance, due to rounding it will not be perfect in the first phase
* randomized unit test
* configuration settings
* docs
* To avoid head of line blocking from serialization and transfer of large messages
this can be enabled.
* ProducerController setting to chunk messages
* split up large messages in chunks in ProducerController
and assemble again in ConsumerController
* serialization moved to these actors instead of in the Artery stream
* other messages (for other actors) can interleave with the chunks
* serializer for ChunkedMessage in SequencedMessage and MessageSent
* cleanup partially stored chunked messages
* reference docs
* mima filters
* additional test for sending the Request after half window size
* enforce that chunk-large-messages=off for sharding and work-pulling
The current code sample for trying out the TCK misses the "akka" prefix
which means that the TCK test will fail with an error regarding not
specifying a journal plugin (because the journal plugin property is
wrong in the sample)
Fixes#29528
* Make ShardingDirectReplication private
And provider user API to provide ReplicaId so that local messages don't
need to be forwarded to sharding to just be dropped
* Update docs to say direct replication is on my default
* Doh
* Embed akka serialization inside jackson serialization
Allows re-use of existing serializers when embedding the types in
Jackson
* Fix false dead code warning
* Move marker trait and add docs
* Remove module and document adding annotations
* Review feedback
* Tagging for replicated event sourcing
* Docs improvements
* Support for currentEventsByTag in persistence testkit and test coverage for tags in replicated
* Move active active internals into the internal package
* Renaming active active to Replicated Event Sourcing
* Rename of Active Active to Replicated Event Sourcing
* Revert changes to testkit
* Java test formatting...
* Gave up on getting apidoc to link to EventSourcedBehavior and made code snippets of it
Co-authored-by: Christopher Batey <christopher.batey@gmail.com>