Auf das ObjectGrid-Shard zugreifen

WebSphere eXtreme Scale erreicht hohe Verarbeitungsraten, indem die Logik dorthin verschoben wird, wo sich die Daten befinden, und nur das Ergebnis an den Client zurückgegeben wird.

Anwendungslogik in einer Client-JVM muss Daten aus der Server-JVM extrahieren, die die Daten enthält, und mit Push zurückgeben, wenn die Transaktion festgeschrieben wird. Dieser Prozess senkt die Geschwindigkeit, in der die Daten verarbeitet werden können. Wenn sich die Anwendungslogik in derselben JVM befindet wie das Shard, das die Daten enthält, fallen Netzlatenzzeit und Marshaling-Kosten weg, und dies kann zu einem erheblichen Leistungsgewinn führen.

Lokale Referenz auf Shard-Daten

Die ObjectGrid-APIs übertragen ein Session-Objekt an die serverseitige Methode. Dieses Session-Objekt ist eine direkte Referenz auf die Daten für dieses Shard. Es ist keine Routing-Logik in diesem Pfad enthalten. Die Anwendungslogik kann mit den Daten für dieses Shard direkt arbeiten. Das Session-Objekt kann nicht verwendet werden, um auf die Daten in einer anderen Partition zuzugreifen, weil keine Routing-Logik vorhanden ist.

Ein Loader-Plug-in ist ebenfalls eine Methode, ein Ereignis zu empfangen, wenn ein Shard zu einer primären Partition wird. Eine Anwendung kann einen Loader und die Schnittstelle "ReplicaPreloadController" implementieren. Die Methode zum Überprüfen des Preload-Status wird nur aufgerufen, wenn ein Shard zu einem primären Shard wird. Das an die Methode übergebene Session-Objekt ist eine lokale Referenz auf die Daten des Shards. Dieser Ansatz wird normalerweise verwendet, wenn eine Partition Threads starten oder eine Nachrichtenstruktur für partitionsbezogenen Datenverkehr subskribieren muss. Möglicherweise muss sie einen Thread starten, um Nachrichten in einer lokalen Map über die API "getNextKey" zu empfangen.

Optimierung der Client/Server-Co-Location

Wenn eine Anwendung die Client-APIs verwendet, um auf eine Partition zuzugreifen, die sich in derselben JVM befindet, die auch den Client enthält (dies wird als Co-Location bezeichnet), wird das Netz umgangen, aber es findet aufgrund der derzeitigen Implementierungsprobleme noch ein gewisses Marshaling statt. Wenn ein partitioniertes Grid verwendet wird, sind keine Einbußen bei der Anwendungsleistung zu verzeichnen, weil (N-1)/N Aufrufe an eine andere JVM weitergeleitet werden. Verwenden Sie die APIs "Loader" und ObjectGrid" für den Aufruf dieser Logik, wenn Sie immer mit lokalen Zugriffen auf ein Shard arbeiten müssen.