LINUX.ORG.RU

Cloudflare выпустила первый публичный релиз Pingora v0.1.0

 ,

Cloudflare выпустила первый публичный релиз Pingora v0.1.0

0

4

5 апреля 2024 года Cloudflare представила первый публичный релиз открытого проекта Pingora v0.1.0 (уже v0.1.1). Это асинхронный многопоточный фреймворк на Rust, который помогает создавать прокси-сервисы HTTP. Проект используется для создания сервисов, обеспечивающих значительную часть трафика в Cloudflare (вместо применения Nginx). Исходный код Pingora опубликован на GitHub под лицензией Apache 2.0.

Pingora предоставляет библиотеки и API для создания сервисов поверх HTTP/1 и HTTP/2, TLS или просто TCP/UDP. В качестве прокси-сервера он поддерживает сквозное проксирование HTTP/1 и HTTP/2, gRPC и WebSocket. Поддержка HTTP/3 — в планах. Pingora также включает в себя настраиваемые стратегии балансировки нагрузки и аварийного переключения. Чтобы соответствовать требованиям и безопасности, он поддерживает как широко используемые библиотеки OpenSSL, так и BoringSSL, которые соответствуют требованиям FIPS (федеральных стандартов обработки информации США) и пост-квантового шифрования.

Помимо этих функций, Pingora предоставляет фильтры и обратные вызовы, позволяющие пользователям полностью настраивать то, как сервис должен обрабатывать, преобразовывать и пересылать запросы.

В рабочем режиме Pingora обеспечивает плавный перезапуск без простоев для самостоятельного обновления, не теряя ни одного входящего запроса. Syslog, Prometheus, Sentry, OpenTelemetry и другие необходимые инструменты наблюдения легко интегрируются с Pingora.

Возможности Pingora: использование Async Rust, поддержка HTTP 1/2 end to end proxy, TLS over OpenSSL или BoringSSL, gRPC и проксирование веб-сокетов, Graceful reload, настраиваемые стратегии балансировки нагрузки и аварийного переключения, поддержка различных инструментов мониторинга.

В версии Pingora v0.1.1 исправлены ранее обнаруженные ошибки, улучшена производительность алгоритма pingora-ketama, добавлено больше бенчмарков TinyUFO и тестов для pingora-cache purge, ограничен размер буфера для журналов ошибок InvalidHTTPHeader, а также исправлены опечатки и внесены необходимые исправления в комментариях и документации проекта.

>>> Подробности

★★★★

Проверено: hobbit ()
Последнее исправление: hobbit (всего исправлений: 1)

Ответ на: комментарий от zx_gamer

ничего общего с «нулевой ценой абстракции» (как заявляется в его рекламной политике) не имеющий

Бенчмарк, подтверждающий это, покажешь?

Писать системный софт на нем невозможно

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

Писать прикладной софт на нем тоже невозможно, потому что большую часть времени нужно будет не писать программу, а разруливать ругань компилятора.

Если ты его не знаешь - конечно. А когда натаскаешься, все будет хорошо. Впрочем, так с любым языком, надо просто руку набить.

И со скоростью у него все плохо. Даже если писать «как на си», то он будет медленнее и порой значительнее.

Бенчмарки в студию, или 4.2

liksys ★★★★
()
Ответ на: комментарий от liksys

Бенчмарк, подтверждающий это, покажешь?
Бенчмарки в студию, или 4.2

Смотри статью.

В-третьих, на расте даже прошивки контроллеров уже пишут. Похоже, что люди, использующие раст, не знают, что это невозможно.

Ты противоречишь сам себе:

Это все совершенно неважно.

Это в итоге важно или нет?

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

