Grid Ops Java - Overview
Grid Ops features are divided into three different "layers". These layers are illustrated here:
Each of these layers will be described below.
ION is the binary data format we developed to encode IAP messages. ION is fast, compact, flexible, and can be used completely independently of IAP. You can use it inside HTTP or as a data format for files, if you want.
The ION features in Grid Ops consists of components to read and write ION. These components are:
IonWriter can read and write ION in its binary form. They work
directly on the raw bytes in byte arrays. These components give you maximum read and write speed, but they
require more work to use than the
IonObjectWriter can read and write ION data to and from
Java objects. These components use Java Reflection internally to
read and write ION from and to Java Objects. These components make it easy to convert between Java objects
and ION, but their performance is not as high as that of the
IAP + Infrastructure
IAP is the network protocol used by Grid Ops. The infrastructure components help you use IAP to implement distributed applications.
The IAP and Infrastructure features are intertwined and are thus harder to use separately from each other. It is possible to use the infrastructure components with other protocols than IAP, but many of these components are designed to work with IAP first and foremost.
So far Grid Ops has the following IAP + infrastructure components:
TcpServer is a simple TCP server implementation. The
TcpServer requires its own
thread to accept incoming connections. Incoming connections are then handed off to other components for
processing (e.g. the
TcpSocketsPort is a "port" for IAP messages received and sent via TCP sockets. In order to
receive and send IAP messages you connect a
TcpSocketsPort to a
TcpSocketsPort enables you to read a batch of incoming messages from across all the TCP sockets,
and write responses back to reach TCP socket separately.
NodeContainer can route IAP messages to the component that is to process it. The
NodeContainer does this based on the semantic protocol id + version and the receiver
node id in the IAP message. You do not have to use the
NodeContainer. You can also
just process all the IAP messages yourself.
We have many more components planned than the above. We will add these components over time as the Grid Ops project progresses.