Hog
Не все же знают тебя в лицо :)
Viacheslav
Об этом я не подумал
Hog
Да и Уольсчина - тоже! :)
Ilya
С групповым фото🤔
Крылатый
Это хорошая идея.
Vasily
Pornhub заблокировал миллионы видеозаписей — весь непроверенный контент Теперь только верифицированные писюхи
Viacheslav
Профиль на порнохабе?
Да, добавил @grishace в друзья там
Критерий
только lawful-монады
Anatoly
Господа, мне вот надо по событиям в кафке реконструировать состояние одной бизнес-сущности. Потом событий - до 2 тысяч в секунду уже сейчас. Мне почему-то кажется, что это идеальная задача для persistent actor, хотя могу ошибаться. Вопрос: orleans или akka могут справиться? Нюансы: - между событиями может быть довольно большой интервал времени, до суток. - всё это чувствительно к задержкам, то есть после получения события, у нас не более 50-100мс на обработку.
Shub
Господа, мне вот надо по событиям в кафке реконструировать состояние одной бизнес-сущности. Потом событий - до 2 тысяч в секунду уже сейчас. Мне почему-то кажется, что это идеальная задача для persistent actor, хотя могу ошибаться. Вопрос: orleans или akka могут справиться? Нюансы: - между событиями может быть довольно большой интервал времени, до суток. - всё это чувствительно к задержкам, то есть после получения события, у нас не более 50-100мс на обработку.
вот ты сказал это и сразу повеяло запахом event sourcing, фолдов, моноидов, пурпурной символики, субсидированной доставки, all-hands по четвергам на третьем этаже, самопальными фреймворками, бажным Марвеллом, самописных стрелок Клейсли, обсуждения чьего-то пулл-реквеста, лебезящего хихиканья подчиненных перед начальником, новых айфонов, обсуждением игр в флудилке, загадочно-дебиловатых улыбок джуниор-архитекторов, краткосрочной аренды в субурбз, следа самолета над Гудзоном, рецептурных наркотиков и рюкзаков с FAANG символикой в подземке
Shub
но если серьезно, то на таком трафике реконструировать с начала стрима будет крайне дорого. думаю, тебе нужны снапшоты, возможно в том же стриме
Anatoly
но если серьезно, то на таком трафике реконструировать с начала стрима будет крайне дорого. думаю, тебе нужны снапшоты, возможно в том же стриме
Сервис может делать снапшоты, реконструировать с начала стрима не надо. Можно реконструировать только то, что прислало начальное состояние после первого включения.
Shub
ну или не в том же, если у вас там ограничения на retention time. но специальный фреймворк для этого вряд ли нужен
Anatoly
И да, входящий стрим мы менять не можем. С той стороны очень хрупкий софт.
Shub
50мс - это приличное время если что. пресловутый космос сходит туда и обратно за 5-10мс
Anatoly
в чем проблема тогда, если снапшоты есть?
Нет проблем, вопрос - писать из руками или взять условный orleans с персистентными акторами.
Shub
если у вас есть экспертиза по orleans - то берите, если нет, то не вижу сложностей написать самому.
Shub
Не, вендорлок делать нельзя
я к тому, что найдутся и другие хранилища с низким временем отклика. какой приблизительно размер сущности?
Shub
тогда весь вопрос только в наличии у вас опыта с orleans
Shub
в стриме в кафке что именно приходит, события?
Shub
впрочем это не меняет сути. сама постановка задачи никак не говорит, что актор подходит лучше, чем что-либо еще. если ты знаешь, что кафка - это строго для коммуникации двух акторов, то еще может быть, а если это интеграция с другой системой, то на твоей стороне актор требуется только если вся остальная система на акторах
Shub
в противном же случае твой консумер будет читать порцию сообщений, группировать их по ключу твоей бизнес-сущности и фолдить каждый чанк со снапшотом, который он должен по какой-то логике найти и загрузить. как он сообщит результаты дальше - роли не играет, хоть актор, хоть событие, хоть pub-sub. если критерий высокая пропускная способность и низкое время отклика, то тяжелый фреймворк только мешать будет, ну это вроде и без меня очевидно
Anatoly
в стриме в кафке что именно приходит, события?
Там приходят события о плечах звонка, мне надо это свернуть в состояние звонка "начат, трезвоним, сброшен, в процессе, в очереди" и т.д.
Anatoly
Далее мне уже о свёрнутом состоянии надо уведомить клиентов самодостаточным сообщением, чтобы клиент мог быть stateless (в подавляющем большинстве случаев, клиенту на переходы состояний звонка наплевать)
Anatoly
тогда весь вопрос только в наличии у вас опыта с orleans
Опыта нет, я пытался найти очевидные плюсы от использования акторов, пока не смог, решил спросить. Если были бы очевидные плюсы, я бы смог продавить внедрение и обучение
Shub
Опыта нет, я пытался найти очевидные плюсы от использования акторов, пока не смог, решил спросить. Если были бы очевидные плюсы, я бы смог продавить внедрение и обучение
акторы - это просто mesh с маршрутизацией, реестром и некоторой инфраструктурой, которая не дает этому зоопарку развалиться. считай, что это вечный цикл, в котором процессятся сообщения от кого угодно (в пределах вашего цирка) и посылаются сообщения кому угодно (опять же в процессе цирка). это может показаться тривиальным, но если ты вспомнишь, что число связей растет квадратично с ростом числа акторов, то станет ясно, зачем нужны фреймворки для акторов
Anatoly
ну тогда непонятно зачем мне акторы, потому что сообщений внутри системы не будет.
Anatoly
спасибо.
Shub
Там приходят события о плечах звонка, мне надо это свернуть в состояние звонка "начат, трезвоним, сброшен, в процессе, в очереди" и т.д.
вот это вот типичный шаг в event sourcing. у тебя больше похоже на конечный автомат, и в классических акторах (OTP) есть шаблон-поведение FSM, но интуитивно кажется, что это будет перебор
Anatoly
мне сначала надо будет запуститься, пару недель пособирать данные о системе
Anatoly
а потом уже сворачивать их в какое-то реальное состояние звонка
Shub
ну сам шаблон всего лишь забирает у тебя отвественность за реализацию. там какой-то обобшенный FSM, но ты все равно должен определить граф переходов и т.п.
Shub
и что немаловажно - смена состояния только как реакция на сообщения от других акторов. у тебя других акторов нет
Aleksander
А события по одному звонку идут в один и тот же партишен кафки, или как повезет?
Aleksander
Ну вот я и спрашиваю
Shub
ну как ключ задашь - так и будет. сообщения с одним ключом всегда идут на одну партицию
Aleksander
Если контроля над ключём нет, то акторы в принципе можно прицепить)
Aleksander
Для роутинга
Shub
Если контроля над ключём нет, то акторы в принципе можно прицепить)
а как ты будешь маршрутизировать сообщения к актору, который держит требуемый снапшот?
Aleksander
Слой принимающих акторов, которые будут дергать акторов звонка?
Shub
ну тебе надо будет выяснить конкретного актора.
Shub
но обычно такой вопрос решают с посылающей стороной
Shub
т.к. если они не обеспечат нужный ключ, то они не обеспечат и очередность доставки
Shub
т.к. очередность доставки гарантируется только в пределах партиции
Aleksander
Да, если сразу партиционировать по звонку, проще
Shub
ну не то, чтобы проще. скорее иначе - невозможно
Aleksander
Очередность может быть задана явно, таймстемпами в сообщениях
Shub
и шо?
Aleksander
И они могут лететь в разные партишены, а ты как раз и будешь собирать из них правильный стейт
Aleksander
Всё зависит от того как продьюсер написан
Shub
ага, только у тебя очередность чтения партиций никак не гарантирована
Anatoly
(потому что пихание событий в кафку - новый код, а всё остальное - старый)
Shub
поэтому ты можешь сначала прочтать 100 последних сообщений, а потом 10 первых
Anatoly
именно потому, что иначе задача не решается вообще никак.
Anatoly
мы не можем доставить пользователю сначала "текущий звонок завершён", а потом "вчерашний звонок начался", если один из консьюмеров приляжет
Aleksander
Тогда ES без акторов тут заходит
Aleksander
А хранить данные где хочешь? Ты в амазоне?
Anatoly
А хранить данные где хочешь? Ты в амазоне?
у меня cloud agnostic инфраструктура, использовать dynamodb или cosmosdb нельзя
Aleksander
там у них кажется есть managed cassandra (Amazon Keyspaces)
Anatoly
у нас есть внутренние базы и мы можем купить у других провайдеров. монги всякие. кассандру у нас никто не использовал, и если поломается - чинить мне. не очень охота
Anatoly
а ещё можно рассмотреть флинк или спарк
нет, мне их никто поддерживать не будет
Vasiliy
https://www.youtube.com/watch?v=MfIuBn8m6V8
Vasiliy
там Навальный как гость
Крылатый
Meh
Vasiliy
https://i.redd.it/ulk5wv70b6561.jpg
Romɑn
https://twitter.com/dsymetweets/status/1338670988582678529?s=09
Romɑn
Привет! Фшарпишь?