Язык RUST для высоконагруженного сетевого сервиса - быстрый старт [ru] / Александр Сербул

Ғылым және технология

Видео с онлайн-конференции Highload fwdays'20, которая прошла 24 октября 2020 года.
Описание доклада:
В докладе рассказывается об эволюции разработки высоконагруженного сетевого кластера отправки пуш-сообщений с использованием технологий от unix / bash и PHP до асихнронных неблокируемых многопоточных соединений на базе Rust / Tokio. Говорят о тонкостях разработки на Rust, особенностях языка, подводных камнях и способах быстрого изучения и использования веб-разработчиками навыками LAMP. Говорят также о Go, Java и причины принятых технологических решений.
Доклад полезный для разработчиков, желающих освоить новый и популярный язык программирования Rust, функциональное программирование, идеи Haskell, которые имеют опыт веб-разработки на PHP / Python / JavaScript.
Таймкоды:
03:42 Как всё начиналось в ІТ?
06:36 Современный код. Управление сложностью
09:25 Haskell: “Quicksort”
10:27 Чем все закончилось?
11:31 Войны технологий - усугубляют сложность
13:01 «Шовинизм» в программировании
13:34 Выразительность языков программирования
15:20 Выразительность в Rust
18:51 Управление памятью в Rust
20:22 Как быстро понять Rust и его сравнение с другими ЯП
22:19 Как набить руку в Rust?
25:08 Начало работы с Rust
28:47 “Плюшки” в Rust
29:24 Как мы развивали архитектуру проекта: от bash-forks до rust/tokio
47:45 Итоги
49:36 Q&A
Страница доклада:
fwdays.com/event/highload-fwd...
Больше докладов и видео по теме конференции:
fwdays.com/event/highload-fwd...
Fwdays более 10 лет занимается организацией масштабных конференций для разработчиков таких направлений: JavaScript, .Net, Python, Data Science, PHP, QA, Highload, Architecture, DevOps, Databases.
Больше информации про актуальные события:
fwdays.com/events
Подписывайтесь, чтобы первыми узнавать про старт продаж билетов по самой выгодной цене:
Facebook: / fwdays
Twitter: / hlfwdaysconf
Telegram: t.me/highload_fwdays

