Skip to content
This repository has been archived by the owner on Aug 20, 2024. It is now read-only.

Commit

Permalink
Sharding example (#94)
Browse files Browse the repository at this point in the history
* upgrading OTEL packages

* cleanup and updates
  • Loading branch information
Aaronontheweb authored Mar 22, 2024
1 parent 864d22c commit f2ba89d
Show file tree
Hide file tree
Showing 11 changed files with 35 additions and 44 deletions.
15 changes: 8 additions & 7 deletions .nuke/build.schema.json
Original file line number Diff line number Diff line change
@@ -1,7 +1,7 @@
{
"$schema": "http://json-schema.org/draft-04/schema#",
"title": "Build Schema",
"$ref": "#/definitions/build",
"title": "Build Schema",
"definitions": {
"build": {
"type": "object",
Expand All @@ -20,22 +20,22 @@
},
"CustomNuGetSource": {
"type": "string",
"default": "Secrets must be entered via 'nuke :secret [profile]'"
"default": "Secrets must be entered via 'nuke :secrets [profile]'"
},
"DockerPassword": {
"type": "string",
"default": "Secrets must be entered via 'nuke :secret [profile]'"
"default": "Secrets must be entered via 'nuke :secrets [profile]'"
},
"DockerRegistryUrl": {
"type": "string"
},
"DockerUsername": {
"type": "string",
"default": "Secrets must be entered via 'nuke :secret [profile]'"
"default": "Secrets must be entered via 'nuke :secrets [profile]'"
},
"GitHubToken": {
"type": "string",
"default": "Secrets must be entered via 'nuke :secret [profile]'"
"default": "Secrets must be entered via 'nuke :secrets [profile]'"
},
"Help": {
"type": "boolean",
Expand All @@ -48,6 +48,7 @@
"AppVeyor",
"AzurePipelines",
"Bamboo",
"Bitbucket",
"Bitrise",
"GitHubActions",
"GitLab",
Expand All @@ -67,7 +68,7 @@
},
"NugetKey": {
"type": "string",
"default": "Secrets must be entered via 'nuke :secret [profile]'"
"default": "Secrets must be entered via 'nuke :secrets [profile]'"
},
"NugetPrerelease": {
"type": "string"
Expand Down Expand Up @@ -179,4 +180,4 @@
}
}
}
}
}
2 changes: 1 addition & 1 deletion RELEASE_NOTES.md
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
## [0.6.4] / 14 December 2022
## [0.6.7] / 14 December 2022
- Bumped version

