Lanzamiento de Pingora 0.4, un marco para crear servicios de red

La empresa Cloudflare ha publicado la versión 0.4 del marco Pingora, diseñado para desarrollar servicios de red seguros y de alto rendimiento en el lenguaje Rust. El proxy construido con Pingora se ha utilizado durante más de dos años en la red de distribución de contenido de Cloudflare en lugar de nginx y procesa más de 40 millones de solicitudes por segundo. El código está escrito en Rust y se publica bajo la licencia Apache 2.0.

Funciones principales de Pingora:

  • Soporte para HTTP/1 y HTTP/2 (planeando HTTP/3), así como la capacidad de crear servicios que utilicen sus propios protocolos o UDP/TCP.
  • Soporte para el procesamiento multihilo de solicitudes de manera asincrónica.
  • Capacidad para adjuntar manejadores de callback y filtros que permiten gestionar diversas etapas del procesamiento de solicitudes, así como modificar, redirigir, bloquear y registrar solicitudes y respuestas.
  • Proxy para gRPC y WebSocket.
  • Balanceadores de carga plug-in.
  • Posibilidad de cambiar la configuración sin reiniciar.
  • Soporte para la actualización del código de la aplicación sin interrumpir las conexiones.
  • Herramientas para la conmutación por error (failover) en caso de fallo.
  • Integración con diversos sistemas de monitoreo y registro (Syslog, Prometheus, Sentry, OpenTelemetry).
  • Soporte para cifrado TLS (utilizando OpenSSL, BoringSSL o Rustls).
  • Paquetes de Rust listos para crear proxies HTTP, trabajar con protocolos de red, analizar encabezados HTTP, contabilizar y limitar el tráfico, balancear carga, trabajar con tableros hash distribuidos Ketama, mantener caché en memoria y procesamiento asíncrono de timeouts.

Entre los cambios en la nueva versión:

  • Soporte inicial para la biblioteca criptográfica Rustls, que utiliza proveedores de criptografía basados en las bibliotecas aws-lc-rs y ring, que están basadas en BoringSSL.
  • Soporte experimental para la plataforma Windows.
  • Modo de TLS ficticio (dummy TLS), que se puede aplicar en situaciones donde no es posible utilizar una implementación real de TLS.
  • Se ha añadido soporte para el módulo gRPC-web para traducir solicitudes de clientes gRPC-web a solicitudes de servidor gRPC.
  • Se ha proporcionado la capacidad de manejar conexiones H2C (HTTP/2 sobre TCP desnudo, sin cifrado) y HTTP/1 en un solo puerto de red.
  • Se ha añadido la posibilidad de conectar implementaciones personalizadas de la función connect() para modificar el comportamiento al establecer una conexión de red, por ejemplo, para establecer opciones adicionales para el socket o simular errores durante las pruebas.
  • Se ha proporcionado la capacidad de ignorar respuestas informativas al hacer proxy, como las respuestas con el encabezado «Expect: 100-continue».
  • Se ha añadido soporte para descomprimir respuestas comprimidas mediante gzip.
  • Se ha implementado la gestión del estado del backend con fines de monitoreo.
  • Se ha añadido la posibilidad de enlazar a un rango de puertos locales.

Fuente: opennet.ru

Compra un hosting fiable para sitios web con protección contra DDoS, servidores VPS VDS 🔥 Compra un hosting fiable para sitios web con protección contra DDoS, servidores VPS VDS | ProHoster