Skip to content

Czym jest Rapira? ​

Rapira to serwer aplikacji PHP napisany w języku Rust.

Opiekunowie projektu RoadRunner projektują i implementują Rapirę. Rapira wywołuje PHP bezpośrednio w procesie serwera.

Rapira obsługuje HTTP i gRPC. Każdy protokół ma własny nasłuch i pulę workerów PHP.

Na blogu znajdują się aktualności projektu.

HTTP ​

Rapira zawiera serwer HTTP, który używa biblioteki hyper. Przyjmuje nieszyfrowane połączenia HTTP/1.1 i HTTP/1.0. Rapira nie kończy TLS. Proxy kończące TLS przyjmuje HTTPS od klienta, odszyfrowuje połączenie i wysyła nieszyfrowany HTTP do Rapiry. Konfigurację proxy opisuje Wdrożenie produkcyjne.

Rapira obsługuje trzy tryby wykonania PHP:

  • Classic: Rapira inicjalizuje aplikację dla każdego żądania, tak jak php-fpm.
  • Worker: Rapira inicjalizuje aplikację raz. Pętla obsługuje żądania, a Rapira ponownie wypełnia superglobale PHP dla każdego żądania.
  • Dispatcher: Rapira inicjalizuje aplikację raz. Skrypt pobiera obiekty żądań przez wywołanie API. Każdy worker obsługuje jedno żądanie naraz.

Strona Tryby wykonania opisuje działanie trybów i kryteria wyboru.

gRPC ​

Rapira obsługuje unarne wywołania gRPC, gRPC-Web i Connect na jednym nasłuchu. Aplikacja PHP odbiera i zwraca binarne komunikaty protobuf przez dyspozytora. Proces nadrzędny wczytuje schematy usług z zestawu deskryptorów przed uruchomieniem workerów.

Pula gRPC używa trybu Dispatcher. HTTP i gRPC mogą działać razem z osobnymi skryptami wejściowymi. Kompletną usługę, generowanie klas protobuf i polecenia klienta opisuje gRPC.

Metryki i kontrole stanu ​

Opcjonalna tabela [observability] uruchamia jeszcze jeden proces, który nie wykonuje PHP. Podtabela [observability.metrics] włącza metryki Prometheus pod adresem /metrics. Podtabela [observability.probes] włącza sondy /livez i /readyz. Konfigurację i punkty końcowe opisuje Metryki i kontrole stanu.