www.infoq.com
昨日 18:55
Cloudflare Workers Accept Inbound TCP, with gRPC the First Protocol on Top
Cloudflare WorkersがconnectメソッドによるインバウンドTCP接続の受け入れに対応し、gRPCを最初のプロトコルとして実装した。Durable ObjectやContainer経由でGo/Python製のgRPCサーバーをそのまま動かせる一方、Worker単体ではHTTP/2のストリーム制御をfetch()が公開できない制約からgRPC-Web変換によるunary/server-streamingのみサポートし、双方向ストリーミングは非対応。Cloudflare自身はgRPCではなくCap'n Proto/Cap'n Webを内部利用しており、現時点ではプライベートベータ。
Cloudflare WorkersがconnectメソッドによるインバウンドTCP接続の受け入れに対応し、gRPCを最初のプロトコルとして実装した。Durable ObjectやContainer経由でGo/Python製のgRPCサーバーをそのまま動かせる一方、Worker単体ではHTTP/2のストリーム制御をfetch()が公開できない制約からgRPC-Web変換によるunary/server-streamingのみサポートし、双方向ストリーミングは非対応。Cloudflare自身はgRPCではなくCap'n Proto/Cap'n Webを内部利用しており、現時点ではプライベートベータ。
nulab.com
3日前
Orchestrionの自動計装でDatadogのトレースが爆発した話
BacklogのGit機能マイクロサービスにOrchestrionでDatadog APM自動計装を導入した際、net/httpとgorilla/muxの二重計装によるスパン重複と、gRPC StreamClientInterceptorが別goroutineでFinish()を呼ぶことによるGLS(goroutine-local storage)リークが原因で、無関係なリクエストのトレースがkeep-aliveコネクション上で数珠つなぎに混在する問題が発生した。gRPC integrationを無効化し手動計装に切り替えることで解消し、再発防止のためlintで禁止importを機械的に検出する仕組みも整備した。
BacklogのGit機能マイクロサービスにOrchestrionでDatadog APM自動計装を導入した際、net/httpとgorilla/muxの二重計装によるスパン重複と、gRPC StreamClientInterceptorが別goroutineでFinish()を呼ぶことによるGLS(goroutine-local storage)リークが原因で、無関係なリクエストのトレースがkeep-aliveコネクション上で数珠つなぎに混在する問題が発生した。gRPC integrationを無効化し手動計装に切り替えることで解消し、再発防止のためlintで禁止importを機械的に検出する仕組みも整備した。