スクラムジェット変換ハブクイックスタート入門



スクラムジェット変換ハブクイックスタート入門
スクラムジェット変換ハブを使用すると、シーケンスと呼ばれる複数のデータ処理アプリケーションを展開して実行できます.

Sequences are specific apps, not just any apps. They specialize in the efficient data processing.


STHは、同じプラットフォーム上で実行され、様々なデータ処理タスクを実行する複数のシーケンスのデータ処理エンジンと実行プラットフォームの両方を扱うことができます.
我々は我々のアプリ“シーケンス”と命名され、その用語はよく、その性質を説明し、彼らは連鎖関数のシーケンスを介してデータを処理します.したがって、通常、我々のシーケンスは簡潔で、書くのが簡単で、同時に強力です.
我々のバニラSthエンジンは、ノードに基づきます.JSは、このように、開発者が豊かな生態系と多くのパッケージと解決この活気のあるコミュニティによって提供される恩恵を受けることができます.
sthエンジンのコア部分は“host”と呼ばれます.

The Host is responsible for maintaining and deploying sequences, keeping them running, and managing their lifecycle.


ホストは、データを提供して、受けて、シーケンスとホスト自体を管理するために、それ自身のREST APIも公開します.
ホストレベルでも、シーケンス内のデータ処理の実行を最適化し、高速化するためのアルゴリズムのセットを適用します.
あなたは、それを実行し、監視の両方のシーケンス展開を支援する当社の専用Sth CLIを使用してホストと対話することができます.

2 .解概念図


