Japanese | English
 

Nextra Logo

 


製品カタログ

 

Nextra(ネクストラ)*1)は、弊社が提供する「分散アプリケーション・サーハ」゙です。

RAS(Reliability(信頼性)、Availability(可用性)、Serviceability(保守性、サービス性))、アプリ間データ転送速度*2)を確保しつつ、数千同時リクエストを可能とする、分散テクノロジーに特化した基幹業務向けアプリケーション・サーバです。

Nextra並びに高速ファイル転送弊社製品Gabatto(ガバット)にて作成した分散ファイルシステムのライブデモを、Interop Tokyo クラウド・コンピューティング・コンペテイションにて披露し、 2010年、2011年連続してCisco賞を受賞しました。

*1) Nextraは、1992年、米国MITにて開発された Entera が起源です。
*2) 実証実験では、フェイルオーバー、ロードバランス、監視機能を搭載しているにも関わらず、04.μ秒/トランザクション、 2,100TPSを記録しました。

   
   
 

テクノロジー

  1. アプリケーション・クラスタリング
    Nextra が提供するRPC ランタイムライブラリの優れたL7(レイヤー7)リアルタイム・ルーティング機能により、システム全体のゼロ・ダウンタイムを実現します。複数セットのアプリケーションを起動しておくことにより、アプリケーション・ダウンやサーバマシン・ダウンに1秒以内に対応することができます。これにより、24 時間365 日、いつアプリケーションが落ちてもシステム全体のダウンを防ぐ、安心な仕組みを実現できます。プログラマーは、アプリケーション・クラスタリング実現に関して、コーディングの必要はありません。

  2. ロードバランシング
    効率的でシームレスなロードバランシング機能により、安定したサービス提供が可能です。複数セットのサーバプロセスを起動しておくことにより、サーバプロセスの利用効率を最適化できます。Nextra / RPC ランタイムライブラリのラウンドロビン機能により、それぞれのサーバプロセスには均一な負荷がかかることになります。また、並列サーバプロセスとブローカによるノード分けにより仮想空間を複数セット実現することで、さらに負荷分散率を上げることも可能です。 プログラマーは、ロードバランシング実現に関してもコーディングの必要はありません。

  3. ネーミング・サーバ
    サーバプロセスの位置情報を把握します。 クライアントはネットワーク上に分散されたサービスの物理的な位置情報をBroker(ブローカ)より取得します。
    並列、階層化も可能です。

  4. アプリケーション監視
    運用フェーズに入ったアプリケーションの自動監視を行います。 ソケットレベルでの確認を行い、プロセス無応答・ダウン時には再起動を行います。

  5. 通信インターフェース自動生成
    3層分散アーキテクチャーに沿った開発を支援するNextra では、通信・OS レベルのAPI プログラミングは必要ありません。各プログラム言語用の通信インターフェースをNextra 開発ツールにより自動生成し、異なるプログラム言語間の容易なモジュール連携を実現します。 開発は各層(プレゼンテーション層、アプリケーション層、データ層)同時に並行して進めることができ、開発者はビジネス・ロジックだけに注力することができます。 さらに、Nextra が提供するテストツールを使用すると、クライアントプログラムの作成を待たずに、サーバプログラムのテストを行うことができます。

  6. 高速RPC通信
    ミッションクリティカルシステムで求められる、安定したアプリケーション稼動を実現するNextra は、高速RPC 通信とロードバランシング機能による安定したサービス応答時間の確保、アプリケーション・クラスタリング機能によるシステム全体のゼロ・ダウンタイムを実現します。

  7. メッセージ キュー(Message Queueing)
    複数のサービスを同時に呼び出し、リモートサービスからの応答があったものから順次処理。 非同期メッセージングによるアプリケーションの疎結合化は、 ユーザーへのレスポンス時間の短縮やシステム拡張を容易にします。 サポート言語:C、C#.NET、VB.NET、Java。

  8. Icingaによるサービス監視
    Nextra のネーミングサーバである Broker(ブローカ)に対して、あらゆるネットワーク上のサービスを登録することができます。更に、Icinga 用のネーミングサーバ・プログインは、登録されたサービスの生死確認をリアルタイムに行います。

  9. Nextra REST サーバ(nextra-rest-server)
    Nextraサーバへの出入口を司り、プロキシサーバとして機能します。nextra-rest-server は、JSON オブジェクトと Nextra/RPC のマッピングを行います。既存プログラムの再コンパイル不要。Nextra定義ファイル(.def)ファイルのみで起動します。
   
   
 

