Skip to content

Commit 22b7725

Browse files
V1.5/release notes (#6483)
* upgraded Sharding documentation * added Akka.NET v1.5 documentation and "whats new" page * fixed markdown linter errors * added v1.5.0 release notes
1 parent 817bdf9 commit 22b7725

File tree

7 files changed

+119
-152
lines changed

7 files changed

+119
-152
lines changed

RELEASE_NOTES.md

+30-3
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,34 @@
1-
#### 1.5.0-beta6 March 1st 2023 ####
2-
Version 1.5.0-beta6 contains **breaking API changes** and new API changes for Akka.NET.
1+
#### 1.5.0 March 2nd 2023 ####
2+
Version 1.5.0 is a major new release of Akka.NET that is now marked as stable and ready for production use.
33

4-
* [Akka.TestKit.Xunit2: Remove IAsyncLifetime from TestKit](https://github.com/akkadotnet/akka.net/pull/6475)
4+
You can read the [full notes about what's changed in Akka.NET v1.5 here](https://getakka.net/community/whats-new/akkadotnet-v1.5.html). We also encourage you to watch our video: "[Akka NET v1.5 New Features and Upgrade Guide](https://www.youtube.com/watch?v=-UPestlIw4k)"
5+
6+
If you want to see the [full set of changes made in Akka.NET v1.5.0 so far, click here](https://github.com/akkadotnet/akka.net/milestone/7).
7+
8+
| COMMITS | LOC+ | LOC- | AUTHOR |
9+
| --- | --- | --- | --- |
10+
| 95 | 25041 | 24976 | Gregorius Soedharmo |
11+
| 85 | 89784 | 18362 | Aaron Stannard |
12+
| 76 | 95 | 95 | dependabot[bot] |
13+
| 18 | 3201 | 908 | Ismael Hamed |
14+
| 5 | 230 | 251 | Sergey Popov |
15+
| 2 | 77 | 7 | Vagif Abilov |
16+
| 2 | 38 | 8 | Brah McDude |
17+
| 1 | 92 | 92 | nabond251 |
18+
| 1 | 843 | 0 | Drew |
19+
| 1 | 7 | 6 | Tjaart Blignaut |
20+
| 1 | 5 | 4 | Sean Killeen |
21+
| 1 | 32 | 1 | JonnyII |
22+
| 1 | 26 | 4 | Thomas Stegemann |
23+
| 1 | 203 | 5 | Ebere Abanonu |
24+
| 1 | 2 | 2 | Popov Sergey |
25+
| 1 | 2 | 2 | Denis |
26+
| 1 | 16 | 0 | Damian |
27+
| 1 | 11 | 2 | Nicolai Davies |
28+
| 1 | 101 | 3 | aminchenkov |
29+
| 1 | 1 | 1 | zbynek001 |
30+
| 1 | 1 | 1 | Michel van Os |
31+
| 1 | 1 | 1 | Adrian D. Alvarez |
532

633
#### 1.5.0-beta5 February 28th 2023 ####
734
Version 1.5.0-beta5 contains **breaking API changes** and new API changes for Akka.NET.

docs/articles/clustering/cluster-sharding.md

+26-8
Original file line numberDiff line numberDiff line change
@@ -11,7 +11,7 @@ Cluster sharding is useful in cases when you want to contact with cluster actors
1111
1212
Cluster sharding can operate in 2 modes, configured via `akka.cluster.sharding.state-store-mode` HOCON configuration:
1313

14-
1. `persistence` (**default**) depends on Akka.Persistence module. In order to use it, you'll need to specify an event journal accessible by all of the participating nodes. An information about the particular shard placement is stored in a persistent cluster singleton actor known as *coordinator*. In order to guarantee consistent state between different incarnations, coordinator stores its own state using Akka.Persistence event journals.
14+
1. `persistence` (**default**) depends on Akka.Persistence module. In order to use it, you'll need to specify an event journal accessible by all of the participating nodes. An information about the particular shard placement is stored in a persistent cluster singleton actor known as *coordinator*. In order to guarantee consistent state between different incarnations, coordinator stores its own state using Akka.Persistence event journals. **This setting is being deprecated after 1.5 - please move to using `state-store-mode=ddata` for all new and existing applications**.
1515
2. `ddata` depends on Akka.DistributedData module. It uses Conflict-free Replicated Data Types (CRDT) to ensure eventually consistent shard placement and global availability via node-to-node replication and automatic conflict resolution. In this mode event journals don't have to be configured.
1616

1717
Cluster sharding may be active only on nodes in `Up` status - so the ones fully recognized and acknowledged by every other node in a cluster.
@@ -124,17 +124,23 @@ Using `ShardRegion.StartEntity` implies, that you're able to infer a shard id gi
124124

125125
### Remember Entities Store
126126

127-
There are two options for the remember entities store:
127+
As of Akka.NET v1.5, there is now a dedicated setting for storing data about remembered entities:
128128

129-
1. Distributed data
130-
2. Persistence
129+
```hocon
130+
akka.cluster.sharding{
131+
state-store-mode = ddata
132+
remember-entities-store = eventsourced or ddata
133+
}
134+
```
131135

132-
#### Remember Entities Persistence Mode
136+
You don't need to configure this setting if you don't have `remember-entities=on`.
133137

134-
You can enable persistence mode (enabled by default) with:
138+
#### Remember Entities Event Sourced Mode
139+
140+
You can enable event sourced with:
135141

136142
```hocon
137-
akka.cluster.sharding.state-store-mode = persistence
143+
akka.cluster.sharding.remember-entities-store = eventsourced
138144
```
139145

140146
This mode uses [persistence](../persistence/event-sourcing.md) to store the active shards and active entities for each shard.
@@ -208,10 +214,12 @@ akka.cluster.sharding.snapshot-plugin-id = akka.persistence.snapshot-store.shard
208214

209215
#### Remember Entities Distributed Data Mode
210216

217+
It's recommended to use `state-store-mode=eventsourced` as it's much faster and more scalable than `ddata`, but in case you can't use Akka.Persistence for some reason you can still use DData.
218+
211219
You can enable DData mode by setting these configuration:
212220

213221
```hocon
214-
akka.cluster.sharding.state-store-mode = ddata
222+
akka.cluster.sharding.remember-entities-store = ddata
215223
```
216224

217225
To support restarting entities after a full cluster restart (non-rolling) the remember entities store is persisted to disk by distributed data. This can be disabled if not needed:
@@ -402,3 +410,13 @@ In this example, we will use the built-in `HashCodeMessageExtractor`; this extra
402410
shard id by applying murmur hash algorithm on the entity id so we don't need to create our own.
403411

404412
[!code-csharp[MessageExtractor.cs](../../../src/examples/Cluster/ClusterSharding/ShoppingCart/MessageExtractor.cs?name=ExtractorClass "Message envelope and extractor class")]
413+
414+
### Migrating to Different Sharding State Storage Modes
415+
416+
After you've gone live with Akka.Cluster.Sharding, one day you might decide it'd be better to migrate from `state-store-mode=persistence` to `state-store-mode=ddata` as the latter is more performant and resilient, plus the former (persistence) will be deprecated eventually.
417+
418+
Migrating between storage modes requires a **full restart of your Akka.Cluster** as it's a significant, far-reaching change. You can see a demonstration of how to perform this upgrade in our ["Akka NET v1.5 New Features and Upgrade Guide" video beginning at 12:53](https://youtu.be/-UPestlIw4k?t=773).
419+
420+
<!-- markdownlint-disable MD033 -->
421+
<iframe width="560" height="315" src="https://www.youtube.com/embed/-UPestlIw4k" title="YouTube video player" frameborder="0" allow="accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture; web-share" allowfullscreen></iframe>
422+
<!-- markdownlint-enable MD033 -->

docs/articles/deployment/aspnet-core.md

+4
Original file line numberDiff line numberDiff line change
@@ -5,6 +5,10 @@ title: ASP.NET Core
55

66
# ASP.NET Core
77

8+
<!-- markdownlint-disable MD033 -->
9+
<iframe width="560" height="315" src="https://www.youtube.com/embed/_BVC9Is8Tnk" title="YouTube video player" frameborder="0" allow="accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture; web-share" allowfullscreen></iframe>
10+
<!-- markdownlint-enable MD033 -->
11+
812
## The Bridge
913

1014
When deploying Akka.NET in ASP.NET Core, one major concern is how to expose `actor` in an ASP.NET Core controllers. We will design an `interface` for this!

docs/articles/deployment/headless-service.md

+4
Original file line numberDiff line numberDiff line change
@@ -4,6 +4,10 @@ title: Headless Service
44
---
55
# Akka.NET Headless Service
66

7+
<!-- markdownlint-disable MD033 -->
8+
<iframe width="560" height="315" src="https://www.youtube.com/embed/gpaaCBtKLss" title="YouTube video player" frameborder="0" allow="accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture; web-share" allowfullscreen></iframe>
9+
<!-- markdownlint-enable MD033 -->
10+
711
## Headless Actor
812

913
[!code-csharp[Main](../../../src/examples/HeadlessService/AkkaHeadlesssService/HeadlessActor.cs?name=headless-actor)]

docs/community/whats-new/akkadotnet-v1.5-upgrade-advisories.md

+12
Original file line numberDiff line numberDiff line change
@@ -7,8 +7,20 @@ title: Akka.NET v1.5 Upgrade Advisories
77

88
This document contains specific upgrade suggestions, warnings, and notices that you will want to pay attention to when upgrading between versions within the Akka.NET v1.5 roadmap.
99

10+
<!-- markdownlint-disable MD033 -->
11+
<iframe width="560" height="315" src="https://www.youtube.com/embed/-UPestlIw4k" title="YouTube video player" frameborder="0" allow="accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture; web-share" allowfullscreen></iframe>
12+
<!-- markdownlint-enable MD033 -->
13+
1014
## Upgrading From Akka.NET v1.4 to v1.5
1115

16+
In case you need help upgrading:
17+
18+
* [Akka.NET Discord](https://discord.gg/GSCfPwhbWP)
19+
* [Akka.NET GitHub Discussions](https://github.com/akkadotnet/akka.net/discussions)
20+
* [Akka.NET Commercial Support](https://petabridge.com/services/support/)
21+
22+
But first: review this document!
23+
1224
### Akka.Cluster.Sharding State Storage
1325

1426
One of the most significant upgrades we've made in Akka.NET v1.5 is a complete rewrite of Akka.Cluster.Sharding's state storage system.

0 commit comments

Comments
 (0)