簡體   English   中英

對內存中的Java對象進行故障轉移

[英]Failover an in-memory Java object

我正在尋找一些有關如何解決Java服務中的故障轉移問題的想法。

在較高的級別上,我的服務從另一個服務接收3個單獨的數據對象流,執行一些合並邏輯,然后寫入數據存儲。

流中的每個對象都有一個唯一的鍵。 來自3個流的數據可以同時到達,沒有保證的順序。

數據到達后,它將存儲在一些java.util.concurrent集合中,例如BlockingQueue或ConcurrentHashMap。

問題在於該服務必須支持故障轉移,如果將數據存儲在內存中的對象中進行故障轉移,我不確定如何解決此問題。

我有一個簡單的想法是:

  1. 接收對象時以及添加到隊列之前,寫入文件/其他地方
  2. 最終處理對象並將其存儲在數據存儲區中時
  3. 發生故障轉移時,請確保復制同一文件,並且我們知道需要接收哪些對象的數據

性能是我服務中的重要因素,並且由於IO昂貴,這似乎是一種粗略的方法,並且非常簡單。

因此,我想知道是否有任何庫等可以輕松解決此問題?

我之所以使用Java Chronicle,部分原因是因為我編寫了它,但主要是因為...

  • 它可以每秒以文本或二進制格式向磁盤寫入和讀取數百萬個條目。
  • 可以在進程之間共享,例如具有亞微秒延遲的主動-主動群集。
  • 不需要系統調用或刷新即可推出數據。
  • 使用者不會降低生產者的速度,使用者可以提前數GB(比機器的總內存還多)
  • 它可以低堆​​無GC和無鎖的方式使用。

暫無
暫無

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

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