理系学生日記

おまえはいつまで学生気分なのか

2019-05-01から1ヶ月間の記事一覧

gRPC で golang server/node client を SSL に対応させる

今回は、gRPC で SSL 通信を行おうと思います。 環境としては、サーバは golang、クライアントは node.js という構成です。 ルート認証局、証明書を作成する。 golang の gRPC サーバに組み込む Node.js client を SSL に対応させる node のソース ルート認…

node.js の gRPC clientで client side keep-alive (定期的な PING frame 送出)を実現する

gRPC では HTTP/2 を使っており、HTTP/2 では 1 本の TCP のコネクションの上で stream を多重化します。このため、TCP のコネクションはずっと張りっぱなしになることが多く、どのようにしてこのコネクションを維持するかが重要な場合があります。 問題とな…

gRPC 関連でデバッグを行うときに指定すると便利かもしれない環境変数たち

Go で gRPC 周りをデバッグするときに設定しているとデバッグするのが楽になる環境変数がいくつかあります。このあたり、情報が色んな所に散財しているので、ちょっとまとめますね。 GODEBUG その他 GRPC_VERBOSITY, GRPC_TRACE GRPC_GO_LOG_SEVERITY_LEVEL,…

golang でのデバッグに非常に便利な go tool trace

なぜかおかしな振る舞いをするサーバプログラムをデバッグするというのは、それなりに骨の折れる作業です。大量のソースを前に「ここが怪しい」と言いながらデバッグログを埋め込むこともあるでしょう。また、lsof や ss といったコマンドやスタックトレース…

zshのターミナル環境を変更したらモチベーションアップした

雑談ネタです。 4 月に入り、自宅の Mac をクリーンインストールし直しました。 最近どうも多忙にかまけてしまい、この Blog も含めて自宅での IT 関連のモチベーションが湧かない状況でした。全てを一新することで、もう一度あの熱い想いを思い出せないか、…

vscode-proto3 利用時に `spawnSync clang-format ENOENT`

Protocol Buffer の proto ファイルを VS Code で編集するにあたって便利なのが vscode-proto3 です。 こちらを割と使っていたのですが、いつの間にか spawnSync clang-format ENOENT というエラーが出るようになってしまいました。ver. は 0.2.2。 原因 メ…

Protocol Buffer で時刻(タイムスタンプ)を扱いたい

API でのリクエスト、レスポンスのフィールドとして、タイムスタンプを定義したいときがあります。 しかし、Protocol Buffer の言語仕様上、Scalar として日付、時刻関連の型は定義されていません。このようなとき、どのように対処すれば良いでしょうか。 日…

gRPC の Server Streaming RPC で HTTP/2 の挙動を確認してみる

先日は gRPC の Unary RPC で HTTP/2 の挙動を確認してみました。 gRPC Unary RPC で HTTP/2 の通信を追ってみる - 理系学生日記はてなブックマーク- gRPC Unary RPC で HTTP/2 の通信を追ってみる - 理系学生日記 今日は、gRPC の Server Streaming RPC を…

gRPC Unary RPC で HTTP/2 の通信を追ってみる

gRPC でいろいろとトラブルが起きており、そのトラブルシュートをしようと思っています。 しかし、gRPC は HTTP/2 の上で動作するプロトコルであり、HTTP/2 の RFC を見ても、イマイチ HTTP/2 が見えてこない。HTTP/2 のプロトコルが見えないと、gRPC の挙動…

Wireshark で gRPC・HTTP/2 通信をキャプチャしても TCP としか判定されない

gRPC、および、その下で使われている HTTP/2 について、パケットキャプチャして解析しようとしていました。 パケットキャプチャといえば、wireshark ですが、gRPC の通信をキャプチャしても、gRPC でも HTTP/2 でもなく、TCP としか判定されないということになって…