Infinispan 12.0.0.Dev03 released, distributed cluster cache system
Infinispan is an extremely scalable, highly available key/value data store and data grid platform. It is 100% open source and written in Java. The purpose of Infinispan is to expose a data structure that is distributed, highly concurrent and designed ground-up to make the most of modern multi-processor and multi-core architectures. It is often used as a distributed cache, but also as a NoSQL key/value store or object database.
Feature
In-memory local and clustered cache
- Local, Invalidation, Replicated and Distributed cache modes
- Specify how many copies of the data you want
- Choose between storing object references or compact binary representations
- Store data on-heap or off-heap
Clustering
- UDP and TCP clustering
- Multiple discovery algorithms for elastic node provisioning
- Partition handling detects split brain scenarios and reduces availability to provide consistency in such situations
- Cross-site clustering for geographic multiple site / disaster recovery scenarios
- High-speed serialization built on JBoss Marshalling
- Group entries so that they are co-located on the same node
- Tune consistent hashing so that entries are stored on specific nodes
Expiration
- Store immortal and mortal entries in the same cache
- Entry mortality defined by lifespan or maximum idle time
Eviction
- Define the maximum number of entries to be kept in memory
- Define the maximum size of entries to be kept in memory
- High performance LFU eviction strategy
- Passivate evicted entries to a persistent store
Listeners
- Register listeners to detect cache events
- Support for local or clustered listeners
- Pre- and post-notifications
Transactions
- Concurrency control based on optimistic and pessimistic locks and total order
- Support for XA and synchronization models
- Support for Recovery
- Integration with JTA/JTS
Persistence
- Store data both in the cache and in an external persistent store
- File, JDBC, JPA, Infinispan Remote Server, RocksDB stores available out-of-the-box
Indexing and querying
- Indexed and indexless queries
- Ickle, a query language with full-text capabilities
- Grouping and aggregation
- Continuous queries
- Optionally stores indexes in the caches
- Synchronous and asynchronous indexing engine
- Lucene-based indexing powered by Hibernate Search
- Elastic Search backend
Code execution
- Distributed streams based on java.util.stream
- Distributed executor
- Server-side deployable tasks and scripts
Hot Rod Remote Protocol
- High-performance, language-independent binary protocol
- Topology-aware: Dynamically reacts to changes in the server nodes
- Consistent-hash-aware: goes directly to the primary owner
- Language-independent marshalling of data via ProtoBuf
- Clients for Java, C++, C#, Python
Remote Server
- HotRod, REST, Memcached and WebSocket
- Compatibility mode ensures data portability between protocols
- Deployable filters, converters and cache stores
- Server-side code execution
- Based on WildFly server code for performance, manageability and flexibility
Security
- Cache and CacheManager authorization with support for custom auditing, optionally integrated with the JDK SecurityManager.
- Remote client authentication based on SASL and integrated with the Security Realms in the server.
- Clustering authentication and authorization integrated with the Security Realms in the server.
Configuration / Development
- Fluent programmatic configuration API
- Declarative XML configuration
- Configuration templates
- Single-jar for ease of integration
- Atomic object factory supports other types of collections on top of Infinispan
Management and monitoring
- Local and clustered statistics
- Manage both embedded and server via JMX, RHQ and CLI
- Web-based administration console for server
Integrations
- JCache (JSR-107)
- Hibernate second-level Cache
- WildFly modules
- Apache Lucene directory backed by Infinispan
- Directory Provider for Hibernate Search
- Spring Cache 3.x and 4.x
- Spring Session
- CDI
- OSGi
- Apache Spark
- Apache Hadoop
Container/Cloud integrations
- EC2
- OpenShift/Kubernetes
- Azure
- Docker
Changelog v12.0.0.Dev03
Component Upgrade
- [ISPN-12243] – Upgrade to Surefire 3.0.0-M5
- [ISPN-12287] – Console 0.9.Final
Enhancement
- [ISPN-10092] – a README is cited but doesn’t exist
- [ISPN-11723] – Cluster Backup/Restore Tool
- [ISPN-11802] – Create SPI for Cross-Site Replication conflict resolution
- [ISPN-11868] – Docs: Update Spring Session for defining caches
- [ISPN-11950] – Create a new module called server-integration module into integrationtests module
- [ISPN-11992] – Convert RemoteStore to use new SPI
- [ISPN-12165] – Change RemoteStore to handle media types and verify segments
- [ISPN-12173] – Explanation for eviction leads confusion
- [ISPN-12195] – Make a About page in the console
- [ISPN-12204] – Add JDBC Meta Table
- [ISPN-12205] – Add RocksDB Meta Column Family
- [ISPN-12217] – Docs: Ports and Protocols
- [ISPN-12232] – CLI persistent configuration
- [ISPN-12233] – Server requirements link
- [ISPN-12234] – Remove Rest store
- [ISPN-12240] – CLI manpage reference update
- [ISPN-12242] – BlockingManager add reentrant blocking scheduler
- [ISPN-12248] – Upgrade Patternfly version to latest
- [ISPN-12258] – Operator Docs: Doc edits for xsite and creating caches
- [ISPN-12260] – Don’t use JMX to compute protocols server global connection count
- [ISPN-12267] – CacheIgnoreManager should use global config cache
- [ISPN-12271] – Allow different servers for server integration test suite
- [ISPN-12272] – Docs: Cross-Site updates for clarity
- [ISPN-12280] – Failfast if lsof is not present in unix
Feature Request
- [ISPN-12083] – Filter counters
- [ISPN-12084] – Delete counter
- [ISPN-12092] – Make the welcome visible without login in every case
Bug
- [ISPN-10365] – PreferAvailabilityStrategy assertion failure
- [ISPN-11754] – Console creates a local cache if no configuration is provided
- [ISPN-11821] – Be able to arrive to a detail cache directly from the console
- [ISPN-12088] – Property realm groups file format is wrong
- [ISPN-12161] – Clean recent activiy table
- [ISPN-12174] – Custom Store cannot configure segmented via xml
- [ISPN-12200] – Fix direct landing to to configuration page
- [ISPN-12230] – Deprecate client keySizeEstimate and valueSizeEstimate attributes
- [ISPN-12231] – Cache fails to start with IllegalStateException: We already had a newer topology
- [ISPN-12249] – Better exception handling for cross-site requests
- [ISPN-12251] – HotRodClientJmxTest.testRemoteCacheManagerMBean fails on Java 14
- [ISPN-12252] – Default hibernate cache configurations use unspecified media type
- [ISPN-12254] – NullPointerException in CheckAddressTask
- [ISPN-12255] – spring-boot-starter tests do not run
- [ISPN-12256] – InfinispanServerExtensionContainerTest fails to start
- [ISPN-12257] – RemoteSpringSessionTest.testCreatingSessionWhenUsingREST always fails
- [ISPN-12263] – RemoteCacheMetricBinderTest fails
- [ISPN-12264] – Template or custom configuration should be required to create a cache
- [ISPN-12273] – Potential race condition during wiring of EncoderCache
- [ISPN-12284] – InfinispanRuleBasicTest thread leak
- [ISPN-12285] – LicenseTest should check the licenses links
Task
- [ISPN-12169] – Avoid to wrap the SearchMapping
- [ISPN-12237] – Add Blockhound exclusion for ForkJoinPool
- [ISPN-12244] – Remove RxJavaInterop duplication from core
- [ISPN-12276] – Bump Testcontainers 1.14.3