
これは、実際のラプランダー(1つの 'p')についてではありません。 これは、LAppSマイクロサービスアプリケーションサーバーに関するものです。
興味があれば、猫をお願いします。
LAppSに関する最初の公開からわずか6日が経過しました 。 この6日間で、LAppSはバージョン0.6.2に更新され、いくつかの便利な機能を取得しました。
大きな変化
これで、着信WebSocketメッセージのキューに依存しないサービスを実行できます。 これらのサービスの呼び出し方法がよくわかりません。
スタンドアロン、分離、内部? これらのサービスの主なポイントは、それらが「リーディング」であるということです。 フローアプリケーションを定義します。 彼らは独立して外界との相互作用のルールを確立します。 LAppSのサービスは、以前はIOWorker I / Oをブロックしませんでしたが、WebSocket従属メッセージキューという1種類のサービスしかありませんでした。
例として、同様のサービスでLAppSを実行するHTTPサーバーコードの実行を提案したいと思います。 このために、 KeplerプロジェクトのXavante HTTPサーバーが使用されます(以下を参照)。
その他の機能
「Lapplanders」の下でXavanteを起動します
警告: xavanteサーバーは、SSLサポートのないHTTP 1.1サーバーです(つまり、トラフィックのバランスと暗号化のために、nginxまたはH2Oの形式のSSLフロントエンドが必要です)。 ここでは、フロントエンドのセットアップは考慮されていません。
これに必要なもの
- luarocks OSディストリビューションからインストールされます。
- LAppS-0.6.2をインストールしました。 (インストールオプションは、プロジェクトwikiで表示できます 。たとえば、準備済みのdebパッケージを使用するか、 Dockerファイルを使用してインストールします)
- xavanteプロジェクトWebサイトの 指示に従ってインストールされます(2ステップKarl!)
サービスコードhttp.lua
コードはxavante manualからコピーされ、LAppSサービスコードに貼り付けられます。
local xavante = require "xavante" local hfile = require "xavante.filehandler" local hredir = require "xavante.redirecthandler" http = {} http.__index = http http["init"]=function() webDir = "/tmp/test/"; end http["mustStop"]=function() return must_stop() end http["run"]=function() local simplerules = { {
LAppSを起動する前に
なぜなら xavanteの場合、htmlファイルのファイルシステムのルートを指定しましたlua webDir = "/tmp/test/";
、このディレクトリにindex.htmlを配置する必要があります
便利なものと快適なものを組み合わせて、 サンプルのclient.html(名前を変更)をcbor.js.ライブラリと一緒に(名前を変更)しましょう。
このクライアントは3つのサービスを使用します。
- echo_lapps -LAppSプロトコルの仕様に従って動作するエコーサーバー。
- time_broadcast -1秒のパルス
- broadcast_blob-送信されたメッセージの自動断片化のテスト用のブロードキャストブロブ(サイズは最大4k)(5秒のパルス)。
したがって、これらの4つのサービス( xavanteを含む)の構成ファイルを作成します。
{ "directories": { "applications": "apps", "app_conf_dir": "etc", "tmp": "tmp", "workdir": "workdir" }, "services": { "echo_lapps" : { "internal" : false, "request_target" : "/echo_lapps", "protocol" : "LAppS", "instances" : 3, "max_inbound_message_size" : 1024 }, "http": { "internal": true, "instances": 1 }, "time_broadcast": { "internal": true, "instances": 1 }, "broadcast_blob": { "internal": true, "instances": 1 } } }
設定(lapps.json)は、/ opt / lapps / etc / conf /に配置する必要があります。
debパッケージからLAppSをインストールした場合、デモアプリケーション自体をインストールする必要があります。 ソースからインストールした場合は、コマンドmak install-examplesを入力するだけです。
その後、Laplandersを起動します:/ opt / lapps / bin / lapps
デーモンモードで起動するには、-dオプションを追加できます。
ブラウザでhttp:// localhostを実行すると(インストールがlocalhostにあった場合)、アプリケーションの動作(CPDVなど)を確認できます。echo-rpsバーチャートの移動、時間通知、インスペクターを開くと、コンソールに表示されるblob 。
興味深い(またはそうでない)詳細
http.luaサービスコードでは、 must_stop()グローバル関数の呼び出しに注目できます。 LAppSがアプリケーションを停止したい場合、この関数はtrueを返します。 この関数は、初期化される前にすべての分離されたサービスに注入されます。
分離されたサービスのインターフェイスは簡素化されています。 これらはすべて同じLuaモジュールですが、それらで宣言する必要があるのは、 init()およびrun()の 2つのメソッドだけです。 それらの名前から明らかなように、最初のものは初期化コード、2番目はサービスの実行に使用されます。
私は計画があります:
- 「食いしん坊」Lapplanders「」-valgrindとgperftoolsを使用したメモリ消費とCPUの研究。
- "Railwayman"-STLのstd ::スレッドがLAppSで使用されないが、std :: mutexおよびstd :: atomicが使用される理由について。 以下は調査です。 ハブでLAppSの出版物が必要かどうか
また、LAppSの開発の支援も必要です。 最も単純な。 それをテストすることに興味のある人が必要であり、機能のリクエストが必要です。
原則として、 多くの計画がありますが、多分他の誰かが私には見えない何かから利益を得るでしょう。