## [0.6.2] / 14 December 2022
Expand Down
2 changes: 1 addition & 1 deletion k8s/local/environment/prometheus-service.yaml
Original file line number Diff line number Diff line change
Expand Up @@ -31,7 +31,7 @@ spec:
serviceAccountName: prometheus
containers:
- name: prometheus
image: prom/prometheus:latest
image: prom/prometheus:v2.36.0
args:
- "--config.file=/etc/prometheus/prometheus.yml"
- "--storage.tsdb.path=/prometheus/"
Expand Down
4 changes: 2 additions & 2 deletions k8s/local/services/local-services.yaml
Original file line number Diff line number Diff line change
Expand Up @@ -79,7 +79,7 @@ spec:
emptyDir: {}
containers:
- name: frontend
image: akkadotnet.frontend:0.6.4
image: akkadotnet.frontend:0.6.7
env:
- name: POD_NAME
valueFrom:
Expand Down Expand Up @@ -208,7 +208,7 @@ spec:
emptyDir: {}
containers:
- name: backend
image: akkadotnet.backend:0.6.4
image: akkadotnet.backend:0.6.7
env:
- name: POD_NAME
valueFrom:
Expand Down
9 changes: 4 additions & 5 deletions src/Directory.Build.props
Original file line number Diff line number Diff line change
Expand Up @@ -2,7 +2,7 @@
<PropertyGroup>
<Copyright>Copyright © 2024 Petabridge</Copyright>
<Authors>Petabridge</Authors>
<VersionPrefix>0.6.4</VersionPrefix>
<VersionPrefix>0.6.7</VersionPrefix>
<PackageReleaseNotes>• Bumped version</PackageReleaseNotes>
<PackageIconUrl>
</PackageIconUrl>
Expand All @@ -18,9 +18,8 @@
<PropertyGroup>
<NetCoreFramework>net6.0</NetCoreFramework>
<AkkaVersion>1.5.18</AkkaVersion>
<PbmVersion>1.4.0</PbmVersion>
<AkkaHostingVersion>1.5.17.1</AkkaHostingVersion>
<AkkaManagementVersion>1.5.17.1</AkkaManagementVersion>
<OTelInstrumentationVersion>1.5.1-beta.1</OTelInstrumentationVersion>
<PbmVersion>1.4.1</PbmVersion>
<AkkaHostingVersion>1.5.18</AkkaHostingVersion>
<AkkaManagementVersion>1.5.18-beta1</AkkaManagementVersion>
</PropertyGroup>
</Project>
16 changes: 8 additions & 8 deletions src/Directory.Packages.props
Original file line number Diff line number Diff line change
Expand Up @@ -11,13 +11,13 @@
<PackageVersion Include="Akka.Discovery" Version="$(AkkaVersion)" />
<PackageVersion Include="Akka.Discovery.KubernetesApi" Version="$(AkkaManagementVersion)" />
<PackageVersion Include="Akka.HealthCheck.Hosting.Web" Version="1.5.17.1" />
<PackageVersion Include="Akka.Logger.Serilog" Version="1.5.12" />
<PackageVersion Include="Akka.Logger.Serilog" Version="1.5.12.1" />
<PackageVersion Include="Akka.Management" Version="$(AkkaManagementVersion)" />
<PackageVersion Include="Akka.Persistence.Azure" Version="1.5.17.1" />
</ItemGroup>
<!-- Phobos -->
<ItemGroup>
<PackageVersion Include="Phobos.Hosting" Version="2.5.0" />
<PackageVersion Include="Phobos.Hosting" Version="2.5.1" />
</ItemGroup>
<!-- Petabridge.Cmd -->
<ItemGroup>
Expand All @@ -33,12 +33,12 @@
</ItemGroup>
<!-- OpenTelemetry -->
<ItemGroup>
<PackageVersion Include="OpenTelemetry.Exporter.Console" Version="1.6.0" />
<PackageVersion Include="OpenTelemetry.Exporter.OpenTelemetryProtocol" Version="1.6.0" />
<PackageVersion Include="OpenTelemetry.Exporter.Prometheus.AspNetCore" Version="1.6.0-rc.1" />
<PackageVersion Include="OpenTelemetry.Extensions.Hosting" Version="1.6.0" />
<PackageVersion Include="OpenTelemetry.Instrumentation.AspNetCore" Version="$(OTelInstrumentationVersion)" />
<PackageVersion Include="OpenTelemetry.Instrumentation.Http" Version="$(OTelInstrumentationVersion)" />
<PackageVersion Include="OpenTelemetry.Exporter.Console" Version="1.7.0" />
<PackageVersion Include="OpenTelemetry.Exporter.OpenTelemetryProtocol" Version="1.7.0" />
<PackageVersion Include="OpenTelemetry.Exporter.Prometheus.AspNetCore" Version="1.7.0-rc.1" />
<PackageVersion Include="OpenTelemetry.Extensions.Hosting" Version="1.7.0" />
<PackageVersion Include="OpenTelemetry.Instrumentation.AspNetCore" Version="1.7.0" />
<PackageVersion Include="OpenTelemetry.Instrumentation.Http" Version="1.7.0" />
</ItemGroup>
<!-- Ms.Ext.Hosting -->
<ItemGroup>
Expand Down
12 changes: 2 additions & 10 deletions src/backend/AkkaDotNet.BackEnd/Program.cs
Original file line number Diff line number Diff line change
Expand Up @@ -38,17 +38,9 @@
Role = ActorSystemConstants.BackendRole,
StateStoreMode = akkaConfiguration.ShardingOptions.UseDData
? StateStoreMode.DData
: StateStoreMode.Persistence
: StateStoreMode.Persistence,
PassivateIdleEntityAfter = TimeSpan.FromMinutes(2)
})

