Дмитрий Ш.
Дмитрий Ш.
  • Видео 6
  • Просмотров 23 292
Spring Webflux - Почему он такой быстрый?
Разбираемся почему WebClient от SpringWebflux работает в 20 раз быстрее обычного http-клиента.
Просмотров: 7 372

Видео

Cassandra / Consistent hashing, LSM Tree, Read repair
Просмотров 4063 года назад
Базовые архитектурные особенности Cassandra: 1. Consistent hashing - Как производится перебалансировка данных при добавлении/удалении ноды из кластера? 2. LSM Tree - почему Cassandra так быстро сохраняет данные 3. Read Repair - как Cassandra поддерживает согласованность данных в кластере?
Spring Webflux - Скачиваем 100 страниц за 2 секунды
Просмотров 3,2 тыс.3 года назад
Spring Webflux - Скачиваем 100 страниц за 2 секунды
Project Reactor. В чем его идея?
Просмотров 2,5 тыс.3 года назад
Разберемся зачем использовать Reactor. В чем его основная идея и какие преимущества он дает.
Apache Zookeeper часть 1
Просмотров 8 тыс.6 лет назад
Зачем нужен Apache Zookeeper? В каких случаях его использовать? Пример использования библиотеки CuratorFramework и рецептов из нее. Примеры кода github.com/dshuplyakov/zk-experiments
Apache Zookeeper часть 2
Просмотров 1,5 тыс.6 лет назад
Apache Zookeeper часть 2

