-
-
Notifications
You must be signed in to change notification settings - Fork 526
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
Align Go implementation with .NET #406
Comments
My own time is very much constrained by client work right now. this covers the maintenance of the dotnet version also. Any takers on helping out with backporting the above changes to Go? |
I'd be keen to help out |
Let's do this 🚀 Some thoughts on the things that are needed here. Maintenance tasksIssues and Pull RequestsCheck issue and PR statuses, are there tasks that can be closed? tasks that are blocked or need more information? This is more of a management and social task. Coding tasksAligning code across platformsThis requires a deeper understanding of the project and the different platforms it runs on. This will require a fair amount of discussions among the involved parties to make it sit right and be idiomatic in the Go world, so we don't just port line by line from dotnet. Bugfixing and bug managementThis will require a decent familiarity with the project, but many bugs can likely be tracked down by adding testcases for bug reports and take it from there. DocumentationAll changes will need to be included in the Proto.Actor website, the website now uses shared documentation for the platforms, with the ability to add language specific code examples on the pages. Porting the Proto.Actor Bootcamp to GoThis community contributed bootcamp would be great to get ported to Go also: |
perhaps a reasonable place to start might actually be the bootcamp? not sure... I'll see what I can get working in terms of the bootcamp perhaps? |
Hey, I was just thinking! |
I'd like to help . I'm comfortable with C# and newbie at Go. |
Created this Slack channel so we can all sync up on everything |
This is likely helpful to newcomers in the actor model world: |
Ongoing effort here #478 |
Hey @rogeralsing I would like to help Thanks |
Moste of these tasks have been completed. closing in favor for smaller ones |
There are some major changes that have been added to the dotnet version of Proto.Actor that needs to be ported over to Go also:
ActorSystem
ActorSystem
, instead of the current global allocation of actors, we introduced the Akka-like ActorSystem to Proto.Actor dotnet.This helps with configuration and testing. e.g. it makes it possible to run multiple remote and cluster instances in a single test.
This is a fairly major rewrite that needs to be completed before any other updates can be ported over.
ActorSystem Configuration
Minor update where it is possible to configure DeadLetter logging to throttle after x messages in y time.
IIdentityLookup
IIdentityLookup
, allows for pluggable cluster actor identity lookups.e.g. dotnet now has a MongoIdentityLookup, which becomes the source of truth for actor placements.
Cluster vs Remote configuration
Wit the introduction of IIdentityLookup, the "Known kinds" of
remote
has been split into two, RemoteKinds and ClusterKinds.The functionality is still the same, but the backing implementations can differ.
e.g. cluster actors are initialized with cluster information.
ClusterInit
Related to the above, each cluster actor is initialized with a
ClusterInit
message upon start, this message contains the Identity, Kind and Cluster instance information.Cluster Actor Placement strategies
We are also working on adding more strategies for Cluster actor placement. e.g. a "Local affinity strategy", where the actors are spawned at the first node that request them (if possible).
This works extremely well with scenarios such as ingesting data from partitioned Kafka topics. where the actors related to messages on a given topic then becomes local.
The text was updated successfully, but these errors were encountered: