Cloudflare нь Rust хэл дээр аюулгүй, өндөр гүйцэтгэлтэй сүлжээний үйлчилгээг хөгжүүлэхэд зориулагдсан Pingora 0.4 хүрээний хувилбарыг нийтэллээ. Pingora ашиглан бүтээсэн прокси нь Nginx-ийн оронд Cloudflare контент хүргэх сүлжээнд хоёр жил гаруй ашиглагдаж байгаа бөгөөд секундэд 40 сая гаруй хүсэлтийг боловсруулдаг. Код нь Rust дээр бичигдсэн бөгөөд Apache 2.0 лицензийн дагуу хэвлэгдсэн.
Pingora-ийн гол онцлогууд:
- HTTP/1 ба HTTP/2 (төлөвлөгөөнд байгаа HTTP/3), мөн өөрсдийн протокол эсвэл UDP/TCP ашиглан үйлчилгээ үүсгэх боломжтой.
- Асинхрон горимд хүсэлтийг олон урсгалтай боловсруулахад дэмжлэг үзүүлэх.
- Хүсэлт боловсруулах янз бүрийн үе шатуудыг удирдах, хүсэлт, хариуг өөрчлөх, дахин чиглүүлэх, блоклох, бүртгэх боломжийг олгодог буцаан дуудлагын зохицуулагч, шүүлтүүрийг хавсаргах чадвар.
- gRPC болон WebSocket-ийг проксилж байна.
- Холбох боломжтой ачаалал тэнцвэржүүлэгч.
- Дахин эхлүүлэхгүйгээр тохиргоог өөрчлөх боломжтой.
- Холболтыг таслахгүйгээр програмын кодыг шинэчлэх дэмжлэг.
- Гэмтсэн үед ачааллыг солих хэрэгсэл (ажиллуулах).
- Төрөл бүрийн хяналт, бүртгэлийн системүүдтэй (Syslog, Prometheus, Sentry, OpenTelemetry) нэгтгэх.
- TLS шифрлэлтийн дэмжлэг (OpenSSL, BoringSSL эсвэл Rustls ашиглан).
- HTTP прокси үүсгэх, сүлжээний протоколуудтай ажиллах, HTTP толгойг задлах, траффикийг бүртгэх, хязгаарлах, ачааллыг тэнцвэржүүлэх, Кетама тараагдсан хэш хүснэгттэй ажиллах, RAM дахь кэш хадгалах, завсарлагааны асинхрон боловсруулахад зориулагдсан бэлэн Rust багцууд.
Шинэ хувилбарт орсон өөрчлөлтүүдийн дунд:
- Rustls криптографийн номын санд aws-lc-rs дээр суурилсан крипто үйлчилгээ үзүүлэгчид болон BoringSSL дээр суурилсан бөгж сангуудыг ашиглан анхны дэмжлэг.
- Windows платформын туршилтын дэмжлэг.
- Бодит TLS хэрэгжилтийг ашиглах боломжгүй нөхцөлд ашиглах боломжтой дамми TLS горим.
- gRPC-web клиентийн хүсэлтийг хүсэлт болгон хөрвүүлэх gRPC-web модулийн дэмжлэгийг нэмсэн. сервер gRPC.
- Нэг сүлжээний порт дээр H2C (HTTP/2, нүцгэн TCP, шифрлэлт байхгүй) болон HTTP/1 холболтыг зохицуулах боломжийг олгодог.
- Сүлжээний холболт үүсгэх үед зан төлөвийг өөрчлөх, жишээлбэл сокетийн нэмэлт тохируулгуудыг тохируулах эсвэл туршилтын явцад гарсан алдааг дуурайх зорилгоор connect() функцын өөрийн хэрэгжилтийг холбох чадварыг нэмсэн.
- Прокси хийх үед "Хүлээж байна: 100-үргэлжлүүлэх" толгойтой хариулт гэх мэт мэдээллийн хариуг үл тоомсорлох боломжийг олгосон.
- Gzip-ээр шахагдсан хариултуудыг задлахад дэмжлэг нэмсэн.
- Хяналтын зорилгоор арын төлөвийн бүртгэлийг хэрэгжүүлсэн.
- Олон тооны дотоод портуудтай холбогдох боломжийг нэмсэн.
Эх сурвалж: opennet.ru
