Выпуск Pingora 0.6, Ρ„Ρ€Π΅ΠΉΠΌΠ²ΠΎΡ€ΠΊΠ° для создания сСтСвых сСрвисов

Компания Cloudflare ΠΎΠΏΡƒΠ±Π»ΠΈΠΊΠΎΠ²Π°Π»Π° выпуск Ρ„Ρ€Π΅ΠΉΠΌΠ²ΠΎΡ€ΠΊΠ° Pingora 0.6, ΠΏΡ€Π΅Π΄Π½Π°Π·Π½Π°Ρ‡Π΅Π½Π½ΠΎΠ³ΠΎ для Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚ΠΊΠΈ Π·Π°Ρ‰ΠΈΡ‰Ρ‘Π½Π½Ρ‹Ρ… Π²Ρ‹ΡΠΎΠΊΠΎΠΏΡ€ΠΎΠΈΠ·Π²ΠΎΠ΄ΠΈΡ‚Π΅Π»ΡŒΠ½Ρ‹Ρ… сСтСвых сСрвисов Π½Π° языкС Rust. ΠŸΠΎΡΡ‚Ρ€ΠΎΠ΅Π½Π½Ρ‹ΠΉ ΠΏΡ€ΠΈ ΠΏΠΎΠΌΠΎΡ‰ΠΈ Pingora прокси ΡƒΠΆΠ΅ Π±ΠΎΠ»Π΅Π΅ Π΄Π²ΡƒΡ… Π»Π΅Ρ‚ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅Ρ‚ΡΡ Π² сСти доставки ΠΊΠΎΠ½Ρ‚Π΅Π½Ρ‚Π° Cloudflare вмСсто nginx ΠΈ ΠΎΠ±Ρ€Π°Π±Π°Ρ‚Ρ‹Π²Π°Π΅Ρ‚ Π±ΠΎΠ»Π΅Π΅ 40 ΠΌΠ»Π½ запросов Π² сСкунду. Код написан Π½Π° языкС Rust ΠΈ ΠΎΠΏΡƒΠ±Π»ΠΈΠΊΠΎΠ²Π°Π½ ΠΏΠΎΠ΄ Π»ΠΈΡ†Π΅Π½Π·ΠΈΠ΅ΠΉ Apache 2.0.

