你是否遇到過應用程序性能下降的問題?有沒有想過提升Spring性能?如果是這樣 - 那么這篇文章絕對適合你。在這里,我們將談論使用超級強大和領先的內存數(shù)據(jù)網(wǎng)格提高應用程序的性能!
什么是Hazelcast?
Hazelcast是一個內存分布式計算平臺,用于管理數(shù)據(jù)并并行執(zhí)行執(zhí)行應用程序。
1. 它是用Java編寫的。
2. 與其他一些內存數(shù)據(jù)庫(如redis)不同,Hazelcast是多線程的,這意味著可從所有可用的CPU內核中受益。
3. 與其他內存數(shù)據(jù)網(wǎng)格不同 - 它設計用于分布式環(huán)境。它支持每個群集無限數(shù)量的map和緩存。
根據(jù)基準測試,Hazelcast在獲取數(shù)據(jù)方面比Redis快56%,在設置數(shù)據(jù)方面比Redis快44%。
Hazelcast是一個高度可擴展的數(shù)據(jù)分發(fā)和集群平臺。特性包括:
現(xiàn)在需要將它添加到Spring Boot項目中并開始使用它的優(yōu)勢。
<parent> <groupId> org.springframework.boot </ groupId> <artifactId> spring-boot-starter-parent </ artifactId> <version> 2.0.0.RELEASE </ version> </ parent> <dependencies> <dependency > <groupId> org.springframework.boot </ groupId> <artifactId> spring-boot-starter-web </ artifactId> </ dependency> <dependency> <groupId> com.hazelcast </ groupId> <artifactId> hazelcast </ artifactId> </ dependency> <dependency> <groupId> com.hazelcast </ groupId> <artifactId> hazelcast-spring </ artifactId> </ dependency> </ dependencies>
要將Hazelcast添加到Spring Boot應用程序,只需要兩個依賴項。下我們需要配置Hazelcast實例。有兩種方法可以做到這一點:
1. 通過Java配置。
2. 通過創(chuàng)建hazelcast.xml配置文件。
我們選擇第一個方式:
import com.hazelcast.config.Config; import com.hazelcast.config.EvictionPolicy; import com.hazelcast.config.MapConfig; import com.hazelcast.config.MaxSizeConfig; import org.springframework.context.annotation.Bean; import org.springframework.context.annotation.Configuration;@Configuration public class HazelcastConfiguration { @Bean public Config hazelCastConfig(){ Config config = new Config(); config.setInstanceName(“hazelcast-instance”)。 addMapConfig( new MapConfig()。 setName(“configuration”) .setMaxSizeConfig(新MaxSizeConfig(200,MaxSizeConfig.MaxSizePolicy。FREE_HEAP_SIZE)) .setEvictionPolicy(EvictionPolicy。LRU).setTimeToLiveSeconds(-1)); return config; } }
實例已配置 - 現(xiàn)在我們可以訪問Hazelcast并使用數(shù)據(jù)進行操作。
對于這個例子,將創(chuàng)建只有3個映射的HazelcastController:
@RestController@RequestMapping("/hazelcast")public class HazelcastController { private final Logger logger = LoggerFactory.getLogger(HazelcastController.class); private final HazelcastInstance hazelcastInstance; @Autowired HazelcastController(HazelcastInstance hazelcastInstance) { this.hazelcastInstance = hazelcastInstance; } @PostMapping(value = "/write-data") public String writeDataToHazelcast(@RequestParam String key, @RequestParam String value) { Map<String, String> hazelcastMap = hazelcastInstance.getMap("my-map"); hazelcastMap.put(key, value); return "Data is stored."; } @GetMapping(value = "/read-data") public String readDataFromHazelcast(@RequestParam String key) { Map<String, String> hazelcastMap = hazelcastInstance.getMap("my-map"); return hazelcastMap.get(key); } @GetMapping(value = "/read-all-data") public Map<String, String> readAllDataFromHazelcast() { Map<String, String> hazelcastMap = hazelcastInstance.getMap("my-map"); return hazelcastInstance.getMap("my-map"); }}
在控制器中,我們自動安裝了HazelcastInstance? - 這是Hazelcast庫提供的接口。通過使用此實例,我們可以操作內存數(shù)據(jù)網(wǎng)格中的數(shù)據(jù)。因此,可以使用Postman將一些記錄保存到Hazelcast中。
重要的是 - 即使從不同的SpringBoot應用程序實例啟動,也可以將數(shù)據(jù)存儲在同一個緩存中。比如可以將應用程序端口更改為8081,并運行該應用程序的另一個實例,然后將嘗試從之前存儲的Hazelcast中獲取所有數(shù)據(jù)。
因為Hazelcast是集群的,數(shù)據(jù)可以在許多應用程序實例之間共享。
源碼:Github
以上就是本文的全部內容,希望對大家的學習有所幫助,也希望大家多多支持VeVb武林網(wǎng)。
新聞熱點
疑難解答
圖片精選