簡體   English   中英

使用Weblogic會話復制處理內存數據庫

[英]Using Weblogic session replication for sort of in-memory database

我必須構建一個內存數據庫,我知道我可以使用內存數據管理解決方案,例如EhCache和HazelCast,但我傾向於不將它們插入系統並使用Weblogic會話復制來實現。

以下是我的問題:

  • 由於這實際上不是用戶會話,我可以在應用程序啟動時創建會話,然后使用Weblogic會話復制功能來實現會話復制嗎?
    • 還是應該考慮使用Weblogic應用程序上下文復制,這可能嗎?
  • 我是否需要使用Weblogic群集來利用WL會話復制,或者也可以不使用它來完成復制?
  • 假設我有4個WL服務器(在不同的盒子上運行),並且都在同一群集中,如果任何節點/服務器已將數據放入會話中,那么它將自動在所有其他節點/服務器中復制嗎?
  • 假設我關閉了3個節點/服務器,這些節點重新啟動后,我的活動節點會自動將數據推送到啟動節點中嗎?

應該使用Web會話作為內存數據庫。 大多數內存數據庫可以對跨節點的數據分配方式進行微調。 他們還具有交易和恢復支持。 Web會話是節點之間Java對象的非常簡單的復制,您甚至不應該在其中保存關鍵數據。 在Web會話對象中復制數據的主要目的是在服務器宕機的情況下,使用戶保持登錄另一台服務器的狀態,並繼續其工作,即某些有狀態的Web UI。

根據所使用的WebLogic版本(基於獲得的許可證),您可能已經可以訪問Oracle內存數據網格解決方案Coherence。

更新 OP的以下正確回答的問題。

由於這實際上不是用戶會話,我可以在應用程序啟動時創建會話,然后使用Weblogic會話復制功能來實現會話復制嗎?

  • 還是應該考慮使用Weblogic應用程序上下文復制,這可能嗎?

(Web應用程序的)“應用程序范圍”中的對象不會被復制。 您也許可以使用JNDI來做到這一點,但是同樣,我不建議您使用這兩種方法(包括啟動偵聽器以某種方式將其推送到會話中)。

我是否需要使用Weblogic群集來利用WL會話復制,或者也可以不使用它來完成復制?

是的,如果要會話復制,則需要WebLogic群集。 除了使用群集外,還有一些要求。 請參閱WLS 12.2.1 Docs中的文檔章節6群集中的故障轉移和復制

假設我有4個WL服務器(在不同的盒子上運行),並且都在同一群集中,如果任何節點/服務器已將數據放入會話中,那么它將自動在所有其他節點/服務器中復制嗎?

並非所有服務器,只有少數服務器。 有關使用復制組和其他選項的更多詳細信息,請參見文檔。

假設我關閉了3個節點/服務器,這些節點重新啟動后,我的活動節點會自動將數據推送到啟動節點中嗎?

它不是那么簡單,但是總之,它並沒有按您希望的那樣工作。 會話未復制到WebLogic群集內的所有節點。 復制發生在足夠多的節點(主節點和輔助節點)上。 有關WLS文檔12.2.1的更多信息。

同樣,您不應將HTTP會話復制功能用作內存數據庫。 它根本不是為此設計的。 與其“構建一個內存中的數據庫”,不如使用一個。

但是,如果確實要使用HTTP Session作為“內存數據庫”,則至少要確保使用Coherence * Web作為WebLogic中的復制機制。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM