Grid events are used for notification about what happens within the grid. Note that by
design Ignite keeps all events generated on the local node locally and it provides
APIs for performing a distributed queries across multiple nodes:
org.apache.ignite.IgniteEvents#remoteQuery(org.apache.ignite.lang.IgnitePredicate,long,int...) - querying
events occurred on the nodes specified, including remote nodes.
org.apache.ignite.IgniteEvents#localQuery(org.apache.ignite.lang.IgnitePredicate,int...) - querying only local
events stored on this local node.
org.apache.ignite.IgniteEvents#localListen(org.apache.ignite.lang.IgnitePredicate,int...) - listening
to local grid events (events from remote nodes not included).
Events and Performance
Note that by default all events in Ignite are enabled and therefore generated and stored
by whatever event storage SPI is configured. Ignite can and often does generate thousands events per seconds
under the load and therefore it creates a significant additional load on the system. If these events are
not needed by the application this load is unnecessary and leads to significant performance degradation.
It is highly recommended to enable only those events that your application logic requires
by using either
org.apache.ignite.configuration.IgniteConfiguration#getIncludeEventTypes() method in Ignite configuration. Note that certain
events are required for Ignite's internal operations and such events will still be generated but not stored by
event storage SPI if they are disabled in Ignite configuration.
Internal and Hidden Events
Also note that some events are considered to be internally used or hidden.
Internally used events are always "recordable" for notification purposes (regardless of whether they were
enabled or disabled). But won't be sent down to SPI level if user specifically excluded them.
All discovery events are internal:
Hidden events are NEVER sent to SPI level. They serve purpose of local
notification for the local node.