Комментарии

  • @Akio_F
    @Akio_F 5 месяцев назад

    Ёмкая наглядная демонстрация, спасибо!

  • @KonstantDev
    @KonstantDev 8 месяцев назад

    Спасибо за понятное объяснение!

  • @ro314ro
    @ro314ro 9 месяцев назад

    100 страниц за 2 сек это конечно классно - но наверное акцент должен быть не на этом? Ведь на тредпуле можно добиться такой же производительности с классическим блокирующим RestTemplate

  • @andr6087
    @andr6087 10 месяцев назад

    руZZиш програмерс?

  • @iKorvik
    @iKorvik 11 месяцев назад

    Ммм, чел сравнил многопоточность с однопоточностью и решил, что это заслуги вебфлакса. А прикол реактивного программирования вообще не в этом. То, что ты сделал, это обычная многопоточность.

    • @Bomber765
      @Bomber765 11 месяцев назад

      Нет, ты ошибаешься. В данном примере будет использован 1 main поток + io потоки netty (их число равно числу ядер). Итого, на 8-ядерной машине одновременное скачивание 256 страниц будет обеспечено 9 потоками. Это не многопоточка. Попробуй в 9 потоков скачать с помощью синхронного http-клиента 1000 страниц, и посмотри сколько у тебя уйдет времени. Гарантирую что удивишься.

    • @flamencoag
      @flamencoag 9 месяцев назад

      Но ведь действительно эта асинхронность достигается через выполнение задачи в отдельном потоке. А поскольку вы запускаете много таких задач, то и получается многопоточность. Вообще я почти уверен, что если сделать загрузки через многопоточность, используя обычный http клиент, то результат будет как на webflux

    • @Bomber765
      @Bomber765 9 месяцев назад

      @@flamencoag​​⁠​⁠​⁠ это сравнение я делаю в начале видео. Можете пересмотреть и увидеть разницу в скорости 3:51

    • @МаксимСеменченко-ы9ъ
      @МаксимСеменченко-ы9ъ 5 месяцев назад

      @@flamencoag Так тут нет многопоточности. Тут ассинхронность. Мы просто избегаем блокировки при выполнении. Ты при многопоточности такого не добьешься, один поток это примерно 1мб, 256 потоков, удачи.

  • @milordplus
    @milordplus Год назад

    Крутой пример, крутое объяснение! Спасибо!!!

  • @xandrviking1113
    @xandrviking1113 Год назад

    Супер 👍

  • @VadimBryksin
    @VadimBryksin Год назад

    Странно, только что закончил перф-тест последнего (3.0.3) Spring Boot MVC vs Spring Boot WebFlux - и как-то результаты совсем не порадовали... вот что получилось Throughput/s: Non-DB Calls (Actuator helath/info) MVC: 310.17 WebFlux: 225.94 With DB Calls (create / get) MVC: 115.51 WebFlux (+R2DBC): 33.50 получилось что WebFlux аж в 4 раза медленнее чем MVC, я ожидал все на оборот

    • @СтасРусаков-т2э
      @СтасРусаков-т2э Год назад

      Тоже никак не могу получить эту обещанную производительность( Ни db, ни походы на api. Ничего не выигрывает у MVC. Уже устал искать где я ошибаюсь. Методы максимально коробочные - без какой либо моей логики. Чисто вызов webClient/Repository

    • @nyrhog3740
      @nyrhog3740 11 месяцев назад

      Товарищ тоже тестил и тоже подметил, что прироста скорости нет. Может разве что по памяти будет выгоднее, что тредов меньше крутится, но такое

    • @alexshpaq
      @alexshpaq 11 месяцев назад

      Это же основа асинхронного выполнения - асинхронное выполнение всегда медленнее обычного синхронного, потому операция переключения потоков далеко не бесплатная, плюс создание объектов Mono и Flux тоже не бесплатные. Но в асинхронном выполнении минимизируется время простоя потоков, то есть если потоку требуется прождать где-то секунду или несколько, например дождаться ответа от другого сервера, то в синхронном программировании поток будет просто ждать, а в асинхронном поток не ждёт, и может заняться обработкой других вещей - например параллельно отправить другой запрос, или что-то подсчитать. Это очень полезно, потому что практически везде используются пулы потоков с ограниченным количеством потоков, и многие не знают, как увеличить тот или иной пул потоков, плюс вообще то каждый поток по умолчанию тратит 1МБ памяти под стек и приложение с 1000 потоков будет потреблять 1ГБ памяти только для потоков

  • @pawsdev
    @pawsdev Год назад

    Отлично, почти понятно стало, но всеравно мутная разница с мультитредом, например можно в раннабл петедать адрес где показать картинку даже тупо одним методом и вуаля получится что у нас асинхронка, т.е. если сделать архитектуру где одни раннаблы и маин ничего не ждет то это вроде называется мультитред но джоина в майне нету а значит это тоже асинхронка, майн же работает дальше....

    • @Bomber765
      @Bomber765 Год назад

      >>и вуаля получится что у нас асинхронка, Не получится. Будет синхронка в отдельном треде. Тред в этом случае будет заблокирован впустую 95% времени, пока отработает сеть. А в асинхроне такой проблемы нет, там тред не блокируется.

  • @MRoose
    @MRoose 2 года назад

    Отличный обзор, спасибо

  • @rustamsharipov243
    @rustamsharipov243 2 года назад

    CAP теорема 8:45

  • @ram0973
    @ram0973 2 года назад

    А время отклика от 1 запроса в спринге с webflux при малой нагрузке быстрее? Чем в обычном спринге?

    • @Bomber765
      @Bomber765 2 года назад

      Разницы нет. За время отклика отвечает сервер, т.к. он отдает веб-страницу. И делает он это всегда одинаково, независимо от того, кто у него запрашивают страницу - webflux или обычный httpClient. Если нагрузка маленькая то лучше использовать httpClient, т.к. код будет проще как для написания так и для отладки

  • @alexandersmirnov4274
    @alexandersmirnov4274 2 года назад

    супер можете еще снять видео с разбором оператора groupby

  • @vovanvovan-ce9yb
    @vovanvovan-ce9yb 2 года назад

    Речь наверно идёт об синхронной/асинхронной обработке событий, а не синхронных/асинхронных событиях.🙂

  • @xxxxPomaHxxxx
    @xxxxPomaHxxxx 2 года назад

    Кроме разработки баз данных, какие есть кейсы когда инстансы твоего софта должны знать друг о друге? Имхо это антипатерн который нужно избегать всеми возможными способами.

  • @АлександрБугримов-о1е

    Спасибо за видео! Вообще супер )

  • @pulato000
    @pulato000 3 года назад

    Extremely interesting! Plz countinue

  • @zvnman
    @zvnman 3 года назад

    Дмитрий спасибо! Очень интересная тема, прям нашел то что мне нужно. Продолжайте, отлично объясняете.

  • @AShahabov
    @AShahabov 5 лет назад

    Ты говоришь папка и файл - это node. Значение файл-node это некий текст, а что является значением папка-node? Это список подпапок вместе с файлами или как?

    • @Bomber765
      @Bomber765 5 лет назад

      Значение папки - тоже текст, как и у файла. Но плюс к этому, папка обязательно содержит дочерние элементы: другие файлы/папки. Другими словами файл становится папкой, когда у нее появляется хотя бы один дочерний элемент.

  • @vitalii5473
    @vitalii5473 5 лет назад

    Спасибо мужики! Хоть кто-то внятно обьяснил что это за хранииель зоопарка блин) С телефона код нифига не видно. Буду на компе пересматривать. Ну это очевидно конечно же.