ΠžΡΠ½ΠΎΠ²Π½Ρ‹Π΅ возмоТности Pingora:

  • ΠŸΠΎΠ΄Π΄Π΅Ρ€ΠΆΠΊΠ° HTTP/1 ΠΈ HTTP/2 (Π² ΠΏΠ»Π°Π½Π°Ρ… HTTP/3), Π° Ρ‚Π°ΠΊΠΆΠ΅ Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎΡΡ‚ΡŒ создания сСрвисов, ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΡŽΡ‰ΠΈΡ… свои ΠΏΡ€ΠΎΡ‚ΠΎΠΊΠΎΠ»Ρ‹ ΠΈΠ»ΠΈ UDP/TCP.
  • ΠŸΠΎΠ΄Π΄Π΅Ρ€ΠΆΠΊΠ° ΠΌΠ½ΠΎΠ³ΠΎΠΏΠΎΡ‚ΠΎΡ‡Π½ΠΎΠΉ ΠΎΠ±Ρ€Π°Π±ΠΎΡ‚ΠΊΠΈ запросов Π² асинхронном Ρ€Π΅ΠΆΠΈΠΌΠ΅.
  • Π’ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎΡΡ‚ΡŒ прикрСплСния callback-ΠΎΠ±Ρ€Π°Π±ΠΎΡ‚Ρ‡ΠΈΠΊΠΎΠ² ΠΈ Ρ„ΠΈΠ»ΡŒΡ‚Ρ€ΠΎΠ², ΠΏΠΎΠ·Π²ΠΎΠ»ΡΡŽΡ‰ΠΈΡ… ΡƒΠΏΡ€Π°Π²Π»ΡΡ‚ΡŒ Ρ€Π°Π·Π»ΠΈΡ‡Π½Ρ‹ΠΌΠΈ стадиями ΠΎΠ±Ρ€Π°Π±ΠΎΡ‚ΠΊΠΈ запроса, Π° Ρ‚Π°ΠΊΠΆΠ΅ ΠΈΠ·ΠΌΠ΅Π½ΡΡ‚ΡŒ, ΠΏΠ΅Ρ€Π΅Π½Π°ΠΏΡ€Π°Π²Π»ΡΡ‚ΡŒ, Π±Π»ΠΎΠΊΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ ΠΈ ΠΆΡƒΡ€Π½Π°Π»ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ запросы ΠΈ ΠΎΡ‚Π²Π΅Ρ‚Ρ‹.
  • ΠŸΡ€ΠΎΠΊΡΠΈΡ€ΠΎΠ²Π°Π½ΠΈΠ΅ gRPC ΠΈ WebSocket.
  • ΠŸΠΎΠ΄ΠΊΠ»ΡŽΡ‡Π°Π΅ΠΌΡ‹Π΅ балансировщики Π½Π°Π³Ρ€ΡƒΠ·ΠΊΠΈ.
  • Π’ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎΡΡ‚ΡŒ измСнСния ΠΊΠΎΠ½Ρ„ΠΈΠ³ΡƒΡ€Π°Ρ†ΠΈΠΈ Π±Π΅Π· пСрСзапуска.
  • ΠŸΠΎΠ΄Π΄Π΅Ρ€ΠΆΠΊΠ° обновлСния ΠΊΠΎΠ΄Π° прилоТСния Π±Π΅Π· Ρ€Π°Π·Ρ€Ρ‹Π²Π° соСдинСний.
  • БрСдства для ΠΏΠ΅Ρ€Π΅ΠΊΠ»ΡŽΡ‡Π΅Π½ΠΈΡ Π½Π°Π³Ρ€ΡƒΠ·ΠΊΠΈ Π² случаС сбоя (failover).
  • Π˜Π½Ρ‚Π΅Π³Ρ€Π°Ρ†ΠΈΡ с Ρ€Π°Π·Π»ΠΈΡ‡Π½Ρ‹ΠΌΠΈ систСмами ΠΌΠΎΠ½ΠΈΡ‚ΠΎΡ€ΠΈΠ½Π³Π° ΠΈ вСдСния Π»ΠΎΠ³ΠΎΠ² (Syslog, Prometheus, Sentry, OpenTelemetry).
  • ΠŸΠΎΠ΄Π΄Π΅Ρ€ΠΆΠΊΠ° TLS-ΡˆΠΈΡ„Ρ€ΠΎΠ²Π°Π½ΠΈΡ (примСняСтся OpenSSL, BoringSSL ΠΈΠ»ΠΈ Rustls).
  • Π“ΠΎΡ‚ΠΎΠ²Ρ‹Π΅ Rust-ΠΏΠ°ΠΊΠ΅Ρ‚Ρ‹ для создания HTTP-прокси, Ρ€Π°Π±ΠΎΡ‚Ρ‹ с сСтСвыми ΠΏΡ€ΠΎΡ‚ΠΎΠΊΠΎΠ»Π°ΠΌΠΈ, Ρ€Π°Π·Π±ΠΎΡ€Π° Π·Π°Π³ΠΎΠ»ΠΎΠ²ΠΊΠΎΠ² HTTP, ΡƒΡ‡Ρ‘Ρ‚Π° ΠΈ ограничСния Ρ‚Ρ€Π°Ρ„ΠΈΠΊΠ°, балансировки Π½Π°Π³Ρ€ΡƒΠ·ΠΊΠΈ, Ρ€Π°Π±ΠΎΡ‚Ρ‹ с распрСдСлённой Ρ…ΡΡˆ-Ρ‚Π°Π±Π»ΠΈΡ†Π΅ΠΉ Ketama, поддСрТания кэша Π² ΠΎΠΏΠ΅Ρ€Π°Ρ‚ΠΈΠ²Π½ΠΎΠΉ памяти ΠΈ асинхронной ΠΎΠ±Ρ€Π°Π±ΠΎΡ‚ΠΊΠΈ Ρ‚Π°ΠΉΠΌΠ°ΡƒΡ‚ΠΎΠ².

