同期対象データがシステムを移動する方法

デバイスがデータをユーザーのメールサーバーと同期する必要がある場合、ユーザーは、そのデバイスを IBM Traveler サーバーに登録します。そのためには、セキュリティ設定や、ユーザーのメールデータベースからデバイスに、またはその反対にデータを同期するときに使用するデータのオプションとフィルタのネゴシエーションなどの初期セットアップを行う必要があります。

これらの初期手順を実行した後、デバイスはデータを同期できるようになります。その結果、IBM Traveler サーバーは、デバイスに同期できるデータがないか、ユーザーのメールデータベースのモニターを開始します。

IBM Traveler とメールサーバーの間のすべての通信は、NRPC (デフォルトポート 1352) を介して行われます。

初期判別の後、IBM Traveler サーバーは、最後に検査された後でユーザーのメールデータベースに変更が行われているかどうかを監視します。そのために、特定時刻以降に変更されたモニター対象のデータベースを返す Domino API 呼び出しが使用されます。

ユーザーは多数のサーバー上にメールデータベースのレプリカを作成できるため、IBM Traveler は、どのメールサーバーのレプリカをモニターすべきかを判別する「マスターモニター」として機能します。どの時点でも、モニターされるユーザーのメールサーバーは 1 つだけです。マスターモニターは、どのサーバーがモニターされているかを判別して、現在のサーバーがダウンした場合にはサーバーを切り替え、1 次サーバーが現在のサーバーでない場合には常に 1 次サーバーへの切り替えを試行します。 IBM Traveler サーバーは、サーバーごとに 1 つのスレッドで各メールサーバーのデータベース一式をモニターします。これらのスレッドの名前は「Mntr」で始まります。

サーバーが高可用性 (HA) プールの一部である場合、プール内の 1 台の IBM Traveler サーバーのみがユーザー (およびユーザーのすべてのデバイス) のマスターモニターになります。

IBM Traveler サーバーは、メールデータベースの変更を検出した場合、新規スレッドを作成して、主な同期 (PS) を実行し、変更を評価します。これらのスレッドの名前は「PS」で始まります。

最初に、ユーザーのメールデータベース内の全データを検索して、(以前に設定されたデータのオプションとフィルタに基づいて) デバイスに同期する必要がある内容とデバイスに同期すべきでない内容を判別します。

最初の主な同期の後、主な同期で評価する必要があるのは、メールデータベースが最後に検査された後に変更された項目だけです。変更された項目ごとに、IBM Traveler サーバーは、その項目をデバイスに同期する必要があるかどうかを判別します。この判別 (文書全体ではなく、文書に関するメタデータのみ) は、デバイスが情報を要求するときのために IBM Traveler DB に保管されます。

この時点で、IBM Traveler サーバーは、デバイスがデータを要求した後にどのデータを同期する必要があるかを認識しています。データを要求するデバイスのプロセスは、デバイス同期 (DS) と呼ばれます。デバイス同期は、常にデバイスによって開始されます。デバイスは、パラメータと、SyncML または Microsoft Exchange ActiveSync (IBM Traveler がサポートする 2 つの同期プロトコル) のいずれかの HTTP 本文を指定して、サーバーに HTTP 要求 (HTTP のデフォルトはポート 80、HTTPS のデフォルトはポート 443) を発行します。

HTTP 要求はデバイスの設定に表示されるサーバーに対して行われますが、外部 URL を使用して構成された IBM Traveler サーバーと同じサーバーでなければなりません。この HTTP 要求は、すべての HTTP ロードバランサ、プロキシ、ファイアウォール、ネットワークアプライアンスを経由して、IBM Traveler プロセスが実行されている Domino HTTP サーバーに到達します。

HTTP 要求が Domino HTTP サーバーに到達すると、Domino HTTP は HTTP 認証を実行します。これは、names.nsf やディレクトリアシスタントなど、通常の HTTP 認証メカニズムを使用して実行できます。要求は、正常に実行された場合、Domino HTTP プロセス内部で実行されている IBM Traveler サーブレットに渡されます。

