These are chat archives for akkadotnet/akka.net

29th
Dec 2017
Weston
@ronnyek
Dec 29 2017 17:39
whats new in akkanet land
Bartosz Sypytkowski
@Horusiath
Dec 29 2017 17:39
@ronnyek more and more work, and never enough people willing to help ;)
Weston
@ronnyek
Dec 29 2017 17:40
haha
I think I'd probably contribute, but I don't think I could get my brain to tolerate java/scala codebase enough to understand whats going on as far as porting features go anyway
I still feel like to some degree what I want is orleans mixed with akka.net
I like stateful actors stuff in orleans and sevice fabric... and realize you can kinda simulate that with akka.net, but via replay, right?
I mean theres clear potential benefits and negatives to that imo
Bartosz Sypytkowski
@Horusiath
Dec 29 2017 17:45
some new stuff since last 6 months + things to come really soon (already on dev):
  • tons of bugfixes
  • new Akka.IO (+ incoming bugfixes), which now is a lot faster and less memory consuming
  • split brain resolvers, which are more clever way to detect your dead nodes than auto-down
  • weakly-up status for cluster, which allows your node to notify, that it "partially" joined the cluster
  • CRDTs (Akka.DistributedData) have been switched to utilize deltas, which makes coordination process more ligthweight
  • one of my new plugins: Akka.Persistence.Reminders (so durable message scheduler) and Akka.Cluster.Discovery.Consul (so akka cluster state integration via Hashicorp Consul)
@ronnyek Akka.Persistence uses eventsourcing mechanism (also I've optimized it "a little" - it's not default yet, but sql plugins have alternative backward compatible implementations, which are around 20-30 times faster)
Weston
@ronnyek
Dec 29 2017 17:47
is cluster now a first class citizen automatically present, or does it still require something like a lighthouse node
Bartosz Sypytkowski
@Horusiath
Dec 29 2017 17:48
I know that Orleans has snapshot based stateful actors, but from what I've heard there's a problem with using them with old-style slow-write DBs (like SQL ones)
Weston
@ronnyek
Dec 29 2017 17:48
doesnt orleans target sql server by default?
Bartosz Sypytkowski
@Horusiath
Dec 29 2017 17:48
Orleans targets, what you'll tell it to target - I guess most people are using it on Azure
Weston
@ronnyek
Dec 29 2017 17:49
man, I guess I've not deployed anything at scale with any of those cloud providers... but from what I've seen... I'm surprised as many people are eager to go slamming apps ino those cloud systems
I found in testing and stuff, almost impossible to get even a remotely accurate price estimation from month to month
Vasily Kirichenko
@vasily-kirichenko
Dec 29 2017 17:50
why akka needs Consul? Is it possible to run a cluster without any third party coordinators?
Weston
@ronnyek
Dec 29 2017 17:50
and this was predictable very low traffic stuff
Bartosz Sypytkowski
@Horusiath
Dec 29 2017 17:50
regarding lighthouses - they will always be necessary. You always need an initial contact point (Orleans too, it just uses 3rd party service for that). Akka.Cluster.Discovery plugin I've made, uses consul for exchanging cluster seed nodes, so you can use it instead of lighthouse
Weston
@ronnyek
Dec 29 2017 17:50
oh nice
I'll have to fiddle with that... last time I checked, I still had problems with node re-discovery... seemed like purposely disconnecting nodes and reconnecting them, they'd never actually become aware of one another... I seem to recall somethign about them getting blacklisted
with lighthouse that is
Bartosz Sypytkowski
@Horusiath
Dec 29 2017 17:53
@ronnyek it depends on the frequency between turning multiple nodes up and down (cluster reaction is relativelly slow compared to usual stuff done by computer programs, and AFAIK akka.net native clustering support is actually pretty fast among .NET implementations on that field)
Weston
@ronnyek
Dec 29 2017 17:54
well I may have a misunderstanding here
I assumed clustering was clustering of nodes... and that while lighthouse served as a sort of registry of endpoints or something
like it was the thing blacklisting nodes
Bartosz Sypytkowski
@Horusiath
Dec 29 2017 17:57
@vasily-kirichenko you don't need consul, but you can optionally use it as exchange point for initiali nodes used to establish the cluster (so actor systems are connecting to consul instead of lighthouse node). Additionally, akka.net nodes will register themselves as services, so you can watch them in consul UI. Btw. something that may be interesting for you, today I've managed to fully replace FsPickler with Hyperion inside Akkling (using hyperion master branch). This also means, that soon I should be able to port Akkling to full .NET Standard (right now it's only .NET Framework full).
@ronnyek lighthouse in term we use it usually in akka.net, is an empty actor system with static cluster address:port configuration. Akka.NET nodes are peer-to-peer, and cluster doesn't need any external services or databases to operate.
peer-to-peer means that you can connect any node to any node which is already part of the cluster (it only needs its address) and it will join the cluster automatically
lighthouse is just an initial node (since there always must be a first one), which simply points itself as its seed-nodes. This way it becomes its own contact point.
Weston
@ronnyek
Dec 29 2017 18:02
I cant remember how I was trying to test... I want to say I connected two nodes to the lighthouse, then restarted the two nodes one at a time
and when the nodes came back online they tried to reconnect
Vasily Kirichenko
@vasily-kirichenko
Dec 29 2017 18:04
@Horusiath no FsPickler is cool! I had to make a custom Akkling package with FsPickler 4.5 and publish it on an internal server :(
I use Akkling on a .net core app without problems BTW
What is the advantage of registering akka nodes as services in Consul? I thought akka has internal discovery mechanism. Making nodes to be discoverable outside the cluster makes no sense to me...
Bartosz Sypytkowski
@Horusiath
Dec 29 2017 18:21
  1. You can make use of existing infrastructure - some companies have already consul in place.
  2. You can observe health checks from consul perspective.
  3. You can query consul for cluster state i.e. from services which don't use akka.net directly.
  4. Consul can work as a arbitrary point in case when you need to decide which node is alive and which is dead, althou this is not a fast detection mechanism.
Weston
@ronnyek
Dec 29 2017 18:36
btw
distributed data is kinda cool
it'd be really cool if it was more general purpose like you could almost use it as a replacement for a data store... but I seem to recall @Horusiath its explicitly not that
Vasily Kirichenko
@vasily-kirichenko
Dec 29 2017 19:57
Aaron Stannard
@Aaronontheweb
Dec 29 2017 23:02
@vasily-kirichenko nice!
why akka needs Consul? Is it possible to run a cluster without any third party coordinators?
it doesn't really
it's a nice-to-have from the points that @Horusiath mentioned