Open source projects at GitHub

死活監視オープンソース用ネーミングサーバ・プラグイン

Nextra REST サーバ on Docker

   
   
 

ベンチマーク 資料

RPCベンチマークトランザクションパフォーマンス 
   
   
 

ホワイトペーパー

資産保全管理プラットフォーム資産保全管理プラットフォーム

クラウド時代のアプリケーション処理クラウド時代の分散アプリケーション処理

   
 
  Nextraの3層

1:プレゼンテーション層
Webブラウザ、アプリケーションGUI などのPCユーザ用インターフェース

2:アプリケーション層
RDBMSからのデータ抽出、四則演算などのビジネスロジックをつかさどる


3:データ層
RDBMS、ERP、レガシーシステム
   
   
 
図1.Nextraの論理3層モデル

図1.Nextraの論理3層モデル
   
   
  システム開発・運用について

開発

「Nextra」では、通信・OSレベルのAPIプログラミングは必要ありません。
開発者が最小限の情報を記述するだけで「Nextra」が各層(プレゼンテーション層、アプリケーション層、データ層)間のコミュニケーションプログラムを自動生成 します。
開発は各層を同時並行で進めることができます。開発者はビジネス・ロジックだけに注力することができ、開発コスト、開発期間の大幅削減により、生産性を飛躍的に高めることができます。
同時に将来のあらゆるアプリケーションニーズに対して柔軟性を確保します。

運用
運用フェーズに入ったアプリケーションの自動監視を、運用管理ツールである「AppMinder」により行うことが出来ます。これにより、アプリケーションダウンによる機会損失の回避、運用要員のコスト削減を実現できます。
   
   
  Nextraのコンポーネント

「Nextra」は、システムの構築・テストを支援する開発ツールと、本番稼動時のサービスを提供する運用ツールから構成されます。




開発ツール

RPCMake

分散された各層( プレゼンテーション層、アプリケーション層、データ層)プロセス間の通信インフラ(スタブ)を自動生成します。
開発者は、通信部分に関わる作業から解放されます。IDL(Interface Definition Language)ファイルをインプットとし、クライアントプログラム、サーバプログラム用のスタブを自動生成します。
   
  SQLMake
  Nextraが提供する、DBアクセス・サーバ(DB_start)を呼び出す、クライアントプログラム用スタブの自動生成を行います。DBアクセス・サーバ(DB_start)は、SQLMakeで使用されたSQLファイルをインプットとし、SQLMakeで生成されたクライアント・スタブを持つクライアントプログラムと通信を行うことができます。
 
  TPMake
  トランザクションの整合性を侵すことなく、様々なRDBMSの下で実行される複数のDBにアクセスできるトランザクション・サーバプログラムの開発をサポートします。
開発者は、TPMakeで自動生成されたコードを使用してトランザクション制御のロジックを記述します。
TPMakeに関しては、SQLファイルだけでなく、リソースファイルも作成しなければいけません。
リソースファイルは、各SQLファイルを適切なDBにマップするテキストファイルです。
   
  RPCDebug
  サーバプログラム単体テストツールです。
RPCDebugを使用すると、特定サーバの全てのRPCをテストすることができます。
よって、クライアントプログラムの作成を待たずに、サーバプログラム内のRPC関数のテストを行えます。
   
  defGen (Beta)
  COBOLコピー句より、インターフェースの自動生成を行います。
