プロトコル仕様

メッセージ
sentinelのプロトコルは次のような要求を満たすためjson形式のメッセージ交換
を採用しています。

・構造を表現可能
・実装しやすい
・コンピュータにパースさせるのが楽
・人間がパースするのも十分に簡単

json形式ではメッセージの終端を検出することが面倒なので、終端を示すために
\r\nだけの空行を最後に付与します。
例えば、接続時にsentinelサーバからクライアントへ送信されるメッセージは次のような
形式になります。

------------------
{
	"login":{
		"nonce":"PyFO4zZIes.Kc1DBKCDkD/",
		"algorithm":"MD5"
	}
	"server":{
		"server1":{"load":30,"port":1119}
		"server2":{"load":50,"port":1119}
	}
}
(\r\nだけからなる空の行）
------------------

ネットワークレイヤー
sentinelのクライアントは、ポート1119でサーバに接続しに行くことでコネクションを張ります。
クライアント・サーバ間でやりとりされる、すべてのsentinelコマンドやデータは上記メッセージで
表現します。

ユーザアカウント
sentinelはユーザアカウントを維持します。接続するクライアントは登録済みのアカウントか
新しくアカウントを登録して接続を行います。

コネクション指向
sentinelとクライアントの接続はどちらかが切断するまで継続し、同じ接続の中で複数のメッセージを
交換します。

ステート指向
sentinelとクライアントの接続は、交換するコマンドの内容に従って状態が変化します。



