Spring Boot和Hazelcast使用

你是否遇到过应用程序性能下降的问题?有没有想过提升Spring性能?如果是这样 - 那么这篇文章绝对适合你。在这里,我们将谈论使用超级强大和领先的内存数据网格提高应用程序的性能! 什么是Hazelcast? Hazelcast是一个内存分布式计算平台,用于管理数据并并行执行执行应用程序。 1. 它是用Java编写的。 2. 与其他一些内存数据库(如redis)不同,Hazelcast是多线程的,这意味着可从所有可用的CPU内核中受益。 3. 与其他内存数据网格不同 - 它设计用于分布式环境。它支持每个群集无限数量的map和缓存。 根据基准测试,Hazelcast在获取数据方面比Redis快56%,在设置数据方面比Redis快44%。 现在需要将它添加到Spring Boot项目中并开始使用它的优势。
<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. 通过创建hazelcast.xml配置文件。 我们选择第一个方式:

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(new MaxSizeConfig(200,MaxSizeConfig.MaxSizePolicy.FREE_HEAP_SIZE))
                                .setEvictionPolicy(EvictionPolicy.LRU)
.setTimeToLiveSeconds(-1)); 
        return config; 
    } 
}

实例已配置 - 现在我们可以访问Hazelcast并使用数据进行操作。 对于这个例子,将创建只有3个映射的HazelcastController: 一个是设置数据; 一种是按ke键查询数据; 一个是从Hazelcast获取所有数据;

@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库提供的接口。通过使用此实例,我们可以操作内存数据网格中的数据。因此,可以使用Postman将一些记录保存到Hazelcast中。 重要的是 - 即使从不同的SpringBoot应用程序实例启动,也可以将数据存储在同一个缓存中。比如可以将应用程序端口更改为8081,并运行该应用程序的另一个实例,然后将尝试从之前存储的Hazelcast中获取所有数据。 因为Hazelcast是集群的,数据可以在许多应用程序实例之间共享。

源码:

https://github.com/igorkosandyak/spring-boot-with-hazelcast

原文发布于微信公众号 - Linyb极客之路(gh_c420b2cf6b47)

原文发表时间:2018-09-11

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

发表于

我来说两句

0 条评论
登录 后参与评论

相关文章

来自专栏pangguoming

Activiti学习——Activiti与Spring集成

与Spring集成 基础准备 目录结构 ? 相关jar包 Activiti的相关jar包  Activiti依赖的相关jar包  Spring的相关jar包  ...

5906
来自专栏java思维导图

Spring MVC 到 Spring BOOT的简化之路

从Servlet技术到Spring和Spring MVC,开发Web应用变得越来越简捷。但是Spring和Spring MVC的众多配置有时却让人望而却步,相信...

1412
来自专栏JAVA高级架构

Spring MVC工作原理

1182
来自专栏技术翻译

在Spring Boot和Gradle项目中设置微服务架构的基础知识

微服务,也被称为微服务架构,是一种建筑风格,结构的应用程序的松散耦合的服务,实现业务功能的集合。微服务架构支持大型复杂应用程序的持续交付/部署,并允许组织发展其...

2190
来自专栏Java Web

Spring Boot【快速入门】

2073
来自专栏会跳舞的机器人

Spring Cloud(2)——服务提供者

前言: 本文中的注册中心基于Spring Cloud(1)——服务注册中心,请先了解注册中心的相关知识后再阅读本文。

1543
来自专栏Java工程师日常干货

MyBatis+Spring MVC开发指南(三)

本系列的前面2篇文章,已经为大家介绍了MyBatis;从本篇博客开始将为大家介绍Spring MVC开发的那些事!关于Spring MVC这块将会涵盖Sprin...

821
来自专栏Java Web

Spring Boot【快速入门】

上面是引自官网的一段话,大概是说: Spring Boot 是所有基于 Spring 开发的项目的起点。Spring Boot 的设计是为了让你尽可能快的跑起来...

5175
来自专栏成猿之路

Spring MVC 到 Spring BOOT的简化之路

从Servlet技术到Spring和Spring MVC,开发Web应用变得越来越简捷。但是Spring和Spring MVC的众多配置有时却让人望而却步,相信...

824
来自专栏运维技术迷

CentOS安装Redis、PHPredis扩展

安装Redis [root@qzdev9 conf]# yum -y install redis #安装redis [root@qzdev9 conf]# sy...

4078

扫码关注云+社区