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

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

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

延伸 · 閱讀

精彩推薦
主站蜘蛛池模板: 欧美yw193.c㎝在线观看 | 四虎永久网址在线观看 | 水岛津实在线 | 国产日产国无高清码2020 | 亚洲情射 | 日韩视频第二页 | 国产在线观看a | 扒开大腿狠狠挺进视频 | 好紧好爽再叫浪一点点潘金莲 | 精品图区| 日韩在线观看网站 | 俄罗斯美女毛茸茸bbwbbw | 全彩调教侵犯h本子全彩妖气he | 亚洲一区二区三区福利在线 | 法国老妇性xx在线播放 | 办公室强行丝袜秘书啪啪 | 成人在线小视频 | 冰雪奇缘1完整版免费观看 变形金刚第一部 | evelynlin亚裔播放 | 99热久久国产精品这里 | 亚洲a在线视频 | 深夜福利免费观看 | 糖心在线观看网 | 亚洲波多野结衣日韩在线 | 美女黄板视频 | 欧美日韩亚洲成人 | 日韩性公交车上xxhd免费 | 女人肮脏的交易中文字幕未删减版 | 日韩成人精品在线 | 亚洲卡一卡2卡三卡4麻豆 | 免费看视频高清在线观看 | 欧美精品一区二区三区免费播放 | 亚洲国产精品日本无码网站 | 日韩黄色录像 | 国产福利在线观看第二区 | 特黄特色大片免费高清视频 | xnxx老师| 日本视频免费在线播放 | 99国产精品| 女人把私密部位张开让男人桶 | 日本免费播放 |