2.1入力
  • sthはノードで扱うことができる任意の入力を処理できます.JSアプリケーション.
  • あなたは、開発者として、テキスト、JSON、XML、SOAP、オーディオ、ビデオ、およびその他のようなあなたのシーケンスアプリケーションの様々な入力を処理するために自由です.
  • 入力はどちらか
  • その残りのAPIを通してsthに提供されます;or
  • アプリによって様々なローカルまたはリモートのソースから消費ストリーム、stdin、file、api、URLなど
  • アプリ自体によって生成

  • 2.2ホスト
    これは、次の主要なコンポーネントを使用したソリューション中央処理と管理ユニットです.
  • シーケンス-これらは実際の“sth”アプリです.gzipパッケージです.*.tar.gz ) 少なくとも2つのファイルを含む

  • パッケージ.JSON - JSONマニフェストファイルを実行するメインファイルなどのアプリケーションとその設定を記述する

  • メインファイル-インデックスなどのファイルです.インデックス.軽量アプリケーションビジネスロジックを含むTS.

  • インスタンス-シーケンスが実行されると、ホストはそのための個別のランタイム環境を作成し、このランタイムエンティティ内でシーケンスコードを実行します.これがインスタンスです.

  • APIとCLI -我々のアプリケーションプログラミングインタフェースとCLIはそれに接続しているデータ操作(入力データと受信出力データを送る)と管理操作の両方を許します

  • 2.3出力
    当社のエンジン出力はいくつかの方法で管理できます.

  • ファイル-ローカルまたはリモートのファイルに出力を保存することができます

  • stdout -出力はシステムstdout ( STARRもサポートされている)に指示される.

  • 出力は、私たちのSTH REST APIから消費できます

  • URLリクエスト-あなたの方法をURL、webhookなどを要求するアプリケーションを書くことができます

  • ストリーム-出力は、特定の宛先にストリーミングすることができます
  • 一緒に複数のアクションをミックスすることができます:両方のリモートシステム/URLにデータを送信することができますし、ローカルに保存します.

  • 3スクラムジェット変換ハブ

    3.1準備環境
    スクラムジェット変換ハブをインストールするには、次の3ステップに従ってください.
  • Linuxマシン(ローカルUnix/Linux OS、クラウドVMなど)を取得する
  • このLinuxマシンにDockerをインストールします(official Docker instructions are here )
  • このマシンにNPMをインストールしますofficial instructions are here ). 現在、ノードをお勧めします.JSバージョン14 .X LTS
    φ5 cm
    Linuxターミナルウィンドウを開き、以下のコマンドを実行します.
  • スクラムジェット変換ハブとSth CLIのインストール
    npm i -g @scramjet/sth @scramjet/cli
    
    実行
    scramjet-transform-hub
    

    4あなたの最初のシーケンスを実行します

    4.1レビューパッケージ

    Note that all commands here are executed from the root of this repository


    私たちはあなたを使用することができます簡単な“こんにちは雪だるま”シーケンスを準備している.このシーケンスはディレクトリで利用可能ですsamples/hello-snowman この倉庫で.
    このディレクトリで2つのファイルがあります.
  • package.json - この特定のシーケンスを記述するマニフェストファイル
  • index.js - メインアプリケーションロジックを含むファイル.
  • この特定のアプリケーションは、この例を単純化するために、プレーンJavaScriptで書かれます.しかし、あなたはあなたのシーケンスをtypescriptで書くことができて、パッケージの前にそれらを構築して、STHにシーケンスを送ることもできます.
    何も変える必要はないhello-snowman 最初の実行のためのシーケンス.次のステップに移りましょう.

    4.2準備と送付シーケンスパッケージ
    私たちの“シーケンス”アプリは、ハブを変換するために送信する前にパッケージ化する必要があります.このパッケージは単純なtarアーカイブです、そして、我々のsth - cliはアプリケーションディレクトリをシーケンスtarballにパッケージ化する特別なコマンドを持っています.
    注:いつでも、あなたはターミナルコマンドを発行することによってsi help (一般的には)si <command> help を指定します.si sequence help )
    新しいターミナルウィンドウを開き、sthを実行して最初のものを保ちます.次に、このリポジトリのルートディレクトリに以下のコマンドを発行します
    パックディレクトリhello-snowman アーカイブにhello-sequence.tar.gz
    si pack ./samples/hello-snowman/ -o ./samples/hello-snowman.tar.gz
    
    端末に出力された出力はありませんが、ls tarballパッケージがsamples ディレクトリ.
    B :こんにちは雪だるまを送ってください.タール.実行中のホストへのgz (デフォルトのlocalhost api endpointはCLI SENDコマンドで使用されます)
    si sequence send ./samples/hello-snowman.tar.gz
    
    出力は次のようになります.
    Request ok: http://127.0.0.1:8000/api/v1/sequence status: 202 Accepted
    SequenceClient {
      _id: 'cf775cc1-105b-473d-b929-6885a0c2182c',
      host: HostClient {
        apiBase: 'http://127.0.0.1:8000/api/v1',
        client: ClientUtils {
          apiBase: 'http://127.0.0.1:8000/api/v1',
          log: [Object]
        }
      },
      sequenceURL: 'sequence/cf775cc1-105b-473d-b929-6885a0c2182c'
    }
    
    現在、私たちのシーケンスIDは以下の通りです._id: 'cf775cc1-105b-473d-b929-6885a0c2182c'ホストはまた、各シーケンスの残りのAPIエンドポイントを公開し、これはまた、この応答で説明されます.

    4.3シーケンスを実行する
    このアップロードシーケンスを実行するにはシーケンスIDを使用できます.コマンドはsi seq start <sequence_id> . また、私たちの場合には、後にそれらを提供することによって、パラメータの任意の数を渡すことができますhello-snowman パラメータは使用されません.
    例えば、上記のシーケンスについて書きます.
    si sequence start cf775cc1-105b-473d-b929-6885a0c2182c
    
    出力は以下のようになります.
    Request ok: http://127.0.0.1:8000/api/v1/sequence/cf775cc1-105b-473d-b929-6885a0c2182c/start status: 200 OK
    InstanceClient {
      host: HostClient {
        apiBase: 'http://127.0.0.1:8000/api/v1',
        client: ClientUtils {
          apiBase: 'http://127.0.0.1:8000/api/v1',
          log: [Object]
        }
      },
      _id: 'e70222d1-acfc-4e00-b046-4a3a9481c53b',
      instanceURL: 'instance/e70222d1-acfc-4e00-b046-4a3a9481c53b'
    }
    
    シーケンスは、アプリケーションのテンプレートです.一度実行すると、新しいインスタンスとして有効になります.また、インスタンスは独自のID(GUID)を受け取ります.この場合、インスタンスIDは以下の通りです:_id: 'e70222d1-acfc-4e00-b046-4a3a9481c53b'もちろん、シーケンスを複数回実行できます.それぞれの実行は別個のインスタンスIDを作成します.

    4.4シーケンスへのデータの送信
    私たちはあなたの人生をより簡単にしたいです、そして、この非常に例のために、我々は特別なノードを準備しました.シンプルなメッセージのストリームを生成し、我々の実行中のインスタンスに送信するJSアプリhello-snowman .
    楽しみのために、我々のストリームジェネレータは、人工気象ステーションから温度測定値を含む簡単なテキストメッセージを送信します.温度は、- 50、50度摂氏の範囲でランダムに生成されます.
    我々hello-snowman アプリケーションが読み取られ、これらのメッセージを解釈し、私たちの雪だるまの状態について教えてくれます.
  • 温度が0かそれ以下であるなら、シーケンスはメッセージを返しますSnowman is freezing ... :)
  • 他のケース(0度より上の温度)では、シーケンスはメッセージを返しますSnowman is melting! :(
  • このアプリを実行するには、私たちのディレクトリのルートからこのコマンドを実行してくださいnode ./tools/stream-gen-tool/stream-gen.js <instance_id> . この場合は以下のようになります.
    node ./tools/stream-gen-tool/stream-gen.js e70222d1-acfc-4e00-b046-4a3a9481c53b
    
    出力は以下のようになります:
    ----------------------------------------
    Message# 1 | Temperature measure
    INPUT | 41
    OUTPUT| Snowman is melting! :(
    ----------------------------------------
    Message# 2 | Temperature measure
    INPUT | -33
    OUTPUT| Snowman is freezing ... :)
    ---------------------------------------------
    Message# 3 | Temperature measure
    INPUT | -36
    OUTPUT| Snowman is freezing ... :)
    ---------------------------------------------
    
    私たちのシーケンスジェネレータアプリケーションここで2つのことを行います
  • メッセージのストリームを送信しますそれぞれが温度値を持つ数を含む
  • ホストAPIから出力を読み込みますhello-snowman シーケンス
  • また、新しいターミナルウィンドウを開くこともできますし、この特定のインスタンスのログをsi instance log <instance_id> . 私たちの場合、これは
    si instance log e70222d1-acfc-4e00-b046-4a3a9481c53b
    
    サンプル出力は次のようになります
    ...
    2021-08-09T04:29:39.790Z log (object:Runner) Input message <Buffer 32 30>
    2021-08-09T04:29:40.791Z log (object:Runner) Input message <Buffer 2d 34>
    2021-08-09T04:29:41.792Z log (object:Runner) Input message <Buffer 33 33>
    2021-08-09T04:29:42.798Z log (object:Runner) Input message <Buffer 2d 34 35>
    2021-08-09T04:29:43.801Z log (object:Runner) Input message <Buffer 2d 33 36>
    ...
    

    Well done! You have run your first Scramjet Transform Hub sequence!



    次に行く場所
    ここでは、スクラムジェット変換ハブに関連するより多くのリソースを見つけることができます


  • Contribute to STH development
  • Visit our Scramjet.org page