defGenツールの自動生成機能を利用することにより、オープンシステムへの移植、Javaや.NETからの既存ロジックの利用が可能となります。
   
 
図2.Nextraの開発ソフトウェア構成


図2.Nextraの開発ソフトウェア構成

 

 

  運用ツール
   
  Broker
  Nextraネーミングサーバ。サーバプロセスの位置情報を把握します。
クライアントは、ネットワーク上に分散されたサーバの物理的な位置情報を、Broker(ブローカ)より取得します。
マスタブローカ、サブブローカというようにブローカの階層を形成することも可能です。
   
 
図3.Nextraの運用管理ソフトウェア構成


図3.Nextraの運用管理ソフトウェア構成
   
   
  AppMinder
  ネットワーク上に分散されたサーバプロセスを定期的に応答管理し、稼動状況を監視します。
同時に、自動立ち上げや、サーバプロセスダウン時には、自動再起動を行います。
   
 
図4.AppMinder


図4.AppMinder

 

 

 
  DBアクセス・モジュール
 
  DBアクセス・サーバ (DB_start)
  DB_startは、バイナリ実行モジュールとして提供されます。
これにより、開発者はわずらわしいDB操作言語を記述せず、SQLステートメントを記述するだけでクライアントからDBの操作が可能になります。
 
  トランザクション・サーバ
  TPMakeで自動生成されたコード内に定義されたSQL関数を使用して、トランザクション制御のロジックを開発者がコーディングします。
コンパイルをすることで、実行可能なトランザクション・サーバの出来上がりです。
   
  xa サーバ
  Nextra/Javaアプリケーション・サーバから、xaインターフェースを利用して、2PC(2フェーズ・コミット)を実現できます。
   

 

 
  稼動環境
   
  サーバOS :
  AIX、HP-UX/Itanium2、Linux、Solaris、Windows2003/2008/2012
   
  クライアントOS :
  Windows XP、Windows Vista、Windows 7/8
   
  プログラミング言語 :
  C、C#.NET、COBOL、Delphi、Java、Power Builder、VB.NET、Visual Basic
   
  DB
  DB2、HiRDB、Oracle、SQL Server、MySQL
   
 
 
   

NextraによるMQ(メッセージキュー)ソリューション

20年を超える基幹業務での稼働実績を誇るNextra。核となる分散アプリケーションフレームワークを活用することにより、堅牢なMQソリューションをご提供します。

アプリケーションリクエストのキュー対応には、2つの方法があります。

  1. Nextra/RPCによる、TCP/IP層でのキューイング。各Nextraサーバは、最大200のリクエストをキュー待ちとすることができます。
  2. 非同期通信、リクエストの分散、ライブラリレベルでのスレッドを利用することにより、クライアント側にて確実にキュー管理をする方法。

ここでは、上記#2を取り上げ解説をします。

MQ管理の概要

MQ overview

非同期スレッド
非同期スレッド(コールバック)のコード抜粋 ...

public void queueClientImpl(boolean async, int inputData) {

    CallBack callBack = new QueueClientCallBack(); // Create callback object

       

    Queue_c _stub = new Queue_c(); // Create stub object

       

    _stub.fChaNStr(sIn, tag, callBack); // Invoke RPC method

}

 

private class QueueClientCallBack extends CallBackBase {

    public void callBack() {

        RPCTable table = null;

        try {

            table = this.getRPCTable();

            out = table.getString(tag); // Return as its argument

            ret = table.getIntReturn(); // Return value

        } catch (DceException e) {

        } finally {

            noOfQueue = noOfQueue - 1; //Decrease Queue

        }

    }

}

Hide snippets.

キュー・コントローラー
キュー・コントローラーのコード抜粋 ...

if (qt.getQueue() < maxNoOfQueue)

    qt.queueClientImpl(_ASYNC_, iloop);

