Finalmente abbiamo fatto funzionare gRPC in #dstack dopo aver trascorso un'intera giornata! Poiché il gateway dstack può incapsulare qualsiasi TCP in TLS, pensavo che avrebbe funzionato senza problemi. Non è stato così.
Il dettaglio chiave: gRPC funziona su HTTP/2. HTTP/2 si basa tipicamente su ALPN (Application-Layer Protocol Negotiation) durante il handshake TLS.
Pensa all'ALPN come al momento in cui entrambe le parti concordano quale protocollo utilizzare (h2 per HTTP/2) prima di scambiare dati reali. Se questo passaggio fallisce, la connessione torna a HTTP/1.1 — che gRPC non può utilizzare.
Per gestire correttamente gRPC, un gateway deve: 1️⃣ Supportare HTTP/2 end-to-end 2️⃣ Negoziare h2 con ALPN durante il handshake TLS 3️⃣ Preservare il framing binario e i trailer di gRPC Se manca uno di questi requisiti, potresti riscontrare strani blocchi, errori mancanti o flussi interrotti.
531