サーブレットは、単に HTTP 要求データを受け取り、直列化オブジェクトにラップして、TCP ソケット (デフォルトポート 50125) を使用して同じサーバー (常に同じサーバー) で実行されている IBM Traveler プロセスに直列化オブジェクトを送信し、IBM Traveler プロセスからの応答を待機します。 サーブレットが応答を待機する間、応答の準備ができるまでスレッドが保持される必要があるため、サーブレットは HTTP スレッドを保持します。

IBM Traveler プロセスは、直列化オブジェクトを受け取り、割り当てられるワーカースレッドのキューに入れます。これらのスレッドの名前は「Worker」で始まります。HTTP プロセスが既に認証を完了しているため、IBM Traveler サーバーは認証を実行しません。ユーザーは、HTTP が識別したユーザーです。tell コマンドを除くすべての着信要求 (デバイス同期を含みますが、これに限定されるものではありません) は、ワーカースレッドを使用して処理されます。

サーバーが高可用性 (HA) プールの一部である場合、必要に応じて要求のロードバランシングが行われます。 ロードバランシングが必要な場合、TCP ソケット (デフォルトポート 50125) を使用して、そのユーザーのマスターモニターである他の IBM Traveler サーバーに同じ直列化オブジェクトが送信され、受信した IBM Traveler プロセスはその要求を独自のワーカースレッドに入れて処理を続行します。

SyncML プロトコルを使用するデバイス同期は複数の HTTP 要求と応答にまたがる可能性があるため、ワーカースレッドは複数の HTTP 要求と応答にわたって同期状態をキャッシュに入れるために新しい DS スレッドを作成します。各着信要求は新しいワーカースレッドによって処理されますが、同期が完了するまで、すべての要求がそのデバイスの DS スレッドに入れられます。この時点で、DS スレッドはリサイクルされます。デバイス同期が 1 つの HTTP 要求と応答で処理される場合でも (Microsoft Exchange ActiveSync は常に 1 回です)、整合性を維持するために DS スレッドに入れられます。

DS スレッドは、主な同期プロセスから IBM Traveler データベースに保管されたメタデータを検査して、ユーザーのメールデータベースからデータを取得し、HTTP 応答を作成します。

DS (デバイス同期の場合のみ) スレッドまたはワーカー (その他の要求の場合) スレッドが HTTP 応答を作成すると、スレッドは HTTP 応答データを受け取り、直列化オブジェクトにラップし、TCP ソケット (デフォルトポート 50126) を使用して、HTTP スレッドを保持しているサーブレットに直列化オブジェクトを送信します。要求のロードバランシングが行われなかった場合、これは、IBM Traveler プロセスと同じサーバーで実行される HTTP プロセスになります。要求のロードバランシングが行われた場合は、元の HTTP/Traveler サーバー上のサーブレットになります。応答が元の IBM Traveler プロセスを介して戻されるのではなく、サーブレットに直接戻されることに注意してください。

サーブレットは応答を要求と突き合わせて、HTTP 応答がネットワーク経由でデバイスに送信されます。

常にデバイスがデバイス同期要求を開始するため、サーバーには、デバイス同期を開始するようにデバイスに通知する方法が必要です。この方法は「プッシュ」と呼ばれますが、実際には、単にサーバーにデバイスの新規データがあるためにデバイス同期要求を行うようにサーバーがデバイスに通知することをいいます。

IBM Traveler サーバーの主な同期プロセスは、データをデバイスに同期する必要があると判別した場合に、デバイスへのプッシュメッセージの送信を試行することです。

IBM Traveler サーバーからのプッシュメッセージの送信には、HTTP (変更内容が使用可能になるか、タイムアウトに達した場合に IBM Traveler サーバーが応答する要求を保持できるように、デバイスは長いタイムアウトを指定して HTTP 要求を行います)、SMS (SMS E メールアドレスへのメールを使用)、APNS (Apple プッシュ通知サービス)、GCM (Google Cloud Messaging) を使用できます。これらすべてのメッセージは、デバイスがデバイス同期プロセスを開始するためのメタデータ (主に、同期が必要な項目の数) です。デバイス同期プロセスに実データが含まれています。