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)

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

В новых «стандартах» языка Си смысла просто нет. Они не дают новых возможностей, зато ломают старый код.

Очень много программистов кладут с прибором на C после C89 и ИМХО правильно делают.

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

В новых «стандартах» языка Си смысла просто нет.

Конечно есть, они частично основаны на наиболее используемых расширениях gcc. Вкуснее только -std=gnu17.

Очень много программистов кладут с прибором на C после C89 и ИМХО правильно делают.

Самые используемые проекты на С не кладут.

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

Самые используемые проекты на С не кладут.

Это камень в сторону ядра что ли ?

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

Самые используемые проекты на С не кладут.

Ну посмотрите, например, на SQLite3.

Конечно есть, они частично основаны на наиболее используемых расширениях gcc. Вкуснее только -std=gnu17.

Если вам так кажется, то скорее всего вы никогда не программировали на Си. Точнее, вы программировали на каком-то языке, имеющим мало общего с Си.

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

Ну посмотрите, например, на SQLite3.

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

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

Код написан в ANSI С и соберется любым компилятором.

И нет, это не «древний» стандарт. «Древний» это K&R.

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

В новых «стандартах» языка Си смысла просто нет. Они не дают новых возможностей, зато ломают старый код.

А ты их читал вообще, или теоретизируешь, как обычно?

Из постоянно используемого, например, очень полезен stdatomic.

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

Из постоянно используемого, например, очень полезен stdatomic.

Как все плохо. Ну даже допустим действительно нужна многопоточность. Нафига этот недоогрызок? Что мешает взять обычный POSIX threads и не страдать фигней? К тому же, он в итоге использует его, только ограничивает функционал и заворачивает в бесполезные обертки.

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

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

Как все плохо.

Всё очень хорошо.

Нафига этот недоогрызок? Что мешает взять обычный POSIX threads и не страдать фигней?

Я не вижу в посиксе атомарных переменных. Не подскажешь, где они?

он в итоге использует его

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

Но расскажите, пожалуйста, в какой задаче вы хотите ее применять?

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

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

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

А, собственно, пример конкретной ситуации будет? Такие задачи достаточно редки, где нужно именно в многопотоке обрабатывать что-то.

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

Вот мой код с активно использующимися потоками.

Такие задачи достаточно редки

На самом деле нет. Многопоточность нужна достаточно часто.

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

На самом деле нет. Многопоточность нужна достаточно часто.

Редко. Задачи, где данные не зависят друг от друга и их действительно много встречаются не часто.

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

Редко

Нет. Не неси ерунду.

Задачи, где данные не зависят друг от друга и их действительно много встречаются не часто.

Как хорошо, что область применения потоков не заканчивается на независимых данных. Иначе ты мог бы оказаться прав :)

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