Cloudflare опублікував Pingora у відкритий доступ

Привіт, пару років тому була новина, що Cloudflare переросли Nginx та розробили заміну, власний HTTP proxy, Pingora.
Pingora написаний на Rust та здатний обробляти 1 трильйон запитів на день, використовуючи лише третину ресурсів попередньої інфраструктури.

Cloudflare озвучували плани опублікувати Pingora у відкритий доступ й цього тижня, 28 лютого 2024 року, це сталось, код Pingora опублікований у публічний доступ на GitHub.

Pingora: our Rust framework for building programmable network services

Ви можете прочитати оригінальну новину англійською мовою, а я перепублікую тільки важливі моменти.
Since our last blog post, Pingora has handled nearly a quadrillion Internet requests across our global network.
1e15 запитів за 533 днів
Pingora provides libraries and APIs to build services on top of HTTP/1 and HTTP/2, TLS, or just TCP/UDP. As a proxy, it supports HTTP/1 and HTTP/2 end-to-end, gRPC, and websocket proxying. (HTTP/3 support is on the roadmap.)
Operationally, Pingora provides zero downtime graceful restarts to upgrade itself without dropping a single incoming request. Syslog, Prometheus, Sentry, OpenTelemetry and other must-have observability tools are also easily integrated with Pingora as well.

Pingora vs Nginx

Pingora має версію 0.1.0, але вже очікую, що в майбутньому витіснить Nginx, так само як очікував релізу Pingora.

Поки що можемо порівняти тільки репозиторії, об’єм кодової бази та популярність.

РепозиторійМоваЧисло файлівРядків кодуЗірочок
github.com/cloudflare/pingoraRust23235 51610 500+
github.com/nginx/nginxC413195 38819 900+

Pingora vs Nginx

Епілог

Раніше розглядав “Чому обирають Rust”.
Якщо плануєте вивчати Rust то вже можете починати готуватись до нового набору у Rust Bootcamp, який буде у червні 2024 року.
👍ПодобаєтьсяСподобалось4
До обраногоВ обраному1
LinkedIn
Дозволені теги: blockquote, a, pre, code, ul, ol, li, b, i, del.
Ctrl + Enter
Дозволені теги: blockquote, a, pre, code, ul, ol, li, b, i, del.
Ctrl + Enter

Крута новина. Сподіваюсь із ним у мене не виникне бажання набити пику тому, хто вигадав що потрібно конфігурувати саме так (приклад конфігурації nginx який вважається нормою):
map $request_method $limitreqmethod {
default $binary_remote_addr;
HEAD "";
}
Та взагалі то монстр із купою костилів який вже давно повинен померти.

Pingora написаний на Rust та здатний обробляти 1 трильйон запитів на день, використовуючи лише третину ресурсів попередньої інфраструктури.

Це прямо таки стрибок, дуже багатообіцяюче.

Цікаво, вони досягли цього за рахунок можливостей технології чи за рахунок високої експертизи своїх розробників?
Якщо друге, то чи можна було б досягти цих результатів з іншою технологією?

Цікаво, вони досягли цього за рахунок можливостей технології чи за рахунок високої експертизи своїх розробників?
Якщо друге, то чи можна було б досягти цих результатів з іншою технологією?

За рахунок кваліфікації розробників, типовий приклад це VictoriaMetrics, написана на Go, має кращу продуктивність за InfluxDB, написану на Rust

Стосовно вибору Rust то є відповідь в анонсі:

We chose Rust as the language of the project because it can do what C can do in a memory safe way without compromising performance.
Although there are some great off-the-shelf 3rd party HTTP libraries, such as hyper, we chose to build our own because we want to maximize the flexibility in how we handle HTTP traffic and to make sure we can innovate at our own pace.

Впевнений, що Cloudflare могли досягти таких самих результатів на інших технологіях
Або їх одразу задовольнили результати на Rust
Або ще поекспериментували з іншими технологіями та вирішили замовчати, щоб уникнути зайвих суперечок в коментарях на DOU

Це прямо таки стрибок, дуже багатообіцяюче.

Стрибок ще попереду, коли AWS, GCP та Azure будуть мігрувати з github.com/kubernetes/ingress-nginx на Pingora

Коли буду мати хоча б пару років комерційного досвіду з Rust то напишу

Підписатись на коментарі