米CoreOS、分散型キーバリューストア「etcd 3」を発表
米CoreOSは6月30日、分散型のKey-Valueストア「etcd v3.0.0」を発表した。メッセージプトロコルがJSONからgRPCになるなどの変更が加わっている。
etcdはCoreOSアップデートのためのマシン間の協調問題を解決することを目的に設計されたKey-Valueストア。HTTP/HTTPSでアクセスできるエンドポイントを持ち、継続的なキーのアップデートのモニタリング、TTL(Time-to-Live)キーなどの機能を備える。現在では分散型ネットワークの構築やディスカバリ、スケジューリング、負荷分散などのサービス向けに利用されているという。
etcd3はすでにKubernetsなどの大規模な分散システムに統合されており、今回GA(一般提供)というステータスとなった。本リリースではAPIを一新したetcd3 APIおよびデータモデルが採用されているいっぽう、etcd2と同じJSONエンドポイントも提供することから容易にアップグレードを行えるという。
サーバーのインターフェイスが、JSONに代わってGoogleが開発したgRPCとなった。gRPCはHTTP/2を利用するRPCフレームワークであり、プロトコルメッセージはprotobufを利用して定義する。etcd2のクライアントサイドのJSONパーシングを最適化した場合と比較して、2倍以上の性能を実現するという。JSONエンドポイントのサポートはgRPCgateway経由で管理される。
ストアにおけるキーの有効期限を管理も改善した。最新版ではこれまでのTTL(time-to-live)に代わって、リースメカニズムを採用する。これまではキーがTTLを持つことから、有効期間切れによる自動削除が発生しないように、キー毎でクライアントを周期的にリフレッシュする必要があった。リースメカニズムではTTLを持つリースがキーに紐付けされるようになり、TTLの有効期間が切れると、紐付いたキーを全て削除することになる。これによってキープアライブのためのトラフィックを削減できるとしている。
このほか、キーの変更を待つウォッチ機能も強化した。ZooKeeperなどがウォッチリクエストにつき1イベントを返すのに対し、現在のリビジョンからの変更を継続的に見るという。etcd3 APIは単一の接続でwatchを多重化できるため、クライアントは双方向のgRPCストリームのウォッチャーを登録できるという。
そのほか、データモデルや並列の制御なども強化されている。