else {

    while (true) {

        if (qt.getQueue() < maxNoOfQueue) {

            qt.queueClientImpl(_ASYNC_, iloop);

            break;

        } else {

            try { Thread.sleep(10* 1000); } catch (InterruptedException e) { e.printStackTrace(); }

        }

    }

}

Hide snippets.

ブローカによるメッセージ分散
コーディング不要。
Nextra/RPCは、Nextra/ブローカ(ネーミング・サーバ)に問合せを行い、登録されたサーバ群より動的にサーバが選択され、当該サーバにメッセージは配信されます。これにより、登録されたサーバに均一にリクエストが分散されます。

ワーカースレッド
コーディング不要。
Nextra/librpc 組込済み機能。ワーカースレッドの増減は、環境ファイル属性「DCE_THREADED」への指定にて行われます。規定値は、1024です。

MQ 構成

MQ components

 

開発者は、1) IDL File、2) Client user logic、そして3) Business logicの記述が必要です。

Preparation

キューサンプルを構成する全ファイル

1.開発者が記述するファイル
開発者が記述 ファイル名
IDL file Queue.def
Client user logic QueueClient.java
QueueClientImpl.java
Business logic QueueImple.java

 

2. Queue.defを入力とし、RPCMakeより生成されるファイル
自動生成 ファイル名
Client stub Queue_c.java
Server interface Queue.java

 

3. サンプルプログラムにて提供されるファイル
環境/バッチファイル ファイル名
Build batch file build.bat/build.sh
Environment file for Broker broker.env
Environment file for Server server.env
Environment file for Client client.env
Broker/Server startup batch file startServer.bat/startServer.sh
Client startup batch file startClient.bat/startClient.sh

 

Queueサンプルデモ動画

 

本Queueサンプルを同梱した CentOS7 Docker をご用意しました。
こちらをクリックし、指示に従って作業を行って下さい。
 
 
   

死活監視オープンソース用ネーミングサーバ・プラグイン

Nextra のネーミングサーバである Broker(ブローカ)は、RESTAPI を処理できるようになりました。 つまり、REST API を利用することにより、如何なるクライアントプログラムより、あらゆるネットワーク上のサービスを、Broker に登録することができます。

Naming server plugin for Icinga overview

更に、Icinga 用のネーミングサーバ・プログインは、登録されたサービスの生死確認をリアルタイムに行います。更に、プロセス死亡時は、指定syslogへのlog送信を行います。

みえぞう鳥瞰

百聞は一見に如かず。YouTubeにアップされたデモビデオ(2分38秒)をご覧下さい。

Github プロジェクトより Docker構成ファイルをダウンロードし、お手元にて試用をお勧めします。

更に、既存 Nextra ユーザ様への吉報としては、本プログインが既存 Nextra サーバの監視にも利用可能。Icinga を Nextra サーバの監視ツールとして利用出来ます。

以下のホワイトペーパも併せてご参照ください。

 
 
   

Nextra REST サーバ (nextra-rest-server)

Nextra(ネクストラ) REST サーバ(nextra-rest-server)は、Nextraサーバへの出入口を司り、プロキシサーバとして機能します。nextra-rest-server は、JSON オブジェクトと Nextra/RPC のマッピングを行います。

Nextra REST server overview

機能

  • Nextra サーバへの一切の変更無しに、REST API による接続を提供します。
  • 既存プログラムの再コンパイル不要。Nextra定義ファイル(.def)ファイルのみで起動します。
  • REST API ドキュメントには swagger を採用。nextra-rest-server 起動後、ドキュメントを参照できます。更に、Nextra サーバに対するテストも同時に行うことができます。

Nextra ネーミングサーバである Broker (ブローカ)に対する REST API も用意されており、Broker への REST API を利用した操作も可能です。

swagger

Github プロジェクトより Docker構成ファイルをダウンロードし、お手元にて試用をお勧めします。