Тёмный

Designing Actor-Based Software (with Hugh McKee) 

Developer Voices
Подписаться 19 тыс.
Просмотров 8 тыс.
50% 1

The actor model is a popular approach to building scalable software systems. And isn’t hard to understand when you’re just reading about the beginner’s examples. But how do you architect a complex design using the actor model? Which patterns work well? How do you think through it?
Joining me to take us through it is Hugh McKee. Hugh’s a total actor-model fan, and a Developer Advocate for Lightbend (the company that created the popular actor framework Akka). He takes us from his definition of actors to the designs he’s worked on, the patterns he’s found most useful, and the interesting meeting-point between actor-based designs and event-based ones.
-
Wikipedia - Actor Model: en.wikipedia.org/wiki/Actor_m...
Hugh’s book, Designing Reactive Systems: go.lightbend.com/designing-re...
Hugh on Twitter: / mckeeh3
Hugh on LinkedIn: / mckeehugh
Kris on Mastodon: mastodon.social/@krisajenkins
Kris on LinkedIn: / krisjenkins
Kris on Twitter: / krisajenkins

Опубликовано:

 

14 май 2024

Поделиться:

Ссылка:

Скачать:

Готовим ссылку...

Добавить в:

Мой плейлист
Посмотреть позже
Комментарии : 39   
@user-fc7yb4wk6y
@user-fc7yb4wk6y Месяц назад
Oh my. Spent 15 years as Tandem/NonSop Systems Programmer (TAL). What is old is “almost” new again. Super episode.
@AdrianBoyko
@AdrianBoyko Месяц назад
You need to get one of the Pony language guys to talk about Pony’s approach. It’s probably the purest example of the Actor paradigm and is also notable for its use of reference capabilities which allow safe sharing of mutable data between actors.
@UliTroyo
@UliTroyo Месяц назад
I’d love to see that!
@mikumikudice
@mikumikudice Месяц назад
totally agree
@techsuvara
@techsuvara 20 дней назад
I use event streaming and actors in one project. In many ways, I find the event streaming method to be conceptually easier to understand. It just fits nicely with the idea of a single pipe on information being handled sequentially. Yet, in some cases, the procedural flow of an actor is actually a better and clearer approach. Both have a place. The best outcome is having a system is modular and easy enough to change with out breaking. :)
@JH-pe3ro
@JH-pe3ro Месяц назад
I've become convinced that actors solve a localized problem of organizational boundaries and responsibilities, but they don't solve the scaling, which is still primarily subject to Conway's Law - the purpose of moving around all that data is mostly because of human factors. When you scale you end up in a position of configuring actor behavior; the configuration becomes the program, and if the program does not employ a central coordination method like a pipeline, graph or constraint solver(e.g. flow-based programming) you end up with problems managing buffers and queues and synchronizations. When Hugh describes a tree structure emerging, it's natural and unsurprising because memory hierarchies would dictate that kind of algorithm. When he describes event streams being logged centrally, it reflects the need for coordination. As well, because you're using a configuration mechanism and not the tooling of a general-purpose programming language, you end up with the bug classes associated with extension programming. Log-structuring is the new deal that is interesting, and we can do it now since we can throw a lot of compute at stuff. The overall shape of what he suggests - AI agents with learned behavior communicating over event logs - starts to sound conspicuously like blockchain, minus the financialized emphasis. When you take away the self-interested human trader and install an AI with different reward functions it's more reasonable to find the broad applications.
@mohamedfouad1309
@mohamedfouad1309 28 дней назад
Spot on Sir
@ariseyhun2085
@ariseyhun2085 25 дней назад
Absolutely loved this video! It resonates deeply with my recent work. I just developed a basic event log database that appends data in 256 MB segments and allows services to subscribe to new events. It's everything I need and incredibly fast. I'm using it alongside an actor library I built to design my startup, which is being developed with event sourcing.
@neunmalelf
@neunmalelf Месяц назад
Every podcast a highlight. 👍
@AdrianBoyko
@AdrianBoyko Месяц назад
Most of the complexities in this discussion result from distributing actors across multiple machines on a network, which I guess is Akka’s thing (as well as Erlang’s). But if you’re trying to develop a program that will run efficiently on a single multicore machine, then something like Pony is much less convoluted and a better starting point to learn actor oriented programming.
@alihammadshah
@alihammadshah Месяц назад
This interviewer is great. Such good questions.
@DeveloperVoices
@DeveloperVoices Месяц назад
Thanks!
@britneysham1232k10
@britneysham1232k10 Месяц назад
Would love to see an interview someone from Holochain. They are building an agent-centric blockchain alternative and their approach to infrastructure is similar to the nature-inspired actor-event foundations that Hugh speaks on. Ugh, software development is getting so much more interesting!
@osman3404
@osman3404 Месяц назад
I ALWAYS thought Actor Model is way better that microservices so I am so glad and expert just said the same :)
@Moousaka
@Moousaka 3 дня назад
Are there any articles or example code written about these "reduction trees"? Nothing shows up on my searches. Cheers!
@DeveloperVoices
@DeveloperVoices 2 дня назад
I'd give Hugh's book a try. It's a free download away: go.lightbend.com/designing-reactive-systems-role-of-actor-model
@LewisCampbellTech
@LewisCampbellTech Месяц назад
20:23 I swear the more I get into computing, the more everything seems to come back to 1) the Actor Model and 2) Event Sourcing.
@afailable
@afailable Месяц назад
Do you have to search the whole tree for a leaf that has given stock to the request id before you can continue with processing the request? How do you guarantee idempotency without visiting all the leaves? The trunk knows what the overall count is, but how do you verify the request isn't duplicate?
@Benjy-zj8pn
@Benjy-zj8pn Месяц назад
the same way as If you have 10 store rooms that allow 1 person in each room at a time. I don't need to know what someone in another store room is doing. I just need to take the correct amount from the store room that I enter.
@TJ-hs1qm
@TJ-hs1qm Месяц назад
but guests must potentially check the entire hotel (worst case) to find a free room/bed.
@Benjy-zj8pn
@Benjy-zj8pn Месяц назад
@@TJ-hs1qm FWIW i think this usage of actors as described in the video is incorrect anyway but just to play into your scenario...The receptionist tells you which room to go to and the task of keeping track and directing you to an empty room requires orders of magnitude less time than the amount of time you spend in the room, hence one receptionist is able to handle many rooms
@meyou118
@meyou118 Месяц назад
this is fuken good!!! (no developer on ecstacy here :) )
@gassechen
@gassechen Месяц назад
Que contenido más interesante. Veo lisp por todos lados
@mandolinean3057
@mandolinean3057 Месяц назад
👏
@MrHopp24
@MrHopp24 Месяц назад
I don’t get how the reduction tree solves the idempotency problem, feel like I need to watch this a few times for it all to click. Great episode regardless 🎉
@darkr0astedblend
@darkr0astedblend Месяц назад
Indeed. I'm not sure whether idempotency was solved by redirecting the order request to the leaf in a consistent way (say, kinda like hash load balancing) or if a low level of duplicates (one per leaf) was allowed. I can see both ways working. It would be great if a link to more info or example could be posted.
@johanmaasing
@johanmaasing Месяц назад
It doesn’t, and in another way it does. It’s sharding the history of messages any given actor needs to track to determine if it is a re-sent message. If you can do that Akka gives you a lot of help in only keeping in-memory ‘active’ actors.
@TJ-hs1qm
@TJ-hs1qm Месяц назад
the total number of uuid / transactions stays the same. you end up with a list of historic actors keeping track of historic transactions. Also actor's can't run indefinitely and must be retired at some point -> event store.
@MrHopp24
@MrHopp24 Месяц назад
@@TJ-hs1qm thanks
@haroldostenger5160
@haroldostenger5160 Месяц назад
hi , may I suggest interviewing Juan Manuel Vuletich ?
@DeveloperVoices
@DeveloperVoices Месяц назад
Ooh, Smalltalk huh? Cool. Yes, I'll reach out to him. :-)
@jakobbebop
@jakobbebop Месяц назад
are the subtitles AI-generated? At 45:06 or so, they say "the item potency", which should be "idempotency"...
@DeveloperVoices
@DeveloperVoices Месяц назад
Oops, thanks for spotting. Fixed! Yeah, they're auto-transcribed, and then I proof read them as best I can in the time I have. 😊
@user-pz4ui9dd8p
@user-pz4ui9dd8p Месяц назад
1:09:15: Does McKee say that Erlang "reintroduced the Actor model" fifteen years ago? Why does he believe that?
@DeveloperVoices
@DeveloperVoices Месяц назад
I think he just misspoke. I'm sure Hugh knows Erlang's older than that.
@ariseyhun2085
@ariseyhun2085 25 дней назад
Immediately after that he said "it's almost 50 years old". He clearly meant 50 instead of 15
@user-pz4ui9dd8p
@user-pz4ui9dd8p 25 дней назад
@@ariseyhun2085 No, he did not. He said the concept of actors is 50 years old. The concept of actors is older than Erlang (the later is an implementation of the former).
@user-wj7cv9hb5j
@user-wj7cv9hb5j Месяц назад
There are only two things.. proceeds to list 3 😂
@user-wj7cv9hb5j
@user-wj7cv9hb5j Месяц назад
Reduction tree... in the example maakes no sense to me. Need to read up on that for sure.
Далее
Creating and Evolving Elixir (with José Valim)
1:42:22
Просмотров 1,5 тыс.
Беда приходит внезапно 😂
00:25
Просмотров 612 тыс.
Каха и суп
00:39
Просмотров 2,8 млн
David Khourshid - Everything is an Actor
44:50
Просмотров 10 тыс.
Will we be writing Hare in 2099? (with Drew DeVault)
54:39
Беда приходит внезапно 😂
00:25
Просмотров 612 тыс.