豪鬼メモ

一瞬千撃

gRPCでのSSL暗号化と認証

gRPCの通信ををSSL/TLSの暗号化で保護するとともに、クライアント認証をX.509証明書で行えるように、Tkrzw-RPCのサーバとクライアントライブラリを改良した。gRPCではSSL/TLSだけでなく、ALTSやToken-based認証も使えるのだが、まずは手軽かつ歴史のあるなSSL/TLSの対応から取り組む。SSL化したことによる各言語のスループットの影響は以下のようになる。EchoのスループットC++で75%ほどに低下するが、それが許容範囲であれば実用できる。
f:id:fridaynight:20211028040306p:plain

続きを読む

gRPCのJavaクライアントライブラリ

データベースライブラリTkrzwのgRPCサービスにJavaで接続して操作するためのライブラリを実装した。これにて、当初予定していたC++JavaPythonRuby、Goの全てを網羅したので、gRPCのクライアントライブラリを書きまくる旅は終了だ。この記事では、簡単な使い方と性能評価を紹介する。Echo操作の結果を1、2、4スレッドで変えてスループットを測定した場合の結果は以下のようになる。
f:id:fridaynight:20211026011911p:plain

続きを読む

gRPCのJava版のアプリケーションを手動またはmakeでビルドする方法

gRPCのJava版のチュートリアルには、Gradleを使ったビルド方法だけが説明されている。Java界隈ではMavenやGradleがビルドツールとしてよく使われているのは知っているが、私はmakeが使いたい。よって、まずはビルドツールを使わずに個々の手順を進める方法を明らかにした上で、それをMakefileにまとめる。

続きを読む

DBMでメッセージキューイング その1 メッセージキューサービスの利用法

前回の記事で、メッセージキューを実現するための要素技術について論じた。今回は、それを実際にTkrzw-RPCのサーバに組み込んで、分散処理を行うデモを紹介する。Go、PythonRubyが一気に出てくるお得な記事だ。
f:id:fridaynight:20211021134932p:plain

続きを読む

DBMでメッセージキューイング その0 準備

単純なkey-valueストレージであるDBMを使ってメッセージキューを実現するにはどうすればよいかという思考実験をした上で、実装もしてしまおうという企画。初回は、機能要件と要素技術を検討する。
f:id:fridaynight:20211017031155p:plain

続きを読む

gRPCクライアントの各言語の性能比較

Tkrzw-RPCのクライアントがC++PythonRuby、Goで出揃ったので、簡単な性能テストをしてみた。以下は1スレッドのスループットをグラフにしたものだ。単位はQPS。
f:id:fridaynight:20211011171320p:plain

続きを読む

Tkrzw-RPCのGoクライアントライブラリ

PythonRubyのクライアントライブラリを書いたので、次はGoだ。gRPC界隈ではGoがよく使われるようなので、優先度高めで着手した。詳しいことはAPI文書をご覧いただきたいが、簡単な使い方をここでも紹介する。

続きを読む

Fedoraパッケージ対応とmmapに関する話

TkrzwのFedora用のパッケージを作ってくれている人から不具合報告を貰っていた。その不具合はPowerPC 64ビットの特定の環境でしか起こらないらしい。その不具合が手元で再現できないので、何が問題なのかもわからず、しばらく直せないでいた。その原因をやっと昨日つきとめて、自分の浅はかさを知るとともに、システムプログラミングの奥深さを感じた。その経緯の与太話である。

続きを読む

Tkrzw-RPCのRubyクライアントライブラリ

前回の記事Pythonのクライアントライブラリを紹介したが、Rubyのクライアントライブラリも実装できたので、今回はそれを紹介する。詳しいことはAPI文書をご覧いただきたい。

続きを読む

Tkrzw-RPCのPythonクライアントライブラリ

DBサービスを作ろうの一連の連載が終了し、無事DBサービスが完成したので、クライアントライブラリを作る旅に出ている。とりあえずPython版ができたので、使い勝手などを説明したい。Tkrzw-RPC本体については、スライドの方をご覧頂きたい。

続きを読む