You are viewing an old version of this page. View the current version.

Compare with Current View Page History

« Previous Version 15 Next »

Apache Ignite 2.0 incorporate tremendous changes that make it different from Apache Ignite 1.x releases. Apache Ignite 2.0 is incompatible with previous versions and, most likely, application code has to be altered if someone plans to migrate to 2.0. Below you will find the main public API changes introduced in version 2.0. 

Off-Heap Memory Architecture

Apache Ignite 2.0 and later versions are based on the new off-heap memory architecture that is well explained in this documentation: https://apacheignite.readme.io/docs/page-memory

Look over the documentation above to learn more about new concepts and configuration parameters. The sections below list APIs existed prior to 2.0 and that was reworked in the latest version.

 

Cache Memory Modes:

  • `CacheMemoryMode` enumeration is no longer exist. Off-heap is used as the main storage tier with an ability to enable Java heap caching via `CacheConfiguration.setOnheapCacheEnabled(...)` API method.
  • `CachePeekMode.SWAP`, as well as 'SwapSpaceSPI', are discontinued. The swapping tier can only be used if a swapping file is set via `MemoryPolicyConfiguratoin.setSwapFilePath(..)`.

Eviction Policies

Previously existed eviction mechanisms based on `EvictionPolicy` is now supported only for optional near and Java heap caching of the data stored in the off-heap page memory. To enable the eviction for the page memory, use `DataPageEvictionMode` enumeration. Refer to this documentation for more details: https://apacheignite.readme.io/docs/evictions


Cache and Memory Metrics

The following methods were removed from `CacheMetrics` interface as part of a migration to the off-heap memory architecture: getOverflowSize, getOffHeapMaxSize, getSwapGets, getSwapPuts, getSwapRemovals, getSwapHits, getSwapMisses, getSwapEntriesCount, getSwapSize, getSwapHitPercentage, getSwapMissPercentage.

To support the new memory architecture, `MemoryMetrics` interface was introduced in order to get insights on a state and behavior of the memory in runtime. Refer to this documentation if you plan to leverage from this interface: https://apacheignite.readme.io/docs/memory-metrics

 

Default Cache Name

`null` can no longer be used as a cache name. If a cache is started with an empty named then it will be named `default` and you can get it using either `Ignite.cache(null)` or `Ignite.cache("default")` calls.

Ignite Node Configuration

  • IgniteConfiguration's `getGridName/setGridName` methods are deprecated and will be removed in later releases. Use IgniteConfiguration's `getIgniteInstanceName/setIgniteInstanceName` instead.

  • Service Grid calls are processed in a separated Service Grid thread pool which size can be tweaked over `IgniteConfiguration.setServiceThreadPoolSize(...)` method. Before that, the public thread pool served that purpose.

  • Apache Ignite data streamer's calls are going to and processed by a dedicated data streamer's thread pool which size can be tweaked over `IgniteConfiguration.setDataStreamerThreadPoolSize(...)` method. Before that, the public thread pool served that purpose.

  • SQL queries are now processed and executed using Threads from Queries thread pool size that is configurable via `IgniteConfiguration.setQueryThreadPoolSize(...)` method. Before that, the system thread pool was used for that purpose.

Networking

  • Confusing `TcpDiscoverySPI.getHeartbeatFrequency` parameter is no longer supported. The parameter used to define a frequency of cluster and cache metrics that are sent by cluster nodes from one to another. Now the frequency can be adjusted with `IgniteConfiguration.setMetricsUpdateFrequency(...)` method.

  • `TcpDiscoveryS3IpFinder.setAwsCredentials(AWSCredentialsProvider)` renamed to `TcpDiscoveryS3IpFinder.setAwsCredentialsProvider(AWSCredentialsProvider)`.

  • Apache Ignite client nodes' failure detection timeout is now set with `IgniteConfiguration.setClientFailureDetectionTimeout(...)` and equal to 30 seconds be default. `IgniteConfiguration.getFailureDetectionTimeout()`, that is equal to 7 seconds, was used as the timeout for both server and client nodes in prior versions.

 

Asynchronous Programming

`IgniteAsyncSupport` and all the methods that relied on it were deprecated and to be removed in the future Apache Ignite releases. Use direct async counterparts for a variety of synchronous methods instead. Refer to this documentation to learn more about the changed approach for the asynchronous programming: https://apacheignite.readme.io/docs/async-support

 

Redis Integration

Default Redis cache name was changed from 'null' to 'redis_cache'.

Ignite.NET

  • CompiledQuery class removed, CompiledQuery2 class renamed to CompiledQuery. If you have used CompiledQuery class, there is nothing to change. Existing code should compile. If you have used CompiledQuery2 class, rename usages to CompiledQuery.

  • CacheEvent.LockId has been removed. It was always null previously.

  • BinaryConfiguration properties renamed: DefaultNameMapper -> NameMapper, DefaultIdMapper -> IdMapper, DefaultKeepDeserialized -> KeepDeserialized

  • ILifecycleBean renamed to ILifecycleHandler, IgniteConfiguration.LifecycleBeans -> IgniteConfiguration.LifecycleHandlers

Dynamic Type Registration, Serializable Types

BinaryConfiguration is no longer required: any type can be used in Cache and Compute straight away. All objects are written in Ignite binary format (which means IBinary and SQL APIs always work).

Serializable types (including those which implement ISerializable) are also written using Ignite binary format.

  • No labels