2015-10-29 47 views
6

我正在使用Spring和Spring Security,並且希望使用RedisHttpSessionConfiguration的spring-session-data-redis來在redis上存儲會話ID(因此客戶端不會丟失會話當webapp失敗並切換到另一臺服務器時)。關於Redis的春季會議 - 當Redis發生故障時,什麼是故障轉移

我的問題,當Redis服務器關閉時會發生什麼? 通過將會話存儲在內存中,直到Redis恢復備份,Spring能夠繼續工作嗎?有沒有辦法像這樣配置它?

我在AWS ElastiCache上使用Redis,並且在DNS上配置替換主節點之前,故障轉移可能需要幾分鐘的時間。

+0

所以答案是否定的。如果Redis出現故障,則spring-sesion-data-redis失敗並拋出異常。有沒有人知道沒有的實現?可能備份數據到內存映射? – Berethor

+0

我在這裏也是這麼想的。有關此的任何消息,請更新。 –

回答

0

據我所見,您將需要提供CacheErrorHandlerjavadoc)的實施。

您可以通過提供Configuration實例來實現此目的,該實例實現CachingConfigurer,並覆蓋errorHandler()方法。

例如:

@Configuration 
@Ena1bleCaching 
public class MyApp extends SpringBootServletInitializer implements CachingConfigurer { 

    @Override 
    public CacheErrorHandler errorHandler() { 

    return MyAppCacheErrorHandler(); 
    } 

} 

究竟如何,你會再提供不間斷的服務是我不明白 - 而無需在故障轉移緩存複製當前會話,它似乎是不可能的。

如果您正在使用ElasticCache,是不是可以讓AWS爲您處理複製設置,以便如果一個節點變爲doen,另一個節點可以接管?

相關問題