|
функциональный подход и ивент дривен архитектура
|
|||
---|---|---|---|
#18+
Basil A. Sidorov mayton И реакция системы на пакет который привёл к крашу кода - не приводит к крашу системы. Просто главный актор перезапускает стек еще раз и процесс бежит дальше. В то-же время классический сервис (например на стеке SpringBoot) при ошибке OOM например падает окончательно и с ужасающими последствиями потерь для пользователей и для сообщений которые ожидают обработки. Можно, конечно, изолировать в процессе то, что (обычно) изолируют в потоке, но придётся или сильно уронить производительность или ограничиться очень узким классом задач. Да. Согласен. Просто мы можем сильно разойтись в определении процесса или потока в терминологии Erlang и Java/Akka. Может оказаться что одни вкладывают один смысл а другие - сильно другой. Хотя вроде поток и поток. ... |
|||
:
Нравится:
Не нравится:
|
|||
20.01.2020, 12:33 |
|
функциональный подход и ивент дривен архитектура
|
|||
---|---|---|---|
#18+
mayton, Модель акторов вроде вообще скрывает эти понятия. О них просто не говорят. Они внизу. ... |
|||
:
Нравится:
Не нравится:
|
|||
20.01.2020, 12:36 |
|
функциональный подход и ивент дривен архитектура
|
|||
---|---|---|---|
#18+
Это вопрос понимания глубины стека. Кому-то достаточно понимать только Java. А кому-то интересно нырнуть в ОС чтобы понять как вообще реализованы потоки в Windows/Linux. ... |
|||
:
Нравится:
Не нравится:
|
|||
20.01.2020, 13:15 |
|
функциональный подход и ивент дривен архитектура
|
|||
---|---|---|---|
#18+
mayton, Согласен. ... |
|||
:
Нравится:
Не нравится:
|
|||
20.01.2020, 13:16 |
|
функциональный подход и ивент дривен архитектура
|
|||
---|---|---|---|
#18+
Basil A. Sidorov mayton И реакция системы на пакет который привёл к крашу кода - не приводит к крашу системы. Просто главный актор перезапускает стек еще раз и процесс бежит дальше. В то-же время классический сервис (например на стеке SpringBoot) при ошибке OOM например падает окончательно и с ужасающими последствиями потерь для пользователей и для сообщений которые ожидают обработки. Можно, конечно, изолировать в процессе то, что (обычно) изолируют в потоке, но придётся или сильно уронить производительность или ограничиться очень узким классом задач. Это если рассматривать в контексте одной ноды. Как праивльно заметили в дистрибьютед системах, а-ля телеком, написанных на Erlang преобладает философия let it crash. Когда обработчики представляют собой тупые ресиверы сообщений, которые обрабатывают только happy-path. Вся обработка ошибок - лесом, проще переподнять актор, чем на месте решать как обработать ошибку. Это спасет от безобразия вроде недетрменированных ошибок(отвалилась сеть, база..) но не поможет в случае нуллпоинтера) Эрланговцы декларируют надежность как 99.9999.. хз ... |
|||
:
Нравится:
Не нравится:
|
|||
20.01.2020, 16:00 |
|
функциональный подход и ивент дривен архитектура
|
|||
---|---|---|---|
#18+
mayton Вот мне кажется что именно в этом главная суть акторов. В устойчивости к сбоям. А ФП здесь вобщем-то непричем. ФП может быть или может не быть. Но оно не является козырем. Хотя оно полезно для упрощения тестирования и поиска ошибок. Верно. Устойчивость к сбоям + нету shared state, что упрощает программирование многопоточности(как минимум mutual exclusion and visibility concerns) ... |
|||
:
Нравится:
Не нравится:
|
|||
20.01.2020, 16:02 |
|
функциональный подход и ивент дривен архитектура
|
|||
---|---|---|---|
#18+
Я-бы сказал что Erlang != Akka. Но создатели Akka (скорее всего) вдохновлялись системами которые похожи на машину Erlang. Я подчеркну что это не язык а именно исполняющая машина. У них даже есть рекомендация никогда не использовать докер. Потому что они декларируют уровень надёжности этой машины выше чем уровень докера. Не могу к сож. вспомнить где я это читал. Но если найду дам линку. ... |
|||
:
Нравится:
Не нравится:
|
|||
20.01.2020, 16:04 |
|
функциональный подход и ивент дривен архитектура
|
|||
---|---|---|---|
#18+
PetroNotC Sharp забыл ник, Как это ниже мешает ООП? авторВ этих определениях собраны три основные черты того, что называют Serverless: Абстракция. Вы не управляете сервером, на котором запускается ваша программа. Вы вообще ничего про него не знаете, все нюансы операционной системы, обновлений, сетевых настроек и прочего спрятаны от вас. Это сделано для того, чтобы вы могли сосредоточиться на разработке полезной функциональности, а не на администрировании серверов. Эластичность. Провайдер Serverless услуги автоматически предоставляет вам больше или меньше вычислительных ресурсов, в зависимости от того, насколько большая нагрузка приходится на ваше приложение. Эффективная стоимость. Если ваше приложение простаивает — вы ничего не платите, т.к. оно в этот момент не использует вычислительных ресурсов. Оплата же происходит только за время, которое ваше приложение реально работает. Ограниченный жизненный цикл. Ваше приложение запускается в контейнере, и, спустя короткое время, от десятка минут до нескольких часов, сервис автоматически его останавливает. Конечно же, если приложение снова должно быть вызвано — новый контейнер будет запущен. Стримы в шарп это Linq. Никакого переворота и революции не сделали. Как пришли так и ушли. Есть огромный сдерживающий фактор у облаков и собирания программ из кусочков. Сначала вы грезили что будет тонкий экран клиент у всех. А Ось в облаке. Потом грезили про ворд в облаке. Потом грезили про микросервисы. Потом про докеры. Это ведь все админов касается. Развертывания. Управления ПО. А не РАЗРАБОТКОЙ ПО. Почему EJB помер? >И что там обсуждать? Сначала выясни, это хрень академическая или революционная вещь? Если второе то нужна ветка в форуме. Отдельная. Это никак не мешает ООП. Я говорю о том, что ООП в этом случае тебе ничем не помогает ООП вытсрелил во время доминирующей модели вычислений - когда все приложение крутилось на одном сервере и не то чтобы сильно многопоточном. Имело смысл скрыть shared state под оболочкой переиспользования кода, так и появились обхекты - с ними программы реально было менеджить проще. Но время идет, и сейчас все системы идут в стороны распределнности.облачности\многопоточности, где ООП как гиря на ногах. Сейчас нету никакого практического смысла объединять данные и код по их обработке в одном месте. ФП сложнее чем ООП, оно вносит дополнительные ментальные и инфраструктруные усилия, которые начинают перевешивать именно в распределенных и многопоточных системах. ... |
|||
:
Нравится:
Не нравится:
|
|||
20.01.2020, 16:07 |
|
функциональный подход и ивент дривен архитектура
|
|||
---|---|---|---|
#18+
mayton Я-бы сказал что Erlang != Akka. Но создатели Akka (скорее всего) вдохновлялись системами которые похожи на машину Erlang. Я подчеркну что это не язык а именно исполняющая машина. У них даже есть рекомендация никогда не использовать докер. Потому что они декларируют уровень надёжности этой машины выше чем уровень докера. Не могу к сож. вспомнить где я это читал. Но если найду дам линку. Хот-деплой у них. Типа патчи ставятся без остановки системы. ... |
|||
:
Нравится:
Не нравится:
|
|||
20.01.2020, 16:22 |
|
функциональный подход и ивент дривен архитектура
|
|||
---|---|---|---|
#18+
забыл ник, Для меня не гиря, а базовое образование инженера программиста. ООП это 3 пункта. Наследование, полиморфизм и инкапсуляция. Куда ты это выкинешь?))). Из расчасовки учителей в школах? А так то я согласен с тобой что его меньше стало. Вон, цветочный магазин построили без него)))) LOL ... |
|||
:
Нравится:
Не нравится:
|
|||
20.01.2020, 16:52 |
|
функциональный подход и ивент дривен архитектура
|
|||
---|---|---|---|
#18+
mayton, Для меня эрланг это ЯП, а Akka это реализация платформа чтобы не думать вообще о параллельном коде. Вообще не задумываться. Всё на событиях. ... |
|||
:
Нравится:
Не нравится:
|
|||
20.01.2020, 16:54 |
|
функциональный подход и ивент дривен архитектура
|
|||
---|---|---|---|
#18+
PetroNotC Sharp Наследование, полиморфизм и инкапсуляция. Куда ты это выкинешь?))). Начнем с простого 1) Инкапсуляция. Тут надо рассмотреть два аспекта. Shared state - в ФП все иммутабл - значит и инкапсуляция в общем то и не нужна. Второй аспект видимость - чтобы клиент не видел больше чем надо - так тут работают ровно те же техники что в ООП что в ФП. 2) Полиморфизм. Параметрический полиморфизм есть и там и там. Ad-hoc тоже, хотя в ФП он развит больше. Subtype-полиморфизм есть только в ООП - ну и зачем он нужен, что прям без него прожить нельзя? Дальше в 3-м пункте 3) Наследование - Говорить можно долго, но оно создает больше проблем чем решает. Если наследоваться без стейта - то какой смысл? Можно просто выделить функцию и сделать ее парамтерической. Если наследовать со стейтом - то тогда ломаем все принципы SOLID со всеми вытекающими. Код реюз возможен без какого-то либо наследования. Ну и зачем ООП? Риторический вопрос конечно ... |
|||
:
Нравится:
Не нравится:
|
|||
20.01.2020, 17:04 |
|
функциональный подход и ивент дривен архитектура
|
|||
---|---|---|---|
#18+
PetroNotC Sharp mayton, Для меня эрланг это ЯП, а Akka это реализация платформа чтобы не думать вообще о параллельном коде. Вообще не задумываться. Всё на событиях. Я пытался чисто из инженерного интереса освоить Erlang. Отложил. Немного сдался. Есть ощущение сильного legacy. И хотя акторы вдувают в него некую вторую волну интереса все таки он есть и остаётся платформой лишенной некоторых "нужных вещей". Которые нужны нам каждый день. Это драйверы БД. Какие-то фреймворки. Утилиты. Я слышал что они насетапили язык Эликсир поверх ихней платформы. Но по мне это очень похоже на Котлин поверх Java. С одной стороны - удобство. А с другой стороны - отход в сторону от рантайма. Преимущество Java было в том что объекты языка == объекты рантайма или класслоадера. По поводу Akka - я всё жду что будет какой-то проект. Но пока нет акторного ТЗ. ... |
|||
:
Нравится:
Не нравится:
|
|||
20.01.2020, 17:06 |
|
функциональный подход и ивент дривен архитектура
|
|||
---|---|---|---|
#18+
забыл ник, Ты шире смотри. Ты все хочешь заместить одно на другое 1. Инкапсуляция это поведение объекта, класса и черный ящик. Снаружи поведение и внутри реализация. Базовые понятия. На чем их показывать как не классах с ООП. 2. Полиморфизм нельзя прожить. Это проекты рисовалки. Проекты ГИС. Отрисовка всего и вся на одну команду Draw() 3. Про выкинуть наследование вообще лень писать. Как выкинешь, станеш безродным человеком))) ... |
|||
:
Нравится:
Не нравится:
|
|||
20.01.2020, 17:14 |
|
функциональный подход и ивент дривен архитектура
|
|||
---|---|---|---|
#18+
PetroNotC Sharp забыл ник, Ты шире смотри. Ты все хочешь заместить одно на другое 1. Инкапсуляция это поведение объекта, класса и черный ящик. Снаружи поведение и внутри реализация. Базовые понятия. На чем их показывать как не классах с ООП. 2. Полиморфизм нельзя прожить. Это проекты рисовалки. Проекты ГИС. Отрисовка всего и вся на одну команду Draw() 3. Про выкинуть наследование вообще лень писать. Как выкинешь, станеш безродным человеком))) Я вот просматривал чисто из любопытсва исходники популярных игр из 90х. На С. SuperMario. Doom. e.t.c. И почти все они написаны без ООП. И перформанс здесь особо непричем. Просто КМК из создатели были озабочены практическими соображениями. Было важно поддержать широкую часть железа (приставки и игровые автоматы) и эта фича была доминирующей. Тоесть более значимой чем инкапсуляции и прочее. Игра должна играть. А не быть внутри идеологически верной. А вот если взять к примеру интерфейс OpenGL - дак он вообще процедурный. Хотя и достаточно красиво написан с точки зрения системы типов. Лаконично и информативно чтоб разработчик не ошибся и не подсунул другой тип данных или имеющий другой смысл. ... |
|||
:
Нравится:
Не нравится:
|
|||
20.01.2020, 17:44 |
|
функциональный подход и ивент дривен архитектура
|
|||
---|---|---|---|
#18+
mayton Игра должна играть. А не быть внутри идеологически верной. ... |
|||
:
Нравится:
Не нравится:
|
|||
20.01.2020, 18:02 |
|
функциональный подход и ивент дривен архитектура
|
|||
---|---|---|---|
#18+
mayton, Рисоввлки это не игрушки а карты, ГИС, проектирование. ... |
|||
:
Нравится:
Не нравится:
|
|||
20.01.2020, 18:52 |
|
функциональный подход и ивент дривен архитектура
|
|||
---|---|---|---|
#18+
Я не против. Я просто уточняю, что абсолютизация чего либо - это крайность. ... |
|||
:
Нравится:
Не нравится:
|
|||
20.01.2020, 18:59 |
|
функциональный подход и ивент дривен архитектура
|
|||
---|---|---|---|
#18+
mayton Я не против. Я просто уточняю, что абсолютизация чего либо - это крайность. ... |
|||
:
Нравится:
Не нравится:
|
|||
20.01.2020, 19:08 |
|
функциональный подход и ивент дривен архитектура
|
|||
---|---|---|---|
#18+
Интересная тема. От нее с моей точки зрения так прямо и воняет - как бы нам максимально в общих чертах переложить требования заказчика, которые никто и не понимает толком на язык программирования, который знаю я. Это не подколка это констатация факта. И все одно и тоже в надежде на чудную пулю. Но если немного посмотреть на нас примитивных - АСУ ТПшников, то окажется, на уровне низкоуровневых PLC контроллеров аля Siemens 1. Есть FB (блок в который кучу извне приходит и он запоминает свое состояние) 2. Есть FC (блок в который куча параметров приходит и он выдать может тоже кучу и он не запоминает свое состояние). 3. Наследования и полиморфизма нет! Самое важное - блоки которые всякое состояние новое запоминают - они согласовываются с проектировщиком, причем под страхом потом залететь. То бишь в письменном виде. Функции - ну все попроще но тоже не смешно. Вопрос:из-за чего холивар? Или я не так понял?.. Скорее всего так, но очень упоительно очередной срач на 50 страниц развести. ... |
|||
:
Нравится:
Не нравится:
|
|||
21.01.2020, 00:28 |
|
функциональный подход и ивент дривен архитектура
|
|||
---|---|---|---|
#18+
Как правильнее программировать процессор. Или как придумать стек подлиннее и позаковыристее чтоб никто кроме автора никогда не смог поддержать данное поделие и чтоб автора никогда не уволили ибо "только эта бородатая сволочь знает как оно внутри работает" Фух. ... |
|||
:
Нравится:
Не нравится:
|
|||
21.01.2020, 01:05 |
|
функциональный подход и ивент дривен архитектура
|
|||
---|---|---|---|
#18+
а можете просто расписать в рамках ивент-дривен скажем, как вы видите сферический процесс аутентификации юзера и создание им поста, как там ивенты ходят между модулями или сервисами, и т.п.? ... |
|||
:
Нравится:
Не нравится:
|
|||
21.01.2020, 10:41 |
|
функциональный подход и ивент дривен архитектура
|
|||
---|---|---|---|
#18+
andreykaT, Аутентификация не делается в ивент-дривен. Она СИНХРОННАЯ и давно СТАНДАРТНАЯ. Выше пример давал сделал? Там есть аутентификация? Что ты топик не сопровождаешь? Это не красиво. ... |
|||
:
Нравится:
Не нравится:
|
|||
21.01.2020, 11:18 |
|
функциональный подход и ивент дривен архитектура
|
|||
---|---|---|---|
#18+
PetroNotC Sharp andreykaT, Аутентификация не делается в ивент-дривен. Она СИНХРОННАЯ и давно СТАНДАРТНАЯ. Выше пример давал сделал? Там есть аутентификация? Что ты топик не сопровождаешь? Это не красиво. Ну ты наверное ответил на мой вопрос. Вопрос был в том что можно ли ивент дривен переложить на синхронные наборы действий ... |
|||
:
Нравится:
Не нравится:
|
|||
21.01.2020, 11:49 |
|
функциональный подход и ивент дривен архитектура
|
|||
---|---|---|---|
#18+
andreykaT а можете просто расписать в рамках ивент-дривен скажем, как вы видите сферический процесс аутентификации юзера и создание им поста, как там ивенты ходят между модулями или сервисами, и т.п.? В евент-дривен нет ничего нового. Собственно он возник еще до того как мультипоточка появилась. Например когда ты кодишь комьютерную игру под игровую приставку - ты хендлишь события таймера экрана 50 раз в секунду. И за этот период ты должен принять решение по каждому игровому персонажу. Обычно это проверка коллизий и примитивная логика. Бежать вверх-вниз-влево-вправо. Поток у тебя один. Main-поток и другого нет. ... |
|||
:
Нравится:
Не нравится:
|
|||
21.01.2020, 12:00 |
|
|
start [/forum/topic.php?fid=59&msg=39916583&tid=2120656]: |
0ms |
get settings: |
4ms |
get forum list: |
6ms |
check forum access: |
1ms |
check topic access: |
1ms |
track hit: |
70ms |
get topic data: |
3ms |
get forum data: |
1ms |
get page messages: |
470ms |
get tp. blocked users: |
1ms |
others: | 296ms |
total: | 853ms |
0 / 0 |