Where communities thrive


  • Join over 1.5M+ people
  • Join over 100K+ communities
  • Free without limits
  • Create your own community
People
Activity
  • Oct 21 15:57
    Aaronontheweb closed #3877
  • Oct 21 15:57
    Aaronontheweb commented #3877
  • Oct 21 15:56

    Aaronontheweb on dev

    Persistence TestKit documentati… (compare)

  • Oct 21 15:56
    Aaronontheweb closed #3889
  • Oct 21 07:27
    dependabot-preview[bot] labeled #3999
  • Oct 21 07:27

    dependabot-preview[bot] on nuget

    Bump FluentAssertions from 4.14… (compare)

  • Oct 21 07:27
    dependabot-preview[bot] opened #3999
  • Oct 20 17:25
    valdisz synchronize #3889
  • Oct 20 17:17
    valdisz synchronize #3889
  • Oct 20 15:44
    valdisz synchronize #3889
  • Oct 20 09:22
    ismaelhamed commented #3863
  • Oct 19 23:39
    valdisz synchronize #3889
  • Oct 19 23:08
    edvinasz commented #2947
  • Oct 19 13:36
    Aaronontheweb commented #3973
  • Oct 19 13:34
    dependabot-preview[bot] synchronize #3995
  • Oct 19 13:34

    dependabot-preview[bot] on nuget

    Bump BenchmarkDotNet from 0.10.… (compare)

  • Oct 19 13:34
    dependabot-preview[bot] edited #3995
  • Oct 19 13:34
    dependabot-preview[bot] synchronize #3993
  • Oct 19 13:34

    dependabot-preview[bot] on nuget

    Bump Google.Protobuf from 3.9.1… (compare)

  • Oct 19 13:34
    dependabot-preview[bot] synchronize #3991
Aaron Stannard
@Aaronontheweb
yep, I agree with that
serialization overhead isn't something that matters much in the context of durable stores
Aaron Stannard
@Aaronontheweb
alrighty, meeting time
Joshua Benjamin
@annymsMthd
Is the meeting in here?
Natan Vivo
@nvivo
@Aaronontheweb, @rogeralsing about the dispatchers. From what I understood, the main use cases to set a dispatcher are a) specify a thread model for performance reasons, so your actor is bound to one or more specific threads, or b) to limit the damage area in case too much work is being done, so you don't starve the rest of the system. Is that right? Are other common use cases?
Nikita Tsukanov
@kekekeks
To limit the number of concurrent connections to something like Postgres (which really doesn't like when you have >100 connections to it)
David Smith
@smalldave
sorry guys. as you might have gathered I'm not going to make the meeting tonight
@annymsMthd sounds good. we did discuss using appdomains instead of processes before. somebody came up with what I remember being a good reason not to. possibly @rogeralsing. certainly not against the idea though. would make things a lot easier.
Arjen Smits
@Danthar
@skotzko interesting email
Bartosz Sypytkowski
@Horusiath

To limit the number of concurrent connections to something like Postgres

@kekekeks This doesn't sound like a job for a dispatcher, rather the matter of design constrained pool of actors managing the connections

Nikita Tsukanov
@kekekeks
Do you use database from a single actor type?
Natan Vivo
@nvivo
@Horusiath I'm looking for things to write in the dispatcher documentation. like "reasons you might want to do this". if you have more recommendations, I'd be glad to hear
Nikita Tsukanov
@kekekeks
I. e. one can have a ton of different actors that act like a repository
Natan Vivo
@nvivo
@kekekeks you can restrict concurrent connections to a database with routers, I have been doing with actors only
Bartosz Sypytkowski
@Horusiath
@kekekeks you may wrap database access layer in actor
Nikita Tsukanov
@kekekeks
And lose access to ORM?
nope
Natan Vivo
@nvivo
you don't need to lose ORM
Nikita Tsukanov
@kekekeks
You lost me here
You can't use one pool since actors are actually of different types
i. e. UsersRepository, MessageRepository and so on
and even have pools for groups of actors of one type
Natan Vivo
@nvivo
it all depends on how you see the problem
Nikita Tsukanov
@kekekeks
In this case you'll have a lot of actors that do exclusively DB operations but are limited by DB connection pool
Arjen Smits
@Danthar
Besides leveraging the supervision capabilities, and perhaps error handling. Why would you want your data access, which is already abstracted into repositories. abstracted behind an Actor?
Natan Vivo
@nvivo
if you want to restrict all queries to a database, you could create an actor that routes or executes only 5 queries a time for example (an idea)
if you want to abstract per repository, then you can use all your ORM inside that actor
Nikita Tsukanov
@kekekeks
in this case I'll have to do everything in one god-class
Arjen Smits
@Danthar
@nvivo true. but if you are using an ORM, access to that level, for that kind of manipulation is abstracted away
Natan Vivo
@nvivo
the point is that there is not a single way to do it. akka don't require you to stop using an orm
depends on the orm right?
Arjen Smits
@Danthar
true
Joshua Benjamin
@annymsMthd
One of the main things to note here is the Actor Model != OOP. There are fundamental differences in the way things are modeled and architected.
Nikita Tsukanov
@kekekeks
I mean, different types of actors can share a single resource
jcwrequests
@jcwrequests
Get rid of the ORM and use Event Sourcing :)
Natan Vivo
@nvivo
=)
jcwrequests
@jcwrequests
Or use a micro ORM
Nikita Tsukanov
@kekekeks
Well, show me how to do full text search with event sourcing effectively
Bartosz Sypytkowski
@Horusiath
there are plenty ways to do it. I've got idea, when db connections are distributed using token pattern - there is an actor which holds pool of tokens/db connections, and passes them on demand to other actors inside the same actor system, actors which needs a db access, ask provider wth token request and release the token after their job is done
however it's only an idea, I didn't test it yet
Natan Vivo
@nvivo
@kekekeks what @annymsMthd said is completely true. the thing to realize is: Akka has 5 years of battle tested implementation working for lots of people in most varied environments. It's more about understanding how you can do it than anything else. the model itself doesn't restrict much, but you need to change your application architecture to embrace it.
Nikita Tsukanov
@kekekeks
I don't see why it can't be done with a dispatcher that just limits the number of threads
Arjen Smits
@Danthar
@nvivo Thats very true
Natan Vivo
@nvivo
it's not that it can't be done. it's more that it shouldn't =)
dispatchers control how threads are used. you can run 10 queries using a single thread if you're using async
Arjen Smits
@Danthar
@kekekeks The dispatcher is not meant for solving those kind of problems
Natan Vivo
@nvivo
you shouldn't require messing with threads only to control connections
(that's exactly why I'm trying to come up with some reasons why someone should touch dispatchers - we need some good examples on why one would care about that)
Arjen Smits
@Danthar
Honestly @nvivo I think that if the default dispatcher is properly optimized. The list of scenario's of wanting to implement your own is very small.
Natan Vivo
@nvivo
I agree