-1

有n個客戶,主要關心的是他們中的大多數在線(越多越好)的時間。由於預算和功耗的原因,只有一臺服務器。 我從很多角度都看到了這個問題,大多數在這個討論中暴露出Strategies for Java ORM with Unreliable Network and Low Bandwidth然後總結了我的選擇。羣集與複製

  1. 聚類。使用兵馬俑和使用安裝在節點上的第二臺服務器(無源)。
  2. 複製/同步。我最初的想法是:允許節點在網絡故障期間脫機,然後重新啓動操作。

你有什麼建議?

PS,如果有什麼錯誤的,我的推理告訴我

+1

不,這不容易。你在談論集羣/複製hibernate運行的服務器還是集羣/複製數據庫本身?您提到的文章似乎是關於處理與數據庫的不可靠連接和數據庫的不可靠性問題。你只有一個服務器,你在哪裏複製? – djna

+0

你說「客戶」 - 客戶是什麼?如果他們是您的* one *服務器的客戶端,並且它停機,他們將全部經歷停機時間(並且世界上所有的集羣/複製都無濟於事)。如果實際上它們被配置爲集羣或其他東西,請不要稱它們爲「客戶端」 - 它們也是服務器。 –

+0

對不起,如果我不清楚。這是我想進行一些更改的當前配置。事實上,如果現在唯一的服務器出現故障,所有系統都會停機,那就是問題所在。 因此,我認爲我可以在每個節點中使用本地數據庫實施羣集解決方案或複製解決方案。 感謝您的interes djna和Chris! – ZooMMX

回答

1

感謝您的這些想法。該應用程序是一個簡單的銷售點。在思考和分析您的答案後,我會嘗試將用戶,產品和銷售存儲在DSO中(同時使用一些框作爲服務器和節點)。有一次,具有數據庫的服務器可根據生產者 - 消費者模式進行銷售。

對於我短暫的溝通技巧,我還在學習英語!

0

我想你是說你有一臺機器,它您同時使用Hibernate和MySQL數據庫的應用程序。如果你丟失了那臺機器,你的用戶將無法工作。你在問是否可能有一些額外的韌性,並相信你已經確定了兩種解決方案。

你對這兩種解決方案都沒有提供太多的細節,所以我不打算再次猜測你的想法。

你也沒有多說關於應用程序的性質。如果(例如)它完全是隻讀的,那麼沒有數據庫更新,那麼複製相對容易。如果所有的寫法都是加法的並且不能相互衝突(例如某種民意測驗,則投票是/否),那麼再次使用可能有點排隊的複製相對比較容易。

然而,傳統的應用程序與用戶更新共享數據,其中一致的看法是 重要(例如我們不想賣掉最後一個可用的酒店房間兩次),然後複製變得棘手。

一種方法是將數據庫分離到高度可恢復的層,諸如Oracle RAC之類的產品具有非常聰明的彈性特徵,我想你會爲聰明付出代價。一旦你有了一個彈性數據庫,那麼你的應用程序集羣變得容易得多。我經常看到很多便宜的方塊並行運行應用程序,因爲最終的「真相」由數據庫管理。

然而,即使這是棘手的,除非該應用程序是預先設計的複製。你發現在App的基礎上做出的所有微妙的假設是某種意義上能夠依靠它的先前的真理觀點。像兵馬俑這樣的產品很可能(我從來沒有嘗試過,所以我不知道)有助於實現有彈性的設計,但除非設計考慮周全,否則可能會有商業上的缺陷。

我將您的想法解釋爲運行應用程序 db的多個並行副本以及處理同步問題。只有您知道這是否適合您的業務需求。您將面臨不一致的可能性,特別是在發生故障和再同步尚未完成的時候。

+0

Oracle RAC似乎是一個很好的選擇! – ZooMMX