Закладки Шишки Очёр

Закладки Шишки Очёр

Закладки Шишки Очёр

Закладки Шишки Очёр

• • • • • • • • • • • • • • • • •

Закладки Шишки Очёр

• • • • • • • • • • • • • • • • •

Гарантии ❗ Качество ❗ Отзывы покупателей ❗

• • • • • • • • • • • • • • • • •

👇 👇 👇 👇 👇 👇 👇 👇 👇 👇 👇 👇

Наши контакты:


▶️▶️▶️ (НАПИСАТЬ ОПЕРАТОРУ В ТЕЛЕГРАМ)️ ◀️◀️◀️


👆 👆 👆 👆 👆 👆 👆 👆 👆 👆 👆 👆

• • • • • • • • • • • • • • • • •

🚩 ИСПОЛЬЗУЙТЕ ВПН (VPN), ЕСЛИ ССЫЛКА НЕ ОТКРЫВАЕТСЯ!

🚩 В Телеграм переходить только по ссылке что выше! В поиске тг фейки!

• • • • • • • • • • • • • • • • •











Закладки Шишки Очёр

Велосипедостроитель, программист-камикадзе. Поиск Настройки. Евгений Охотников eao Профиль Публикации 65 Комментарии 1. Скопировать ссылку на RSS. Преимущество в том, что мы передаем сообщения вместе с их длиной как в UDP , но имеем надежную передачу как в TCP Не очень понял вашу мысль. Сообщение при передаче по TCP точно так же должно предваряться длиной. Комментарий пока не оценивали 0. Я на следил пристально за развитием Akka и ее инфраструктуры, но мне казалось, что Akka Streams появились именно потому, что просто на акторах делать обработку потоков данных неудобно. И для упрощения этой задачи сделали прослойку поверх акторов. Мне кажется, что обработка потоков однотипных данных гораздо лучше ложиться на модель CSP, чем на Модель Акторов. И хотя, как говорят, одна из них спокойно выражается через другую, дополнительные усилия в реализации CSP посредством акторов дает о себе знать при обработке потоков данных. Ну так ведь речь шла вот о чем: Вы часто упоминаете сложности организации back-pressure в модели акторов, но не вдавались в подробности, в чём эти сложности заключаются. Я попытался объяснить, с чем приходится сталкиваться в общем случае. Понятно, что бывают частные случаи, в которых реализация back-pressure более очевидно как, например, в ограниченном контексте с Reactive Streams. Вообще, вот здесь я специально подчеркивал, что хороший механизм защиты от перегрузки должен быть заточен под конкретную задачу. Akka Streams например поверх протокола ReactiveStreams реализует много чего. И отбрасывание лишних сообщений, и группировку, и непосылание новых запросов. А можно ссылочку попросить, дабы не перелопачивать всю документацию по Akka Streams? Ну вот как раз про backpressure информация что-то с ходу не обнаруживатся. В описании изменений для JDK9 вообще вот что сказано: The Flow API does not provide any APIs to signal or deal with back pressure as such, but there could be various strategies one could implement by oneself to deal with back pressure. Об этом же говорят и авторы reactive manifesto раздел Basic Semantics : How elements are transmitted, their representation during transfer, or how back-pressure is signaled is not part of this specification. Из описания API для Reactive Streams следует, что основная идея в периодическом запросе N новых сообщений Subscriber-ом после того, как он разобрался со своей текущей нагрузкой. Для каких-то задач это вполне себе нормально. И может быть без особых усилий реализовано поверх асинхронного общения акторов. В каких-то задачах это вряд ли возможно. Например, у нас может быть датчик температуры воздуха, который опрашивается раз в секунду. Этот датчик должен отдавать информацию во внешним мир именно с таким темпом. Если на информацию от датчика подписано 10 получателей, то датчик не должен озадачиваться тем, что один из 10 получателей сейчас не готов принять текущее значение. А почему нельзя реализовать протокол подобный ReactiveStreams в таком случае? А где можно посмотреть на описание этого протокола? Один из главных факторов — это то, что доставка сообщения до получателя не является мгновенной операцией. Но пройдет какое-то время, в течении которого агент B будет отсылать сообщения агенту A. За это время агент A может быть загружен «по самое не хочу». Опять же, сообщение о том, что агент А освободился и готов принимать данные вновь, придет к B не сразу. В течении этого времени агент B будет простаивать, то есть мы будет терять время. Кроме того, далеко не всегда есть жесткая связь между отправителем и получателем. И все с разным темпом, и все в своем собственном порядке. Так что если перегрузка A возникает при сообщении от B2, то это не значит, что блокировать нужно именно B2. Кроме того, агент A может отсылать сообщения самому себе такое регулярно используется. Не будет же A блокировать самого себя : Кроме того, есть еще отложенные и периодические сообщения, которые летят от таймера. Таймер вообще нельзя блокировать, так как он обслуживает толпу агентов. Тут зависит от того, что за сообщения стоят в очереди и сколько стоит обработка каждого из них. Есть сообщения, обработка которых стоит очень дешево, есть сообщения, на обработке которых агент может тратить минуты в буквальном смысле. Кроме того, далеко не факт, что агенту будет принадлежать собственная очередь. Это от фреймворка зависит. У нас в SObjectizer сообщения идут не в очередь агента, а в очередь диспетчера, на котором работают агенты. Для каких-то диспетчеров у каждого агента будет своя очередь, а для каких-то — будет общая очередь, разделяемая с другими агентами. Кроме того, это все unbound-очереди, так что процент их наполнения не подсчитать. Так что, по хорошему, для того, чтобы понять, насколько загружен актор, нужно понимать сколько «тяжелых» сообщений уже стоят в его очереди. Но даже при этом, когда агенты взаимодействуют в режиме 1:N или N:1, или M:N, не понятно кого именно приостанавливать. Понятно, что в каких-то конкретных случаях можно сделать какое-то частное решение, которое будет прекрасно работать на конкретной задаче. Но если смотреть с точки зрения реализации универсального фреймворка, все не так тривиально, как хотелось бы. Блин, опять промахнулся. Ответил вам здесь. Это важно и актуально. Что именно важно и актуально? Или, всё же, не совсем? Не знаю, что творится в этой теме с точки зрения computer science. На практике же есть несколько широко известных реализаций: Erlang и Akka. Erlang — это отдельный язык и виртуальная машина то есть настоящая платформа. NET, Celluloid для Ruby и т. Часть II. Вот, развернуто на тему проблем с реализацией прозрачной распределенности. По поводу распределенности «из коробки». Начал было писать комментарий. Но он настолько быстро стал расти в размерах, что уже начал напоминать отдельную статью. Видимо, именно статьей я его и сделаю. А здесь дам ссылку. Думаю, что обсуждать вопросы, связанные с IPC будет проще в комментариях к отдельной статье. Спасибо за столь развернутый комментарий. По поводу синхронности-асинхронности соглашусь. По поводу распределенности «из коробки» нужно будет подготовить более обстоятельный ответ. Поэтому пока выскажусь вот по этому поводу: Часто задаюсь вопросом: почему люди, что-то сделавшие, другим советуют этого не делать? Гораздо больше тратиться на отладку, баг-фиксинг, тестирование, подготовку примеров, документации, вывод всего этого дела во внешний мир, на публику. Тут, на Хабре, недавно было интересное интервью. Там хорошо рассказано о том, во что реально обходится вывод чего-то в OpenSource. Даже если инструмент не выводится на публику, а остается внутренним инструментом компании, в которой он был разработан, то ситуация принципиально не облегчается. Может быть даже, напротив, становится хуже. Ведь внутренний продукт вряд ли будет настолько же хорошо задокументирован хотя бы задокументирован. Следовательно, значительную часть времени разработчик инструмента будет тратить на обучение тех, кто инструментом вынужден пользоваться. А если документация будет как обычно для внутренних разработок, то есть почти никак, то и сам разработчик с годами будет тратить все больше и больше времени на то, чтобы разобраться в своем же старом коде. Значительная часть времени будет уходить на поиск проблем с фреймворком. Причем даже не самого фреймворка, сколько проблем в коде тех, кто его использует. А использовать правильно сложно, так как документация оставляет желать… Да и сам фреймворк, будучи внутренним продуктом, не сможет одинаково хорошо закрывать все хотелки даже внутренних пользователей. Поэтому его иногда будут использовать неправильно, это будет приводить к проблемам, разбирательство с которыми будет отнимать время и силы. Кроме того, не нужно думать, что можно создать фреймворк, который будет нравиться всем. Не думаю, что это в принципе возможно, ведь фреймворк — это не долларавая купюра : Так что среди внешней публики обязательно найдется некоторое количество активных горлопанов критиков, которые будут объяснять и вам, и окружающим, что то, что вы сделали — это говно, оно не работает, оно хуже, чем что-то другое, оно вообще в принципе не нужно, поскольку такие задачки нормальные программисты сами решают на коленке за 15 минут. В общем, кроме собственно вынашивания идей для фреймворка и их реализации, есть еще куча говна всего, чем приходится заниматься. Пока сам в эту кучу не вляпаешься, то и не подозреваешь, насколько она огромная и вонючая ;. Вам спасибо! Есть планы продолжать серию. Так что если есть желание узнать что-то конкретное или нужно что-то прояснить, или рассказать подробнее, то обозначьте что именно. И нам будет проще при подготовке следующих статей. И вам, читателям, будет интереснее. Вы правы, можно. Подход SEDA был упомянут для того, чтобы обозначить альтернативу варианту, когда акторы создаются на каждый чих. Это могут быть просто рабочие нити или короутины , связанные каналами скажем, в языке Go это естественным образом ложиться на Go-шные каналы и goroutines. Могут быть и акторы, как в нашем случае. Может быть еще что-то. Имхо, с акторами все-таки удобнее, чем с голыми нитями. Но вы не рассказали самое главное это хранение состояния в акторе, и создание актора на каждую сущность в системе — пользователя, обработчика событий может быть много акторов и т. Про то, что акторы удобны для хранения изолированных состояний я пытаюсь говорить на протяжении уже ряда статей. Другое дело, что не всегда выгодно оформлять состояние отдельной сущности именно в виде актора. Тот же самый пользователь, который залогинился в систему, может быть представлен отдельным актором. А может быть всего одной из записей в одном единственном акторе, который следит за всеми залогиненными пользователями. В зависимости от задачи можно предпочесть один подход другому. Моя цель была показать, что если не рассматривать альтернативы и тупо использовать возможности фреймворка по созданию большого количества акторов, то можно столкнуться, как минимум, с двумя неприятными проблемами. Можно и не столкнуться. Но знать об этом заранее нужно. Мы вот, например, изначально об этом не знали, набили шишек. Теперь относимся к выбору между этими вариантами очень серьезно. Почему то негативно отозвались о прозрачном распределенном взаимодействии которое должна предоставлять система акторов Не совсем так. Речь шла о том, почему мы со временем отказались от поддержки таких возможностей «из коробки». И одна из основных причин была как раз в том, что для устранения перечисленных в статье проблем со встроенной распределенностью требуется очень приличное количество трудозатрат. Ни чего не сказали о подходе fault-tolerance, хотя это скорее специфика конкретной реализации а не модели акторов, хотя это и вытекает из модели акторов. Эта тема затрагивалась в предыдущей статье раздел «Коды ошибок vs Исключения». Если этого недостаточно, то скажите, каких именно подробностей вам не хватило, постараюсь раскрыть тему. А что не так с уровнем? Например, продемонстрированное ранее отсутствие кругозора, категоричность и максимализм. А так же откровенные заблуждения. Я расписал все: есть язык Х не обязательно плюсы, абсолютно любой , если есть язык У который ничем не хуже и позволяет прозрачно переиспользовать функционал Х, то смысла писать на Х нет никакого. Вы забываете о существующих наработках и разработках. Если для языка X есть мегабиблиотека, которая позволяет за пару рабочих дней а то и часов собрать решение под какую-то типовую задачу с немного различающимися условиями, то языком X будут продолжать пользоваться даже после того, как аналог появится на языке Y. Хотя появление этого самого аналога — это еще большой вопрос. Изначально речь шла вообще о другом, а именно о том, что и шарпы, и остальные перечисленные языки намного проще в изучении, чем плюсы. Так а какой практический вывод из этого? Ваша проблема в том, что вы считаете такой уход не просто разумным, но и неизбежным. Типичный парадокс блаба. При таком уровне аргументации остается только спросить: сколько вам лет? Но это так, риторический вопрос, вы уже достаточно рассказали для того, чтобы понять, как относиться к вашему мнению. Жизнеспособность, востребованность, используемость и, уж тем более, популярность — это все слабосвязанные друг с другом вещи. Ada вполне себе живой язык, востребованный и используемый, развивающийся последняя версия стандарта от го года , с регулярно обновляющимися инструментами для разработки. То, что это не попадает в поле вашего зрения, не меняет объективного положения дел. Мне казалось, ответ очевиден. Мне кажется, вы в очередной раз ошибаетесь. Тут можно еще много чего наговорить про различия между ООП для статически типизированных ЯП и для динамически типизированных, а так же о том, почему Smalltalk имеет совсем косвенное отношение к ООП для статически-типизированных языков, а так же почему Smalltalk считают «родителем» ООП не смотря на то, что та же Simula появилась гораздо раньше. Но это здесь явно офтоп. Ну, так можно хоть аду считать живым ЯП. Но назвать Ada мертворожденной… Это сильно. Вы прям заинтриговали. Смотря что мы имеем ввиду под «использованием». Наличие business-critical приложений, прекращение работы которых станет заметным для большого количества людей. Которые нуждаются в поддержке и развитии, и которые не могут по каким-то причинам быть переписаны на более современных языках программирования. По крайней мере про кобол мне страшно даже думать, что кто-то на нем еще пишет. А вы наберитесь смелости, представьте себе такое. Назад Сюда 1 В рейтинге 2 й Откуда Гомель, Гомельская обл. Ваш аккаунт Войти Регистрация.

Заальбах-Хинтерглемм купить мефедрон мяу 4mmc

Статьи о пивоварении

Закладки Кокаин Карловы Вары Чехия

Закладки Шишки Очёр

Амфетамин Лицзян

Закладки Шишки Очёр

Лирику 300 Москва Москворечье-Сабурово

Влетел в большую яму – что проверить в первую очередь?

Закладки Героин Лимассол Кипр

Закладки Шишки Очёр

Купить Меф Дагестанские Огни

Грунтовые катки

Закладки Шишки Очёр

Купить Амфетамин Актобе закладкой

Закладки Шишки Очёр

Метадон бесплатные пробы Красновишерск

Закладки Шишки Очёр

Бошки Тверь купить

Влетел в большую яму – что проверить в первую очередь?

Report Page