// duplicate region for producing graphs
// .WithShardRegion<OtherRegionMarker>("other", s => ItemActor.PropsFor(s, akkaConfiguration.DistributedPubSubOptions.Enabled), new ItemShardExtractor(),
// new ShardOptions()
// {
// RememberEntities = akkaConfiguration.ShardingOptions.RememberEntities,
// Role = ActorSystemConstants.BackendRole,
// StateStoreMode = akkaConfiguration.ShardingOptions.UseDData ? StateStoreMode.DData : StateStoreMode.Persistence
// })
.WithItemMessagingActor();

}
Expand Down
2 changes: 1 addition & 1 deletion src/backend/AkkaDotNet.BackEnd/appsettings.json
Original file line number Diff line number Diff line change
Expand Up @@ -7,7 +7,7 @@
"ShardingOptions": {
"Enabled": true,
"UseDData": true,
"RememberEntities": true
"RememberEntities": false
},
"AkkaClusterOptions": {
"Hostname": "localhost",
Expand Down
7 changes: 6 additions & 1 deletion src/frontend/AkkaDotNet.FrontEnd/Program.cs
Original file line number Diff line number Diff line change
@@ -1,11 +1,14 @@
using Akka.Actor;
using Akka.Cluster.Hosting;
using Akka.Hosting;
using AkkaDotNet.FrontEnd.Actors;
using AkkaDotNet.Infrastructure;
using AkkaDotNet.Infrastructure.Actors;
using AkkaDotNet.Infrastructure.Configuration;
using AkkaDotNet.Infrastructure.Logging;
using AkkaDotNet.Infrastructure.OpenTelemetry;
using AkkaDotNet.Infrastructure.Sharding;
using AkkaDotNet.Messages;
using Serilog;

var builder = WebApplication.CreateBuilder(args);
Expand All @@ -20,7 +23,9 @@
configurationBuilder.WithStressCluster(akkaConfiguration,
new[] { ActorSystemConstants.FrontendRole, ActorSystemConstants.DistributedPubSubRole });
configurationBuilder.WithSerilog(akkaConfiguration.SerilogOptions);
configurationBuilder.WithReadyCheckActors();
configurationBuilder.WithReadyCheckActors()
.WithShardRegionProxy<IWithItem>("items", ActorSystemConstants.BackendRole, new ItemShardExtractor())
.WithItemMessagingActor();
if (akkaConfiguration.DistributedPubSubOptions.Enabled)
{
configurationBuilder.StartActors((system, registry) =>
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -49,7 +49,7 @@ public ItemMessagingActor(IActorRef itemShardRegion)

protected override void PreStart()
{
Timers!.StartPeriodicTimer(ScheduleKey, WriteShard.Instance, TimeSpan.FromSeconds(1),TimeSpan.FromSeconds(1));
Timers!.StartPeriodicTimer(ScheduleKey, WriteShard.Instance, TimeSpan.FromSeconds(1),TimeSpan.FromSeconds(0.1));
}

public ITimerScheduler? Timers { get; set; }
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -6,7 +6,7 @@ namespace AkkaDotNet.Infrastructure.Sharding;
public class ItemShardExtractor : HashCodeMessageExtractor
{
// 200 nodes, 10 shards per node
public ItemShardExtractor() : base(30)
public ItemShardExtractor() : base(200)
{
}

Expand All @@ -16,12 +16,6 @@ public ItemShardExtractor() : base(30)
{
return itemId.ItemId;
}

if(message is ShardRegion.StartEntity startEntity)
{
return startEntity.EntityId;
}

return null;
}
}

0 comments on commit f2ba89d

Please sign in to comment.