Вы, можно подумать, специалист в системном программировании. Про производительность и говорить не приходится. А вся «безопасность» строится на блоках unsafe. Впрочем, программа может упасть и без unsafe. Например, переполнение стека никак не предполагается обрабатываться. Можешь запустить rustc подав ему файл, содержащий, например, 400000 (5000 строк по 80 символов) открывающихся круглых скобок. Он упадет с ненулевым кодом возврата. Проверку глубины рекурсии не сделали, а «магия Rust» не сработала... Вот тебе и «безопасность». А если писать на Си с средствами статического анализа кода, отладчиком и санитайзерами, то ошибок уж точно будет не больше (а может и меньше).

Во-первых, он уже в ядре и на нем пишутся модули.

Во-первых ядро сложно назвать системным софтом, но да ладно. Во-вторых Linux уж точно не показатель. Главному Фину башлают корпорация добра Гугль и Мелкомягкие, а он добавляет что им надо. И это не только с Rust, это почти во всем. Нужно быть слепым, чтобы этого не видеть. В-третьих нормального софта пока никто и не видел. Wrapper'ов понавешали, разговоров поразводили, но ничего действительно полезного не написали. Более того, бОльшая часть хорошего системного софта написана 30+ лет назад.

zx_gamer ★★
()
Ответ на: комментарий от zx_gamer

Смотри статью.

Статья врёт, как мы уже выяснили. Неси адекватные бенчмарки.

Ты противоречишь сам себе

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

Вы, можно подумать, специалист в системном программировании.

Да.

Про производительность и говорить не приходится.

А ты поговори. Давай бенчмарк.

А вся «безопасность» строится на блоках unsafe.

Нет. Я выше объяснял, зачем это нужно и как работает. Перечитай, если не понял.

Вот тебе и «безопасность».

Не от всего можно защититься. Но даже наличие частичной защиты - лучше, чем ее полное отсутствие.

программа может упасть

Падение - это самое правильное поведение программы, если происходит что-то непонятное. Суть защит в том, чтобы не сходить по невалидному адресу и не записать туда что-то, что потом будет схавано другим кодом и интерпретировано как-то не так. Большинство CVE отсюда и берутся. А если бы программа падала, или, еще лучше, компилятор не давал ей скомпилироваться в случае наличия ошибок памяти - это было бы лучшим поведением, чем работать и делать непойми что.

Нужно быть слепым, чтобы этого не видеть.

Зато хейтерки офигеть какие прозревшие.

Более того, бОльшая часть хорошего системного софта написана 30+ лет назад.

Ппц фантазии.

liksys ★★★★
()
Ответ на: комментарий от liksys

так с любым языком, надо просто руку набить

Или морду — его разработчикам...

Somebody
()
Ответ на: комментарий от liksys

Если ты его не знаешь - конечно. А когда натаскаешься, все будет хорошо. Впрочем, так с любым языком, надо просто руку набить.

Увы тут я с вами не согласен. Как сказал у нас один конструктор - если ты прекрасно владеешь CAD системой и делаешь сложные чертежи то мы можешь думать что ты конструктор но на самом деле это может быть не так.

В программирование точно такая же фигня, ты можешь прекрасно овладеть ЯП и ИДЕ и т.д. писать большие проги но ты можешь быть просто кодер а не программист. Ты просто тупо кодируешь «по учебнику» и все.

Некоторые могут возразить, типа это уже не программист а архитектор или еще кто, это не важно, главное понять смысл а как назовешь это уже не сильно важно.

mx__ ★★★★★
()
Ответ на: комментарий от mx__

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

liksys ★★★★
()
Последнее исправление: liksys (всего исправлений: 1)
Ответ на: комментарий от liksys

Если в сях ты мог весьма вольно жонглировать указателями, чтобы упростить себе жизнь (а потом словить сегфолт для корнеркейса, лол), то в расте тебе придется думать над архитектурой.

Ну во первых не нужно бездумно жонглировать.

А во вторых я понимаю слова «думать над архитектурой» это найти место куда воткнуть очередной unsafe ? Или Вы про то как обмануть компилятор ?

mx__ ★★★★★
()
Для того чтобы оставить комментарий войдите или зарегистрируйтесь.