Π‘Ρ€Π΅Π΄ΠΈ ΠΈΠ·ΠΌΠ΅Π½Π΅Π½ΠΈΠΉ Π² Π½ΠΎΠ²ΠΎΠΉ вСрсии:

  • Π’ΠΎ врСмя Π·Π°Π²Π΅Ρ€ΡˆΠ΅Π½ΠΈΡ Ρ€Π°Π±ΠΎΡ‚Ρ‹ обСспСчСно сохранСниС Π² Π»ΠΎΠ³Π΅ ΠΈΠΌΡ‘Π½ runtime-ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½Ρ‚ΠΎΠ² для упрощСния диагностики ΠΏΡ€ΠΎΠ±Π»Π΅ΠΌ, Π²Ρ‹Π·Π²Π°Π½Π½Ρ‹Ρ… отсутствиСм runtime-ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½Ρ‚ΠΎΠ² ΠΈ приводящих ΠΊ Π·Π°Π΄Π΅Ρ€ΠΆΠΊΠ°ΠΌ Π²ΠΎ врСмя Π·Π°Π²Π΅Ρ€ΡˆΠ΅Π½ΠΈΡ Ρ€Π°Π±ΠΎΡ‚Ρ‹.
  • Π’ΠΊΠ»ΡŽΡ‡Π΅Π½ΠΎ отслСТиваниС Ρ„Π°Π· исполнСния сСрвСра, информация ΠΎ ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Ρ… ΠΌΠΎΠΆΠ΅Ρ‚ Π±Ρ‹Ρ‚ΡŒ ΠΏΠΎΠ»Π΅Π·Π½Π° для ΠΌΠΎΠ½ΠΈΡ‚ΠΎΡ€ΠΈΠ½Π³Π° ΠΈΠ»ΠΈ обСспСчСния отказоустойчивости. ΠŸΡ€ΠΈ смСнС Ρ„Π°Π·Ρ‹ исполнСния гСнСрируСтся сообщСниС ExecutionPhase, ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠ΅ ΠΌΠΎΠΆΠ½ΠΎ ΠΏΠ΅Ρ€Π΅Ρ…Π²Π°Ρ‚ΠΈΡ‚ΡŒ Ρ‡Π΅Ρ€Π΅Π· API Server::watch_execution_phase.
  • Π Π°Π·Ρ€Π΅ΡˆΠ΅Π½ΠΎ Ρ€Π°Π·ΠΌΠ΅Ρ‰Π΅Π½ΠΈΠ΅ Π² памяти сТатых словарСй.
  • Π’ Ρ€Π΅Π°Π»ΠΈΠ·Π°Ρ†ΠΈΠΈ http-сСрвСра ΠΈ http-прокси Π΄ΠΎΠ±Π°Π²Π»Π΅Π½Ρ‹ Π΄ΠΈΡ€Π΅ΠΊΡ‚ΠΈΠ²Ρ‹ HttpServerOptions ΠΈ H2Options.
  • Π Π΅Π°Π»ΠΈΠ·ΠΎΠ²Π°Π½Π° Π·Π°Ρ‰ΠΈΡ‚Π° ΠΎΡ‚ Π°Ρ‚Π°ΠΊΠΈ MadeYouReset, ΠΏΠΎΠ·Π²ΠΎΠ»ΡΡŽΡ‰Π΅ΠΉ Π²Ρ‹Π·Π²Π°Ρ‚ΡŒ ΠΎΡ‚ΠΊΠ°Π· Π² обслуТивании Ρ‡Π΅Ρ€Π΅Π· ΠΌΠ°Π½ΠΈΠΏΡƒΠ»ΡΡ†ΠΈΡŽ ΡƒΠΏΡ€Π°Π²Π»ΡΡŽΡ‰ΠΈΠΌΠΈ ΠΊΠ°Π΄Ρ€Π°ΠΌΠΈ HTTP/2.

Π˜ΡΡ‚ΠΎΡ‡Π½ΠΈΠΊ: opennet.ru

Π”ΠΎΠ±Π°Π²ΠΈΡ‚ΡŒ ΠΊΠΎΠΌΠΌΠ΅Π½Ρ‚Π°Ρ€ΠΈΠΉ