一区二区三区在线-一区二区三区亚洲视频-一区二区三区亚洲-一区二区三区午夜-一区二区三区四区在线视频-一区二区三区四区在线免费观看

服務器之家:專注于服務器技術及軟件下載分享
分類導航

PHP教程|ASP.NET教程|Java教程|ASP教程|編程技術|正則表達式|C/C++|IOS|C#|Swift|Android|VB|R語言|JavaScript|易語言|vb.net|

服務器之家 - 編程語言 - Java教程 - Spring Boot和Hazelcast使用詳解

Spring Boot和Hazelcast使用詳解

2021-05-30 15:24banq Java教程

這篇文章主要介紹了Spring Boot和Hazelcast使用詳解,小編覺得挺不錯的,現在分享給大家,也給大家做個參考。一起跟隨小編過來看看吧

你是否遇到過應用程序性能下降的問題?有沒有想過提升spring性能?如果是這樣 - 那么這篇文章絕對適合你。在這里,我們將談論使用超級強大和領先的內存數據網格提高應用程序的性能!

什么是hazelcast?

hazelcast是一個內存分布式計算平臺,用于管理數據并并行執行執行應用程序。

1. 它是用java編寫的。
2. 與其他一些內存數據庫(如redis)不同,hazelcast是多線程的,這意味著可從所有可用的cpu內核中受益。
3. 與其他內存數據網格不同 - 它設計用于分布式環境。它支持每個群集無限數量的map和緩存。

根據基準測試,hazelcast在獲取數據方面比redis快56%,在設置數據方面比redis快44%。

hazelcast是一個高度可擴展的數據分發和集群平臺。特性包括:

  1. 提供java.util.{queue, set, list, map}分布式實現。
  2. 提供java.util.concurrency.locks.lock分布式實現。
  3. 提供java.util.concurrent.executorservice分布式實現。
  4. 提供用于一對多關系的分布式multimap。
  5. 提供用于發布/訂閱的分布式topic(主題)。
  6. 通過jca與j2ee容器集成和事務支持。
  7. 提供用于安全集群的socket層加密。
  8. 支持同步和異步持久化。
  9. 為hibernate提供二級緩存provider 。
  10. 通過jmx監控和管理集群。
  11. 支持動態http session集群。
  12. 利用備份實現動態分割。
  13. 支持動態故障恢復。

現在需要將它添加到spring boot項目中并開始使用它的優勢。

?
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
<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配置文件。

我們選擇第一個方式:

?
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
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;
  }
}

實例已配置 - 現在我們可以訪問hazelcast并使用數據進行操作。

對于這個例子,將創建只有3個映射的hazelcastcontroller:

  • 一個是設置數據;
  • 一種是按ke鍵查詢數據;
  • 一個是從hazelcast獲取所有數據;
?
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
@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是集群的,數據可以在許多應用程序實例之間共享。

源碼:github

以上就是本文的全部內容,希望對大家的學習有所幫助,也希望大家多多支持服務器之家。

原文鏈接:https://www.jdon.com/49954

延伸 · 閱讀

精彩推薦
主站蜘蛛池模板: 日本性生活大片 | 奇米777狠狠 | 92精品国产成人观看免费 | 四虎影视永久在线精品免费 | 青青青草国产 | 亚洲第一色区 | 日本福利网 | 扒开女人下面使劲桶屁股动漫 | 2015小明台湾永久区域免费 | 日本手机在线 | 欧美专区视频 | 新新电影理论中文字幕 | 深夜成人 | 免费国产成人高清视频网站 | 日韩亚洲国产欧美精品 | 欧美日韩精 | 贵妇的私人性俱乐部 | 美女扒开奶罩让男人吃奶 | 国产91对白在线观看 | 美女的隐私无遮挡撒尿 | 成年性生交大片免费看 | 91亚洲成人 | 免费观看的毛片 | 男人的j伸到女人的屁股眼 男人吃奶动态图 | sxx免费看观看美女 sss亚洲国产欧美一区二区 | 亚洲欧美久久婷婷爱综合一区天堂 | 插入逼| 国产福利在线免费观看 | 欧美日韩国产一区二区三区伦 | 欧美在线一级片 | 午夜在线播放免费人成无 | 99精品视频免费在线观看 | 亚洲国产99999在线精品一区 | 美女沟厕撒尿全过程高清图片 | 久久精品熟女亚洲AV国产 | 欧美草逼视频 | 免费a视频在线观看 | 18无删减羞羞网站动漫 | ai换脸造梦jennie | 欧美办公室silkstocking | 亚洲国产在线午夜视频无 |