The OpenNET Project / Index page

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



"Cloudflare перешёл с NGINX на прокcи Pingora, написанный на языке Rust"
Версия для распечатки Пред. тема | След. тема
Форум Разговоры, обсуждение новостей
Исходное сообщение [ Отслеживать ]
Присылайте удачные настройки в раздел примеров файлов конфигурации на WIKI.opennet.ru.
. "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 был самым простым вариантом

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

Оглавление
Cloudflare перешёл с NGINX на прокcи Pingora, написанный на языке Rust, opennews, 16-Сен-22, 11:01  [смотреть все]
Форумы | Темы | Пред. тема | След. тема



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

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