Konečně jsme po dni stráveném dírou zprovoznili gRPC v #dstack! Protože brána dstack dokáže zabalit libovolný TCP do TLS, předpokládal jsem, že to prostě bude fungovat. Nestalo se tak.
Klíčový detail: gRPC běží na protokolu HTTP/2. Protokol HTTP/2 obvykle spoléhá na ALPN (Application-Layer Protocol Negotiation) během metody handshake protokolu TLS.
Představte si ALPN jako okamžik, kdy se obě strany dohodnou, kterým protokolem budou mluvit (h2 pro HTTP/2), než si vymění jakákoli skutečná data. Pokud se tento krok nezdaří, připojení se vrátí k protokolu HTTP/1.1, který gRPC nemůže použít.
Aby brána správně zpracovávala gRPC, musí: 1️⃣ Podpora HTTP/2 end-to-end 2️⃣ Vyjednejte h2 s ALPN během handshake TLS 3️⃣ Zachování binárních rámců a upoutávek gRPC Pokud některou z nich vynecháte, uvidíte podivné zamrznutí, chybějící chyby nebo přerušené streamy.
689