Akka.Cluster.Sharding 1.4.21

Sharded actors with managed lifecycle for Akka.NET cluster

Install-Package Akka.Cluster.Sharding -Version 1.4.21
dotnet add package Akka.Cluster.Sharding --version 1.4.21
<PackageReference Include="Akka.Cluster.Sharding" Version="1.4.21" />
For projects that support PackageReference, copy this XML node into the project file to reference the package.
paket add Akka.Cluster.Sharding --version 1.4.21
The NuGet Team does not provide support for this client. Please contact its maintainers for support.
#r "nuget: Akka.Cluster.Sharding, 1.4.21"
#r directive can be used in F# Interactive, C# scripting and .NET Interactive. Copy this into the interactive tool or source code of the script to reference the package.
// Install Akka.Cluster.Sharding as a Cake Addin
#addin nuget:?package=Akka.Cluster.Sharding&version=1.4.21

// Install Akka.Cluster.Sharding as a Cake Tool
#tool nuget:?package=Akka.Cluster.Sharding&version=1.4.21
The NuGet Team does not provide support for this client. Please contact its maintainers for support.

Release Notes

Maintenance Release for Akka.NET 1.4**
Akka.NET v1.4.21 is a significant release that includes major performance improvements, bug fixes, and a major update to the [Akka.DependencyInjection NuGet package](https://getakka.net/articles/actors/dependency-injection.html).
Performance Improvements**
Akka.NET v1.4.21 includes some major performance fixes and improvements:
[`Ask` is now ~10% faster](https://github.com/akkadotnet/akka.net/pull/5051)
[`MurmurHash` is 33% faster and allocates 0 memory](https://github.com/akkadotnet/akka.net/pull/5028) - used _heavily_ in DData, Cluster Sharding, and Consistent Hash Routers
`ActorPath.Parse` went from 1672 ns/op to 527 ns/op - a 68% improvement in throughput and a 50% reduction in memory. See [#5039](https://github.com/akkadotnet/akka.net/pull/5039) and [#5068](https://github.com/akkadotnet/akka.net/pull/5068).
[Akka.Remote: remove `ActorPath.ToString` call from `ResolveActorRefWithLocalAddress`](https://github.com/akkadotnet/akka.net/pull/5034)
Important**: [Revert `ThreadPool.SetMinThreads(0,0)`](https://github.com/akkadotnet/akka.net/pull/5059) - based on the input from users on "[Akka.NET v1.4.19: ChannelExecutor performance data](https://github.com/akkadotnet/akka.net/discussions/4983)"
Our observed performance numbers for Akka.Remote show a significant increase in performance for v1.4.21 over v1.4.20:
Before*
```
PS> dotnet run -c Release --framework netcoreapp3.1
OSVersion:                         Microsoft Windows NT 6.2.9200.0
ProcessorCount:                    16
ClockSpeed:                        0 MHZ
Actor Count:                       32
Messages sent/received per client: 200000  (2e5)
Is Server GC:                      True
Thread count:                      109
Num clients, Total [msg], Msgs/sec, Total [ms]
1,  200000,    113379,    1764.56
5, 1000000,    186429,    5364.05
10, 2000000,    185340,   10791.11
15, 3000000,    183218,   16374.06
20, 4000000,    179824,   22244.63
25, 5000000,    182716,   27365.89
30, 6000000,    182039,   32960.61
```
After*
```
PS> dotnet run -c Release --framework netcoreapp3.1
OSVersion:                         Microsoft Windows NT 6.2.9200.0
ProcessorCount:                    16
ClockSpeed:                        0 MHZ
Actor Count:                       32
Messages sent/received per client: 200000  (2e5)
Is Server GC:                      True
Thread count:                      111
Num clients, Total [msg], Msgs/sec, Total [ms]
1,  200000,    109770,    1822.14
5, 1000000,    192902,    5184.79
10, 2000000,    191663,   10435.53
15, 3000000,    191339,   15679.11
20, 4000000,    192725,   20755.78
25, 5000000,    189754,   26350.14
30, 6000000,    189772,   31617.20
```
> N.B. these after numbers don't benefit from the performance benefits we observed in v1.4.20 when we invoked `ThreadPool.SetMinThreads(0,0)`, which makes them even more impressive.
Akka.DependencyInjection Updates**
We had one major issue we implemented in v1.4.21 for Akka.DependencyInjection: [Abstraction of `ServiceProvider`, Improving Akka.DependencyInjection ](https://github.com/akkadotnet/akka.net/pull/4814)
What this change did was:
Deprecate the `Akka.DependencyInjection.ServiceProvider` class in favor of the `Akka.DependencyInjection.DependencyResolver` class - to avoid namespace collision with Microsoft.Extensions.DependencyInjection.ServiceProvider;
Deprecates the `Akka.DependencyInjection.ServiceProviderSetup` class in favor of the `Akka.DependencyInjection.DependencyResolverSetup` class for consistency reasons;
`Akka.DependencyInjection.DependencyResolver` now takes an input of type [`IDependencyResolver`](https://getakka.net/api/Akka.DependencyInjection.IDependencyResolver.html), which allows users to abstract away the `IServiceProvider` and mock / replace it during unit testing; and
Added some non-generic `Props` methods for dynamically spawning actors via DI.
All of these changes are backwards-compatible with v1.4.20 and earlier - and the deprecation warnings will appear in your code when you upgrade. If you run into any [issues upgrading to Akka.DependencyInjection v1.4.21 please reply on this thread](https://github.com/akkadotnet/akka.net/discussions/5070)!
Other Changes and Fixes**
[Akka.Streams: A couple of fixes affecting the `FileSubscriber`](https://github.com/akkadotnet/akka.net/pull/5035)
[Akka.DistributedData: memory leak when recovering events from LMDB data store](https://github.com/akkadotnet/akka.net/issues/5022)
[Akka.DistributedData: port `VectorClock` performance optimizations to `VersionVector` and similar types](https://github.com/akkadotnet/akka.net/issues/4956)
To see the [full set of fixes in Akka.NET v1.4.21, please see the milestone on Github](https://github.com/akkadotnet/akka.net/milestone/51).
| COMMITS | LOC+ | LOC- | AUTHOR |
| --- | --- | --- | --- |
| 5 | 34 | 24 | Aaron Stannard |
| 4 | 196 | 77 | Gregorius Soedharmo |
| 3 | 3 | 3 | dependabot[bot] |
| 1 | 2 | 2 | Wessel Kranenborg |
| 1 | 1 | 1 | Martijn Schoemaker |

NuGet packages (4)

Showing the top 4 NuGet packages that depend on Akka.Cluster.Sharding:

Package Downloads
Petabridge.Cmd.Cluster.Sharding
Akka.Cluster.Sharding Petabridge.Cmd palettes for shard management and monitoring.
wyvern.entity
Package Description
Akkling.Cluster.Sharding
F# wrapper library for Akka.NET cluster sharding module.
Akkatecture.Clustering
clustering library for akkatecture to enable distributed scenarios

GitHub repositories (2)

Showing the top 2 popular GitHub repositories that depend on Akka.Cluster.Sharding:

Repository Stars
Lutando/Akkatecture
a cqrs and event sourcing framework for dotnet core using akka.net
Horusiath/AkkaCQRS
Event sourcing example build on Akka.NET with persistence plugin

Version History

Version Downloads Last updated
1.4.21 357 6/16/2021
1.4.21-beta1 246 6/4/2021
1.4.20 2,553 5/12/2021
1.4.19 2,647 4/28/2021
1.4.18 5,292 3/23/2021
1.4.17 3,127 3/10/2021
1.4.16 19,302 1/22/2021
1.4.15 552 1/20/2021
1.4.14 3,610 12/30/2020
1.4.13 1,254 12/16/2020
1.4.12 16,034 11/16/2020
1.4.11 7,092 11/5/2020
1.4.10 11,482 8/20/2020
1.4.9 8,241 7/21/2020
1.4.8 16,982 6/17/2020
1.4.7 2,474 5/27/2020
1.4.6 4,847 5/12/2020
1.4.5 2,285 4/29/2020
1.4.4 5,267 3/31/2020
1.4.3 2,278 3/18/2020
1.4.2 1,949 3/13/2020
1.4.1 5,455 3/11/2020
1.4.1-rc3 301 3/10/2020
1.4.1-rc2 214 3/10/2020
1.4.1-rc1 537 2/28/2020
1.4.0-beta4 1,775 1/28/2020
1.4.0-beta3 5,987 10/30/2019
1.4.0-beta2 3,093 9/23/2019
1.4.0-beta1 1,840 7/19/2019
1.4.0-beta 293 10/30/2019
1.3.18-beta 4,960 3/9/2020
1.3.17-beta 5,866 12/20/2019
1.3.16-beta 2,197 11/14/2019
1.3.15-beta 3,800 9/23/2019
1.3.14-beta 4,901 7/30/2019
1.3.13-beta 7,512 4/30/2019
1.3.12-beta 10,923 3/14/2019
1.3.11-beta 9,380 12/18/2018
1.3.10-beta 5,025 11/2/2018
1.3.9-beta68 33,186 8/23/2018
1.3.9-beta67 456 8/23/2018
1.3.9-beta 457 8/30/2018
1.3.8-beta66 7,308 6/5/2018
1.3.8-beta65 522 6/5/2018
1.3.7-beta64 990 5/15/2018
1.3.7-beta63 521 5/15/2018
1.3.6-beta62 2,508 4/17/2018
1.3.6-beta61 506 4/17/2018
1.3.5-beta60 6,429 2/22/2018
1.3.5-beta59 521 2/22/2018
1.3.4-beta58 716 2/1/2018
1.3.4-beta57 573 2/1/2018
1.3.3-beta56 716 1/19/2018
1.3.3-beta55 566 1/19/2018
1.3.2-beta54 18,861 10/21/2017
1.3.2-beta53 530 10/21/2017
1.3.2-beta 707 10/24/2017
1.3.1-beta52 942 9/5/2017
1.3.1-beta51 556 9/5/2017
1.3.0-beta50 570 8/18/2017
1.3.0-beta48 546 8/17/2017
1.3.0-beta47 559 8/17/2017
1.3.0-beta46 578 8/11/2017
1.2.3.43-beta 1,567 7/10/2017
1.2.3.41-beta 531 7/10/2017
1.2.2.40-beta 585 6/28/2017
1.2.2.39-beta 550 6/28/2017
1.2.1.38-beta 594 6/23/2017
1.2.1.37-beta 563 6/23/2017
1.2.0.36-beta 10,075 4/13/2017
1.2.0.35-beta 799 4/13/2017
1.2.0.34-beta 561 4/12/2017
1.2.0.33-beta 699 4/12/2017
1.1.3.32-beta 1,703 1/23/2017
1.1.3.31-beta 609 1/23/2017
1.1.2.30-beta 1,629 9/22/2016
1.1.2.29-beta 562 9/22/2016
1.1.1.28-beta 702 7/16/2016
1.1.1.27-beta 632 7/16/2016
1.1.0.26-beta 671 7/7/2016
1.0.8.25-beta 1,792 4/26/2016
1.0.8.24-beta 656 4/26/2016
1.0.7.18-beta 688 4/6/2016