Ayrat
Ayrat
удобно обрабатывать данные
Ayrat
вот собсно и всё
Roman
т.е у тебя внутри одной функции лютая асинхронность происходит?
Ayrat
там точно так же зашёл бы асинкСек и у меня остались живые попытки, но там у асинкСеков апи плохое
Ayrat
Ayrat
там типа одновременно качаются одни данные, тут же на лету мапятся, фолдятся и пр
Roman
и даже в самом худшем варианте ты укладываешься в 5 минут?
Ayrat
и всё это для того чтобы не делать последовательную загрузку и парсинг и иметь малый мемори консанпшн и быстрое выполнение на пределе Network
Roman
вроде больше 5 минут функция работать не может
Ayrat
в смысле если всё удачно распараллелить и застримить чтобы данные обрабатывалиь сразу после получения, и нигде нет ботлнеков, то всё работает на пределе IO
Ayrat
т.е. сколько IO позволяет выкачать/закачивать с даталужи, так и функция работает
Ayrat
если данные не стримить, то было бы чот в духе
let dataset1 = datalake.GetPlayers playerIds //может быть даже и параллельно, но сам шаг синхронный
let dataset2 = processPlayers dataset1 //следующий шаг
Ayrat
а со стримами можно сразу из шага 1 отправлять по пайплайну дальше не дожидаясь пока весь датасет 1го шага загрузится
Roman
Поправь меня плз, если ошибаюсь:
- Можно было обойтись без гопака, просто раздробив все то же самое на более мелкие функции, которые друг с другом через ивентхаб или сервисбас могли бы общаться
- Если так разбить, были бы выше накладные расходы на сериализацию
- Было бы сложнее отладить систему в виду раздробленности
- Но не пришлось бы учить гопак)
Roman
Интересно, в каком подходе легче воспринять архитектуру. Наверное, с гопаком все же проще
Ayrat
Roman
ну там же зависит, как часто дергаются функции. Они иногда просто не успевают уснуть, так что колд старт 1 раз только
Ayrat
т.е. сейчас там на лету всё групируется, фолдится, мапится, заливается и т.д.
Если есть на входе стрим из 1500 ID игроков, то результат уже может начать появляться пока игроки ещё закачиваются
Ayrat
что в случае обычного подхода невозможно сделать
Ayrat
т.е. ты заливаешь в начале 1500 игроков (даже пусть параллельно) и только потом делаешь всё остальное (например CPU-bound работу над ними сложную с кучей аллокаций и групировок). IO простаивает, потом результат заливаешь (а тут уже CPU простаивает)
Ayrat
стримы позволяют параллелить IO и CPU
Ayrat
и уменьшают размер потребляемой памяти т.к. у тебя стрим не хранится в памяти
Roman
Ayrat
если выкачать все 1500 профилей игроков, то можно получить гигабайт в оперативе
Ayrat
функции на стримах у меня не выходят за НИЖНИЙ предел тарификации
Ayrat
нижний предел на ажурных функциях 128 мб
Roman
в смысле бесплатно работают?
Ayrat
не, оно считается по нижнему пределу)
Roman
а, понял
Ayrat
т.е. если твоя функция потребляет меньше 128 мб рам, то считается что она всё же потребляет 128мб рам
Ayrat
но по факту стримы, даже прокачивая через себя гигабайты не выходят даже за 128 мб оперативы
Ayrat
короче, без стримов жизни нет
Roman
убедил)
Roman
У тебя есть какой-нить кусок кода функции с гопаком, который ты можешь расшарить?
Vasily
У Ayrat там рядом горнопроходческий комплекс прикопан, которым они лужайки стригут
gsomix
Ayrat В чем проблема гопака? Сложность? Почему, например, Василий у себя его везде выпилил?
Ayrat
Ayrat
Ayrat
Ayrat
со стримами всё одинаково выглядит
Ayrat
наебашил 10 степов, запустил
Roman
>>- это байнд?
Roman
а, ок.
Roman
вроде довольно легко читается, если запомнить все эти операторы
Roman
Ayrat
Roman
ага
Igor
Igor
Не специально
Hog
Привет!
Григорий
привет!)
Vladislav
Vladislav
Сфоткался с Рихтером
Григорий
👍
Григорий
Vladislav
Vladislav
Григорий
а кто-то фронт на фшарпе пишет?)
Hog
да
Hog
но не идеоматично :)
Григорий
это как?)
Hog
могу и императивщину наговнокодить
Григорий
просто мне стало интересно потыкать в проектики по фронту с Фэблом, желательно с Ангуляром 6, но толком ничего на гитхабе не нашел(
gsomix
Ангуляра нет.
gsomix
Зачем?
Hog
с ангуляром - у меня ничо. я обычный Элмиш, который реакт, юзаю
Григорий
просто глянуть есть ли какие-то существенные преимущества перед связкой с Тайпскриптом
Hog
никаких - потому как тебе придётся тайпдефенишоны 1 в 1 переносить в фейбл
gsomix
Ангуляр -- это же какая-то джава для фронта.
Григорий
как я понимаю жс код из фшарпе нужно описывать интерфейсом или есть какой-то другой способ?
Hog
не - там хитрые аннотации, что в жс генерить
Hog
но на высоком уровне они не нужны
Григорий
а можно короткий пример кода?)
Hog
открой любой fs из Fable и поглянь