メッセージサーバー実験向けプログラム

[機能]
クライアントで入力したメッセージを、クライアントごとに用意したmemcachedサーバに送信日時をキーに登録し、
登録したメッセージをサーバプログラムで収集して時系列に表示する機能を提供します。
実験ようですので、単純な機能でエラー処理なども考慮していません。


[ファイル構成]
msgserver/	メッセージサーバ実験プログラム
	msgsrv.py		メッセージ収集・表示サーバ
	config.json		設定ファイル
	sendmsg.py		メッセージ送信クライアント


[構成]
メッセージサーバはmemcachedとメッセージ収集・表示サーバ(msgsrv.py)プログラムの２つの機能で構成されます。
memcachedは環境対応したものを入手して動作させてください。

メッセージ送信は()を使用して行います。
なお、以下に示すように日時をキーに文字列メッセージを格納するだけの簡単なデータ構造ですので、
クライアントプログラムは提供のものでなくても間単に操作可能です。


[データ保存形式]
memcachedのKEY:VALUE形式で保存します。
・KEY   -> 日時(YYYYMMDDhhmmss)
・VALUE -> 任意の文字列


[環境]
提供プログラムはPythonで実装しているのでPythonの実行環境が必要です。

メッセージサーバを動作させる環境には、memcachedとPython3環境とPython3用のpython-memcachedおよびrequestsの
インストールが必要です。
ラスベリーパイでの場合、Python3や幾つかのライブライはインストールされているので以下の手順で環境を構築できます。

$ sudo apt install memcached
$ sudo apt install python3-memcache

メッセージ送信のクライアント環境は、Python3環境とPython3用のpython-memcachedおよびrequestsのインストールが必要です。

Python3がインストールされた環境であれば、以下の手順で環境構築します。

$ pip install python-memcached requests

Python3がインストールされていない場合には各OS用のPython3のインストールも必要です。
ここではインストールの手順は割愛します。



[プログラムの機能]

msgsrv.py：メッセージ収集・表示サーバ
	全てのmemcachedからメッセージを取り出し時系列に表示します。
	メッセージはキーを "年月日時分秒" の形式として保存されているので、指定日時から1秒ごとにキーを生成しメッセージを取得します。
	各memcachedサーバから同じ日時のデータを取り出したところでメッセージを表示し次の日時のデータ取得に進みます。
	取り出したデータはサーバから削除します。
	全てのmemecachedサーバ上ぼデータがなくなったらサーバプログラムは終了します。

	config.jsonは設定ファイルでmemcachedサーバのアドレス(IP:ポート)とクライアント名の組み合わせをJSONの配列で定義します。
	(設定例)
	{
	    "servers":[
	    	{"name":"cl1", "address":"192.168.3.11:22222"},
		{"name":"cl2", "address":"192.168.3.11:33333"}
	     ]
	}

sendmsg.py：メッセージ送信クライアント
	メッセージをmemcachedサーバに保存するプログラムです。
	プログラムを起動すると文字列の入力待ちになり、文字列を入力してリターンを押すと、入力した文字列が送信日時をキーとして
	memcachedサーバに保存されます。
	送信先のmemcachedサーバはプログラム中のmc_addr変数に "IPアドレス:ポート番号" の形式で指定します。

	文字列に auit を入力数rとプログラムが終了します。



[構成]

＜クライアント環境＞            ＜メッセージサーバ環境＞

メッセージ送信                  キャッシュサーバー                        メッセージ収集・表示サーバ
  sendmsgpy          -------->        memcached        --------------->       msgsrv.py                  --------------------> 画面
                    メッセージ登録                      日時指定で                                       クライアント名を
		                                        メッセージ取り出し                               付与してメッセージ表示

システムは、最低限以下の３つのコンポーネントを動作させます。
・memcachedサーバ             x 1
・メッセージ収集・表示サーバ  x 1
・メッセージ送信クライアント  x 1

複数箇所からのメッセージを保存する場合は、memcachedサーバとメッセージ送信クライアントをセットで増やして行きます。





以上



