Spring Boot 2.x基礎教程:使用EhCache快取叢集
阿新 • • 發佈:2020-07-17
[上一篇](http://blog.didispace.com/spring-boot-learning-21-5-2/)我們介紹了在Spring Boot中整合EhCache的方法。既然用了ehcache,我們自然要說說它的一些高階功能,不然我們用預設的`ConcurrentHashMap`就好了。本篇不具體介紹EhCache快取如何落檔案、如何配置各種過期引數等常規細節配置,這部分內容留給讀者自己學習,如果您不知道如何搞,可以看看這裡的[官方文件](http://www.ehcache.org/)。
那麼我們今天具體講什麼呢?先思考一個場景,當我們使用了EhCache,在快取過期之前可以有效的減少對資料庫的訪問,但是通常我們將應用部署在生產環境的時候,為了實現應用的高可用(有一臺機器掛了,應用還需要可用),肯定是會部署多個不同的程序去執行的,那麼這種情況下,當有資料更新的時候,每個程序中的快取都是獨立維護的,如果這些程序快取同步機制,那麼就存在因快取沒有更新,而一直都用已經失效的快取返回給使用者,這樣的邏輯顯然是會有問題的。所以,本文就來說說當使用EhCache的時候,如果來組建程序內快取EnCache的叢集以及配置配置他們的同步策略。
**由於下面是組建叢集的過程,務必採用多機的方式除錯,避免不必要的錯誤發生。**
## 動手試試
本篇的實現將基於[上一篇](http://blog.didispace.com/spring-boot-learning-21-5-2/)的基礎工程來進行。先來回顧下上一篇中的程式要素:
**User實體的定義**
```java
@Entity
@Data
@NoArgsConstructor
public class User {
@Id
@GeneratedValue
private Long id;
private String name;
private Integer age;
public User(String name, Integer age) {
this.name = name;
this.age = age;
}
}
```
**User實體的資料訪問實現(涵蓋了快取註解)**
```java
@CacheConfig(cacheNames = "users")
public interface UserRepository extends JpaRe