The OpenNET Project / Index page

[ новости /+++ | форум | теги | ]



Вариант для распечатки  
Пред. тема | След. тема 
Форум Разговоры, обсуждение новостей
Режим отображения отдельной подветви беседы [ Отслеживать ]

Оглавление

Cloudflare перешёл с NGINX на прокcи Pingora, написанный на языке Rust, opennews (??), 16-Сен-22, (0) [смотреть все]

Сообщения [Сортировка по времени | RSS]


293. "Cloudflare перешёл с NGINX на прокcи Pingora, написанный на ..."  +/
Сообщение от Аристарх (??), 17-Сен-22, 13:29 
Да ЛЮБОЙ язык лучше Луа, что тут развозить про Раст?? Даже на D можно было написать ровно такой же "ускоренный" сервис.
Ответить | Правка | К родителю #250 | Наверх | Cообщить модератору

306. "Cloudflare перешёл с NGINX на прокcи Pingora, написанный на ..."  +1 +/
Сообщение от Аноним (3), 17-Сен-22, 15:24 
Что, даже Perl?
Ответить | Правка | Наверх | Cообщить модератору

310. "Cloudflare перешёл с NGINX на прокcи Pingora, написанный на ..."  +/
Сообщение от edge790 (ok), 17-Сен-22, 16:18 
Сделали на раст просто потому что проще и хорошо подходит.
Отсутствие рантайма и сборщика мусора дадут равномерное время обработки запросов, в отличии от Go, C#, или Java.

Так же у nginx был блокирующий ввод-вывод и Multiprocess + Multithreading. Nginx генерирует worker processes у каждого из которых свои worker connections. Используя этот подход хуже утилизируются процессорные кеши, но по словам nginx - лучше утилизируется сетевое подключение, потому что каждый процесс имеет свой личный порт.

Для Cloudflare это огромный минус, т.к. им очень важен TTFB (Time to first byte - время до первого байта) - сколько времени проходит до получения первого байта полезной информации. Низкий TTFB = ваш процесс висел в ожидании байта, не делая ничего полезного, но потребляя ресурсы. TTFB можно уменьшить разными подходами (например переиспользовать соединение), но многие из них рушатся из-за multiprocess модели - т.к. у каждого процесса свой порт, пошарить коннекшн не получится.

Поэтому в Cloudflare решили заменить Multiprocess и Multithreading на Workstealing Multithreading + убрать блокирующий ввод-вывод. Они это сделали используя tokio.rs

Можно ли было сделать это всё на любом другом языке и добиться таких же результатов? Конечно! Даже на Lua или python проведя достаточно большую работу и изменив их рантайм.
Но rust - самое простое решение. В отличии от некоторых других языков, тут нет рантайма и есть контроль над тем когда и как освобождается память, а так же менеджер пакетов(cargo) который позволит вставить и поддерживать библиотеку которая хорошо подходит под текущие задачи, и легко обновить её в случае каких-либо проблем (в отличии от C/C++).

tl;dr: rust был самым простым вариантом

Ответить | Правка | К родителю #293 | Наверх | Cообщить модератору

368. "Cloudflare перешёл с NGINX на прокcи Pingora, написанный на ..."  +1 +/
Сообщение от Аноним (367), 19-Сен-22, 06:54 
> а так же менеджер пакетов(cargo) который позволит вставить и поддерживать библиотеку которая хорошо подходит под текущие задачи, и легко обновить её в случае каких-либо проблем

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

Ответить | Правка | Наверх | Cообщить модератору

370. "Cloudflare перешёл с NGINX на прокcи Pingora, написанный на ..."  +/
Сообщение от Name In Name Field (?), 19-Сен-22, 09:39 
А это о теме как и кого пускать в репозиторий билиотек. И параллельно как выбирать самому из доступного.

Например, Питон - отличный язык. Но не повод подбирать из помойки Пипа всё не глядя.

Ответить | Правка | Наверх | Cообщить модератору

313. "Cloudflare перешёл с NGINX на прокcи Pingora, написанный на ..."  –1 +/
Сообщение от Аноним (312), 17-Сен-22, 16:30 
Напиши ускоренный сервис на Ди. Научись программировать и напиши
Ответить | Правка | К родителю #293 | Наверх | Cообщить модератору

325. "Cloudflare перешёл с NGINX на прокcи Pingora, написанный на ..."  +/
Сообщение от Прохожий (??), 17-Сен-22, 17:10 
Причём здесь Lua, который выполнял несущественную для общей производительности часть задач?
Ответить | Правка | К родителю #293 | Наверх | Cообщить модератору

Архив | Удалить

Рекомендовать для помещения в FAQ | Индекс форумов | Темы | Пред. тема | След. тема




Партнёры:
PostgresPro
Inferno Solutions
Hosting by Hoster.ru
Хостинг:

Закладки на сайте
Проследить за страницей
Created 1996-2024 by Maxim Chirkov
Добавить, Поддержать, Вебмастеру