Interface ClusterNode
-
- All Superinterfaces:
BaselineNode
- All Known Implementing Classes:
IsolatedNode
public interface ClusterNode extends BaselineNode
Interface representing a single cluster node. Useattribute(String)
ormetrics()
to get static and dynamic information about cluster nodes.ClusterNode
list, which includes all nodes within task topology, is provided toComputeTask.map(List, Object)
method.Cluster Node Attributes
You can use cluster node attributes to provide static information about a node. This information is initialized once within a cluster, during the node startup, and remains the same throughout the lifetime of a node. UseIgniteConfiguration.getUserAttributes()
method to initialize your custom node attributes at startup. Here is an example of how to assign an attribute to a node at startup:<bean class="org.apache.ignite.configuration.IgniteConfiguration"> ... <property name="userAttributes"> <map> <entry key="worker" value="true"/> </map> </property> ... </bean>
The system adds the following attributes automatically:
{@link System#getProperties()}
- All system properties.{@link System#getenv(String)}
- All environment properties.org.ignite.build.ver
- Ignite build version.org.apache.ignite.jit.name
- Name of JIT compiler used.org.apache.ignite.net.itf.name
- Name of network interface.org.apache.ignite.user.name
- Operating system user name.org.apache.ignite.ignite.name
- Ignite name (seeIgnite.name()
).-
spiName.org.apache.ignite.spi.class
- SPI implementation class for every SPI, wherespiName
is the name of the SPI (seeIgniteSpi.getName()
. -
spiName.org.apache.ignite.spi.ver
- SPI version for every SPI, wherespiName
is the name of the SPI (seeIgniteSpi.getName()
.
Note that all System and Environment properties for all nodes are automatically included into node attributes. This gives you an ability to get any information specified in
System.getProperties()
about any node. So for example, in order to print out information about Operating System for all nodes you would do the following:for (ClusterNode node : ignite.cluster().nodes()) { System.out.println("Operating system name: " + node.getAttribute("os.name")); System.out.println("Operating system architecture: " + node.getAttribute("os.arch")); System.out.println("Operating system version: " + node.getAttribute("os.version")); }
Cluster Node Metrics
Cluster node metrics (seemetrics()
) are updated frequently for all nodes and can be used to get dynamic information about a node. The frequency of update is controlled byIgniteConfiguration.getMetricsUpdateFrequency()
parameter. The metrics data will be updated every2
seconds by default.Grid node metrics provide information that can frequently change, such as Heap and Non-Heap memory utilization, CPU load, number of active and waiting grid jobs, etc... This information can become useful during job collision resolution or
ComputeTask.map(List, Object)
operation when jobs are assigned to remote nodes for execution.Local node metrics are registered as
MBean
and can be accessed from any JMX management console. The simplest way is to use standardjconsole
that comes with JDK as it also provides ability to view any node parameter as a graph.
-
-
Method Summary
All Methods Instance Methods Abstract Methods Modifier and Type Method Description Collection<String>
addresses()
Gets collection of addresses this node is known by.<T> T
attribute(String name)
Gets a node attribute.Map<String,Object>
attributes()
Gets all node attributes.Object
consistentId()
Gets consistent globally unique node ID.Collection<String>
hostNames()
Gets collection of host names this node is known by.UUID
id()
Gets globally unique node ID.boolean
isClient()
Whether this node is cache client (seeIgniteConfiguration.isClientMode()
).boolean
isLocal()
Tests whether or not this node is a local node.ClusterMetrics
metrics()
Gets metrics snapshot for this node.long
order()
Node order within grid topology.IgniteProductVersion
version()
Gets node version.
-
-
-
Method Detail
-
id
UUID id()
Gets globally unique node ID. A new ID is generated every time a node restarts.- Returns:
- Globally unique node ID.
-
consistentId
Object consistentId()
Gets consistent globally unique node ID. Unlikeid()
method, this method returns consistent node ID which survives node restarts.- Specified by:
consistentId
in interfaceBaselineNode
- Returns:
- Consistent globally unique node ID.
-
attribute
@Nullable <T> T attribute(String name)
Gets a node attribute. Attributes are assigned to nodes at startup viaIgniteConfiguration.getUserAttributes()
method.The system adds the following attributes automatically:
{@link System#getProperties()}
- All system properties.{@link System#getenv(String)}
- All environment properties.- All attributes defined in
IgniteNodeAttributes
Note that attributes cannot be changed at runtime.
- Specified by:
attribute
in interfaceBaselineNode
- Type Parameters:
T
- Attribute Type.- Parameters:
name
- Attribute name. Note that attribute names starting withorg.apache.ignite
are reserved for internal use.- Returns:
- Attribute value or
null
.
-
metrics
ClusterMetrics metrics()
Gets metrics snapshot for this node. Note that node metrics are constantly updated and provide up to date information about nodes. For example, you can get an idea about CPU load on remote node viaClusterMetrics.getCurrentCpuLoad()
method and use it duringComputeTask.map(List, Object)
or during collision resolution.Node metrics are updated with some delay which is controlled by
IgniteConfiguration.getMetricsUpdateFrequency()
parameter. By default the update will happen every2
seconds.- Returns:
- Runtime metrics snapshot for this node.
-
attributes
Map<String,Object> attributes()
Gets all node attributes. Attributes are assigned to nodes at startup viaIgniteConfiguration.getUserAttributes()
method.The system adds the following attributes automatically:
{@link System#getProperties()}
- All system properties.{@link System#getenv(String)}
- All environment properties.- All attributes defined in
IgniteNodeAttributes
Note that attributes cannot be changed at runtime.
- Specified by:
attributes
in interfaceBaselineNode
- Returns:
- All node attributes.
-
addresses
Collection<String> addresses()
Gets collection of addresses this node is known by.If
IgniteConfiguration.getLocalHost()
value isn'tnull
node will try to use that address for all communications and returned collection will contain only that address. If it isnull
then local wildcard address will be used, and Ignite will make the best effort to supply all addresses of that node in returned collection.- Returns:
- Collection of addresses.
-
hostNames
Collection<String> hostNames()
Gets collection of host names this node is known by.If
IgniteConfiguration.getLocalHost()
value isn'tnull
node will try to use the host name of that resolved address for all communications and returned collection will contain only that host name. If that host name can not be resolved then ip address returned by methodaddresses()
is used.If
IgniteConfiguration.getLocalHost()
value isnull
then local wildcard address will be used, and this method returns host names of all addresses of that node.Note: the loopback address will be omitted in results.
- Returns:
- Collection of host names.
-
order
long order()
Node order within grid topology. Discovery SPIs that support node ordering will assign a proper order to each node and will guarantee that discovery event notifications for new nodes will come in proper order. All other SPIs not supporting ordering may choose to return node startup time here.NOTE: in cases when discovery SPI doesn't support ordering Ignite cannot guarantee that orders on all nodes will be unique or chronologically correct. If such guarantee is required - make sure use discovery SPI that provides ordering.
- Returns:
- Node startup order.
-
version
IgniteProductVersion version()
Gets node version.- Returns:
- Node version.
-
isLocal
boolean isLocal()
Tests whether or not this node is a local node.- Returns:
True
if this node is a local node,false
otherwise.
-
isClient
boolean isClient()
Whether this node is cache client (seeIgniteConfiguration.isClientMode()
).- Returns:
True if client
.- See Also:
IgniteConfiguration.isClientMode()
-
-