Пікірлер: 96

  • @hamestet
    @hamestet2 жыл бұрын

    Вот как раз передать энергию изучать и использовать язык вам, Александр, удалось. Спасибо за мотивацию!

  • @VladimirEmelyanov
    @VladimirEmelyanov2 жыл бұрын

    Самый грамотный доклад о текущем состоянии IT , который я видел. Спасибо большое автору!

  • @dractw
    @dractw2 жыл бұрын

    Первый доклад в моей жизни, который нужно смотреть на скорости 0.75

  • @user-yx5mv2lz7k

    @user-yx5mv2lz7k

    2 жыл бұрын

    я смотрел на 1.5 - круто

  • @_boolive_

    @_boolive_

    Жыл бұрын

    Да, на 1.75 переполнение мозга)

  • @maksimsergeevich5939

    @maksimsergeevich5939

    Жыл бұрын

    И еще рюмаху налить, чтобы в одну волну попасть с вещающим

  • @mpenzin
    @mpenzin3 жыл бұрын

    Саша Сербул - это всегда буря эмоций и мощный поток сознания! :)

  • @VonBismarkOtto

    @VonBismarkOtto

    3 жыл бұрын

    Причем что важно - бессвязного сознания

  • @aeuonep

    @aeuonep

    5 ай бұрын

    @@VonBismarkOtto бессвязность видит тут тот кто не в теме

  • @VonBismarkOtto

    @VonBismarkOtto

    5 ай бұрын

    @@aeuonep у вас в Педерации все что ли лишнехромосомные? Два года спустя вы решили что-то прокомментировать. Да еще решили что тот, кого вы комментируете, не в теме.

  • @alexandergaiwer9804
    @alexandergaiwer98043 жыл бұрын

    Круто, что показали реальный боевой пример использования Rust.

  • @maksimgridin9322
    @maksimgridin93222 жыл бұрын

    Давно слышу про RUST хорошие отзывы, но после такого зажигательного доклада, я просто обязан его выучить! ))

  • @user-no5wx1re3u
    @user-no5wx1re3u2 жыл бұрын

    Просмотрел на одном дыхании. Потрясающий доклад

  • @vlamai
    @vlamai3 жыл бұрын

    Вот все бы рассказывали с таким энтузиазмом

  • @crewmerrick4840

    @crewmerrick4840

    3 жыл бұрын

    i know I'm pretty randomly asking but do anyone know of a good website to stream newly released movies online?

  • @GraxS

    @GraxS

    2 жыл бұрын

    @@demetriuskeenan3916 Зарепортьте этих ботов

  • @alexanonymous5823
    @alexanonymous58232 жыл бұрын

    большое спасибо за доклад. было очень интересно

  • @alexandergaiwer9804
    @alexandergaiwer98043 жыл бұрын

    Интересный доклад и много полезной информации! Rust рулит! Огромное спасибо за доклад)))

  • @twentxx
    @twentxx2 жыл бұрын

    Вот это доклад, во это заряд энергии! 🚀👍

  • @user-ul2jc8ej2p
    @user-ul2jc8ej2p2 жыл бұрын

    Спасибо. Реально классное сравнение без подлизываний. Крутой расказчик. С удовольствием посмотрел

  • @exploring-ukulele
    @exploring-ukulele3 жыл бұрын

    Наконец-то! Это топовый доклад ! Сразу видно человек с опытом.

  • @MakarenkoSasha
    @MakarenkoSasha2 жыл бұрын

    Давно я так не ржал... камедиклаб, по сравнению с докладчиком, просто дети. Вообщем супер.. пошел раст изучать..а то я уже старый стал, а все как молодой на феррари езжу ))

  • @TheRussificator
    @TheRussificator2 жыл бұрын

    Увлеченный дядька. Лайк.

  • @aset2335
    @aset23353 жыл бұрын

    Как услышал про косяки Фон Неймана сразу поставил лайк!

  • @alexanderdickson1679
    @alexanderdickson1679 Жыл бұрын

    Сербул, респект, отличные статьи на Хабре

  • @vyasab1490
    @vyasab1490 Жыл бұрын

    А какие лимиты вы увеличили, которые решили проблему падения на первом запуске?

  • @user-nh4ik4vy7d
    @user-nh4ik4vy7d10 ай бұрын

    точно и по делу.

  • @tkachukpavel442
    @tkachukpavel4422 жыл бұрын

    Спасибо, ценно что показали реальный проект. А что скажете по поводу многопоточности? У меня есть проект который на nodejs который требует многопотоков, он у меня работает на тредах. Как с этим обстоят дела на Rust ?

  • @alexserbul

    @alexserbul

    2 жыл бұрын

    В Rust прекрасно все с многопоточностью. Как раз для защиты от дедлоков и гонок и используются описываемые в докладе аффинные типы данных.

  • @Valerii_Pivovarov
    @Valerii_Pivovarov3 жыл бұрын

    Александр, Вы занимаетесь очень хорошим делом. Искренне желаю Вам успеха. Я тоже пытался создать ПРОСТОЙ И ВНЯТНЫЙ язык программирования, но у меня очень много времени забирает ФИЗИКА, которую я тоже стараюсь излагать в ПРОСТОЙ И ВНЯТНОЙ форме, чтобы она была понятна и школьнику. Интересно, чем тогда доктор (академик) "физико-математики" будет отличаться от обычного школьника?

  • @ostrov11
    @ostrov112 жыл бұрын

    охх старый бомбит, высказался на публику )) респект

  • @Deletedeletedelete
    @Deletedeletedelete2 жыл бұрын

    вижу название доклада: не выбирай язык програмирования пока не посмотришь этот доклад)

  • @maksimsergeevich5939
    @maksimsergeevich5939 Жыл бұрын

    Если для rust сделают что-то типа флаттера, то это будет бомба. Не хватает на rust какого-нибудь prod-ready решения широкого спектра. Почему не сделают? Кому нужен этот dart без флаттера? Вложения в rust очень трудно окупить, поэтому на нем пишут в основном энтузиасты и любители системного хобби программирования. Хотя я вижу большой потенциал rust в том чтобы писать высоконагруженные сервера и микросервисы, особенно такие где идёт интенсивная математика с финансами или виртуальной валютой. Если сделать что-то типа флаттера, то еще можно будет писать крутые аппликейшены для мобилок, которые не падают и очень эффективно расходуют батарею. Плюсом от этого будет то, что на rust будет больше реальных сфер применения и вакансий, и тогда действительно может быть он захватит мир.

  • @Cre0w
    @Cre0w Жыл бұрын

    >Я так понял цель была снизить потребляемые ресурсы, следовательно вам нужно было выбрать язык со сборщиком мусора например go, на процессор нагрузки почти не будет. эти 3.5 Gb на Rust превратились бы в 50 mb на go резидентной памяти.

  • @mihailsafronov3599

    @mihailsafronov3599

    Жыл бұрын

    Вот прямо 3.5 Gb сразу станут 50 mb волшебным образом ? Такое возможно при какой-то адовой фрагментации кучи, в реальной жизни даже представить такое не могу. Снизить потребляемые ресурсы - это не про языки со сборщиком мусора, они про упрощение разработки. Там как раз часто приходится использовать переиспользуемые пулы для снижения нагрузки на GC, если для go - подумайте для чего sync.Pool появился. Впрочем подобные вещи делаются и в C/C++/Rust (чтобы не дергать alloc).

  • @pavelsmirnov660

    @pavelsmirnov660

    6 ай бұрын

    Вы видимо не совсем понимаете как работают языки со сборщиком мусора. Если нет утечек памяти, то go ВСЕГДА будет потреблять больше памяти чем rust. Потому что в rust удаление объектов из памяти четко определено во времени, а go должен в рантайме запускать сборку мусора, что очень накладно

  • @GoRustDeveloper
    @GoRustDeveloper8 ай бұрын

    Благодарю за доклад. Всегда интересно послушать мнение и опыт человека из нутри компании. Одно но, есть язык Go и нет языка Golang

  • @nanoqsh

    @nanoqsh

    8 ай бұрын

    Golag

  • @serhiizaitsev2702
    @serhiizaitsev27023 жыл бұрын

    Вау

  • Жыл бұрын

    Интересный чувак. Спасибо за толковый подоход

  • @MichaelPankov
    @MichaelPankov2 жыл бұрын

    Честно говоря доклад странный. 95% разговора про сам язык - вещи которые уже сказали все. Про сервис 5% и в целом ситуация такая, что "повезло" просто переписать, не огрести проблем, и легко завести. В принципе, по объёму кода-то уже понятно, что сервис копеечный.

  • @user-eq3zy9tg1q
    @user-eq3zy9tg1q Жыл бұрын

    Жесть духота😀

  • @yaroslavkhmyljovskii3388
    @yaroslavkhmyljovskii33883 жыл бұрын

    Нету сборщика? Как rust работает с неблокирующими структурами для мультитредов?

  • @nanoqsh

    @nanoqsh

    3 жыл бұрын

    Для этого можно использовать подсчёт ссылок, аналог в C++ std::shared_ptr, в Rust называется Arc (Atomically Reference Counted). Структуру, спрятанную за Arc, можно шарить между разными тредами. Когда количество ссылок становится нулевым, объект удаляется. Своего рода микро сборщик мусора для одного объекта.

  • @zxcq

    @zxcq

    2 жыл бұрын

    Arc

  • @sfera888

    @sfera888

    7 ай бұрын

    @@zxcq а зачем там RWLock? Arc же противоречит идее SharedState (где собсно и нужен RWLock), разве нет?

  • @liferunsoncode2921
    @liferunsoncode29213 жыл бұрын

    F# |> Discriminated Unions + pattern matching |> ♥ у Rust подход с GC = ♥

  • @user-jx4jb4of3c
    @user-jx4jb4of3c2 жыл бұрын

    Есть суровый минус. Учил его 4 месяца пока начал хоть какой-то код выдавать

  • @KNBLAUT

    @KNBLAUT

    2 жыл бұрын

    Какой-то код это какой? Можно за 4 месяца не написать что то сложное, но простое без проблем.

  • @radiopapus
    @radiopapus Жыл бұрын

    Это язык(nodejs) который отстал лет на 50 - noted

  • @user-vo7lo3bo4z
    @user-vo7lo3bo4z3 жыл бұрын

    Все языки плохие - раст хороший :) Классика жанра

  • @user-gw8bx4pm2o

    @user-gw8bx4pm2o

    3 жыл бұрын

    Фейспальм

  • @user-ky8dr1hu5e
    @user-ky8dr1hu5e2 жыл бұрын

    Я на 100% согласен с корневой идеей программирования - должен быть простой язык программирования и он описывает чистую математику, т.е. дисциплина программирования должна оставаться разделом математики (как это и задумывалось отцами основателями). Если программирование было бы чистой математикой, то не было бы такого количества непонятных выкидышей из 3-х месячных курсиков по реактикам, олигофренов после ‘сайт за 3 вечера’ и прочей перхоти. Верните блеать нормальное ИТ!!!

  • @readmeandanswer8142

    @readmeandanswer8142

    6 ай бұрын

    Вы вновь смотрите на следствие, а не на причину. Зачем людям вообще идти и учить программирование? почему не кулинарию? да потому что программирование вошло в єкономику, ето уже не прикладная наука для ентузиастов, программирование - двигатель економики. Бизнесу не нужно чтобы вы создавали интернет магазин 3 года на Haskell, ему нужно получить приложение в кратчайшие сроки чтобы увеличить продажи. Хотите старое айти - занимайтесь им в свое свободное время, но откатывать мир по технологиям до уровня 80 годов не нужно

  • @user-ky8dr1hu5e

    @user-ky8dr1hu5e

    6 ай бұрын

    @@readmeandanswer8142 тебя вот не спросили, типичная жертва скилфэктори. Я про инженерную культуру писал. Ты же пишешь про то, как тебе радостно вставать раком перед бизнесом за пару копеек. Вы бараны сами себе яму копаете через свои неподдерживаемые поделки на коленочке.

  • @readmeandanswer8142

    @readmeandanswer8142

    6 ай бұрын

    ​@@user-ky8dr1hu5e бизнесу не нужны ученые для етого есть университеты и аспирантуры, там занимаются научной деятельностью, а задача бизнеса - зарабатывать деньги. Даже если ето будет поделочки на коленочке, они все-равно приносят деньги. Так же как например китайцы делают низкосортные вещи но имеют огромную економику, или индусы которые известны своим отвратительным софтом, наполняют економику страны. По етому я и ответил, призыв "вернуть айти на академический уровень" полная глупость, всему свое время, сфере услуг и рыночной економике ето не нужно.

  • @-AsL-
    @-AsL-2 жыл бұрын

    "я хочу умереть, ничего страшного"

  • @r2com641
    @r2com6412 ай бұрын

    На расте сложно писать и он чисто не выгоден для разработки быстрой. Лучше Zig. А borrow checker не хляет если ты пишешь low level code и где все приходится включать в блок unsafe И макросы в расте не нужно было делать и они слишком сложны, comptime в Zig лучше

  • @cool-story-bob

    @cool-story-bob

    2 ай бұрын

    Так он и не создавался для быстрой разработки, а для надёжного кода. Официально Zig младше Rust на несколько лет если брать ржавчину как язык, а не исследовательский проект. То есть, практически ровесники. Последний сегодня принят сообществом Linux, принят в Microsoft, принят в Google, можно продолжать. У первого сегодня нет практически ничего, включая даже собственно языка - он до сих пор не формализован и не стабилизирован, а документация для новых релизов местами зияет неполнотой. Есть только не такое уж и многочисленное сообщество вокруг. Положа руку на сердце, не слишком много оснований для веры в большое будущее помня другие попытки на примере хотя бы того же D.

  • @r2com641

    @r2com641

    2 ай бұрын

    @@cool-story-bob прокомментируй то что я написал что borrow checker не работают когда ставится unsafe и то что если на металле пишешь то многие фичи безопасности уже не хляют. А еще в расте очень мутные макросы а в Zig элегантный и проще comptime. Zig это как бы С по новому

  • @r2com641

    @r2com641

    2 ай бұрын

    @@cool-story-bob а то что Zig развивается медленнее так это там спонсоров меньше ибо создатель языка не хочет чтобы компании диктовали как надо делать язык, вот и все. Поэтому Rust уже больше и больше жиреет (gets bloated), да и там постоянно какая то драма возникает, то сообщество запрещает использовать логотип то еще что, не зря же даже спин создали Crablang, посмотри сам

  • @cool-story-bob

    @cool-story-bob

    2 ай бұрын

    @@r2com641 Все так, ржавый не замена С и никогда им не был. Это язык для прикладной надёжной разработки без технического долга и сомнительного наследия. По поводу скорости развития без поддержки крупных игроков тоже согласен и имхо именно поэтому дальше локального сообщества ZIG не пойдет.

  • @eugenenovikov671
    @eugenenovikov6713 жыл бұрын

    выводы надо было делать, когда вы начали использовать пхп

  • @KNBLAUT

    @KNBLAUT

    2 жыл бұрын

    20 лет назад?

  • @TJ-wc3iq
    @TJ-wc3iq2 жыл бұрын

    Мне очень нравится Rust. Но после всех косяков оратора о JS, Python, Go и даже Rust... Единственная ценность доклада - заинтересовать языком всех остальных, 95% сказанное автором либо "ошибка выжившего", либо непонимание языков о которых он говорит (как все реально под капотом работает), либо просто чушь (или провокация) и это печалит. "Чему мы научились, Палмер?" - "Не знаю, сэр"

  • @alexserbul

    @alexserbul

    2 жыл бұрын

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

  • @Rust_ekb
    @Rust_ekb3 жыл бұрын

    В PHP строгая типизация появилась с 7 версии и типизированные свойства с 7.4. Это к вопросу что там типов нет.

  • @EdwVee

    @EdwVee

    3 жыл бұрын

    Нет типизации для переменных внутри функции. Но самое смертоубийственное это тип array: 1. Из каких элементов состоит? Даже само написание комментов, чтобы ide давала подсказки (допустим у меня там объекты класса Foo) уже убивает. 2. Это вектор или мапа? 2 совершенно разных вещи называются одинаково.

  • @VonBismarkOtto

    @VonBismarkOtto

    3 жыл бұрын

    @@EdwVee , в php нет массивов. Под array скрывается ordered map

  • @EdwVee

    @EdwVee

    3 жыл бұрын

    @@VonBismarkOtto ок. Я писал о моделях взаимодействия. Ты можешь не знать, что там внутри, когда работаешь с array как с вектором.

  • @SYMBAT.K.E
    @SYMBAT.K.E5 ай бұрын

    Linux уже пишется на rust

  • @qq77777

    @qq77777

    4 ай бұрын

    Ну да ну да😀. Rust - это секта. Все докладчики про rust с безумными глазами разсказывают какой язык клевый. Кроме того, все кто программировал на раст не в курсе, что все, что все новшества раста есть в других языках.

  • @r2com641

    @r2com641

    2 ай бұрын

    @@qq77777согласен секта. Я сделал ставку на Zig

  • @life_xypma
    @life_xypma Жыл бұрын

    Душой чувствую что имеет вместо причина таких «слез», но если даже внимательно слушать - грешное и праведное смешано, как говорил один человек: «Кровь, песок, говно и сахар!»)))) Интересно на чем сидит автор? Главное не принимать не апробированную фармацевтику!!!

  • @user-vo7lo3bo4z
    @user-vo7lo3bo4z3 жыл бұрын

    Все языки плохие - раст хороший :)

  • @user-xf7xp8kv9q

    @user-xf7xp8kv9q

    2 жыл бұрын

    в 4 раз напиши

  • @user-jv4od5en6z
    @user-jv4od5en6z3 жыл бұрын

    Не нравится сборщик мусора в го - пиши так что бы его он не возбуждался на твой код. Про раст и торвальдса слышал, не прошёл проверку. Про типы в пхп, вы доклад готовили лет 5 назад или когда там типы завезли? Вообщем-то краем уха можно послушать, но не более.

  • @konstantinta2803

    @konstantinta2803

    3 жыл бұрын

    >Не нравится сборщик мусора в го - пиши так что бы его он не возбуждался на твой код. Рекомендую вам почитать пост discord'a, который объясняет(с замерами параметров) причины, почему это не сработает. И да, они в результате перешли с гоу на раст.

  • @user-jv4od5en6z

    @user-jv4od5en6z

    3 жыл бұрын

    @@konstantinta2803 да читал, они там не плохо зафейлились, если читать внимательно.

  • @konstantinta2803

    @konstantinta2803

    3 жыл бұрын

    @@user-jv4od5en6z так причина была в спайках, идущих с периодом в 2 минуты, который чудесным образом оказался равным периоду принудительного вызова gc гоу рантаймом. Как-то не похоже на фэйл разрабов discord

  • @delir0

    @delir0

    2 жыл бұрын

    Если докладчик и готовил 5 лет назад про типы в пхп, то я уже сегодня могу сказать: 1. Нет generics, отсюда array становится нетипизированной ерундой 2. Функции - не first class citizen 3. Нет ADT и даже Enum'ов 4. Нет паттерн матчинга по типам (хотя union types есть) 5. Есть null'ы и NPE Я даже не знаю, как можно иметь смелость сравнивать систему типов в расте, где компилятор тебе может ДОКАЗАТЬ корректность программы с динамическим пхп, который только вчера подал заявку на систему типов.

  • @HeavyHeavyvich
    @HeavyHeavyvich3 жыл бұрын

    Тот, кто прогает на RUST - то настоящий...

  • @7nolikov
    @7nolikov2 жыл бұрын

    Это какой то эмоциональный бред

  • @xyzwio
    @xyzwio2 жыл бұрын

    У чела каша в голове. По сути как бы все в основном правильно, но в деталях путает кучу понятий.

  • @xyzwio

    @xyzwio

    2 жыл бұрын

    Послушать в все равно интересно, автору спасибо.

  • @leobreydo9318
    @leobreydo93182 жыл бұрын

    Слишком много воды. Не тратьте время.

  • @life_xypma

    @life_xypma

    Жыл бұрын

    Тут реально 95% воды))) как минимум

  • @fess932
    @fess9323 жыл бұрын

    на go получилось бы не хуже

  • @user-gw8bx4pm2o

    @user-gw8bx4pm2o

    3 жыл бұрын

    Фейспальм

  • @ovellon9526

    @ovellon9526

    2 жыл бұрын

    писать бизнес логику на Го то еще удовольствие, не хватает дженериков, да и обработка ошибок не сильно радует, надо привыкать

  • @fess932

    @fess932

    2 жыл бұрын

    @@ovellon9526 писать бизнес логику постоянно думая о нескольких вариантах указателей и времени жизни переменных тоже не очень просто

  • @ovellon9526

    @ovellon9526

    2 жыл бұрын

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

  • @alexyerin3475
    @alexyerin34752 жыл бұрын

    Очень много лишних вбросов, не осилил эту дичь слушать. Все языки не серьездны, только Rust красота. В других языках люди думать не умеют, очень странно...

  • @yuriytheone
    @yuriytheone11 ай бұрын

    C++ хватает для всего! Просто кто-то др*чит на разные "красивые" аббревиатуры, типа SOLID, ACID, MVC и другие, а по факту не может высвободить память, которую сам и аллоцировал... 🎉

Келесі