Hazelcast is default implementation for cache / memory-grid because
- mature and feature-rich solution
- not only for caching data but also for computation in clustered environment
- offers first-class Spring support (Spring cache abstraction layer, Spring Boot support, Spring configuration in common)
- does support management tools, like Hazelcast management center
Configuration in OpenHub
There is default Hazelcast configuration in the file config/ohf_hazelcast.xml.
OpenHub framework uses Spring Boot Hazelcast support for auto-configuration. There is parameter spring.hazelcast.config which can change configuration file.
Hazelcast is configured in XML file by default because it's often necessary to change it for target environment - set how instances in the cluster will communicate, set specific data structures etc. That's why OpenHub framework prefer XML configuration to configuration in the code. Nevertheless projects have possibility to directly set-up com.hazelcast.config.Config (that has higher priority than XML configuration).
or use org.springframework.boot.autoconfigure.cache.CacheManagerCustomizer:
Data structures configuration
Regardless of sth configuration style (XML vs API) it's necessary to configure data structures which are used in OpenHub framework (or in the project).
The OpenHub framework uses the following data structures:
|Name||Data structure type||Usage||Common parameters|
Distributed map for counting throttling.
Configuration has several interesting points - we need computation as fast as possible, accuracy is not crucial:
- no backups
- eviction-policy = Least Recently Used)
- merge policy = entry with the latest update wins
|config_params||map||configuration parameters caching|
Distributed map for caching configuration parameters.
- no backups
- eviction-policy = Least Recently Used
- time-to-live-seconds = 600 seconds (10 minutes)
- max-idle-seconds = 3600 (1 hour)