2013-10-15 66 views
1

我想寫一個Java客戶端/服務器應用程序,應做到以下幾點:Java客戶端 - 服務器 - 文件分發到多臺服務器

  • 客戶端連接到兩個服務器中的一個
  • 服務器發送文本文件或它的內容到客戶端
  • 用戶編輯文件
  • 客戶端發送該文件返回到同時在兩個服務器和可靠地
  • 客戶端關閉應用程序

紅利:其中一臺服務器在傳輸時可能會關閉,所以它需要在啓動時接收文件。

什麼樣的體系結構或框架可以做到這一點很好又輕便? JGroup是一個好的開始?

編輯: 我必須承擔以下最低網絡:

  • 一個或多個客戶端啓動的應用程序,但絕不允許在同一時間來編輯文件。
  • 有一個或多個服務器,其中至少一個總是處於激活狀態(其中之一是排序的隨機)
  • 客戶端具有與所有服務器的地址
+0

如果這意味着集羣解決方案(換句話說:兩臺服務器都在同一個網絡中)考慮使用共享文件系統,這是迄今爲止最簡單的解決方案。 – nablex

+0

這肯定是最舒服的,但不幸的是這不適合我。不管怎麼說,還是要謝謝你。 – FoxDie

回答

0

甲JMS框架.xml文件(

  • 客戶端的帖子在隊列中的消息,其中包括服務器傾聽,詢問文件
  • 只有一臺服務器接收到這個請求,並將文件發送到:ActiveMQ的),可以使用隊列和一個主題解決您的問題客戶端
  • 客戶端編輯該文件
  • 客戶端發送的,其中兩個服務器訂閱

使用持久主題很重要,這樣的離線用戶(您的服務器)獲取該文件一旦他們重新持久主題編輯過的文件。

+0

聽起來很有趣。我會研究這一點。該持久話題在哪裏保存?因爲如果客戶發生這種情況,它可能會成爲一個問題,因爲我希望他能夠在發送文件後「隨時忘記」或簡單地退出。 – FoxDie

+0

主題和隊列都將由JMS代理(例如ActiveMQ)管理。這用作管理所有這些通信的獨立應用程序。 – coyote

+0

好的。所以我猜想,因爲我的客戶端不能保持在線狀態,所以代理必須位於所有服務器上,因爲我只能假設其中至少有一個保持活動狀態。所以我想我會創建一個從我的客戶端到所述服務器的點對點連接,該服務器將作爲代理向所有其他服務器通知新文件。那有意義嗎? – FoxDie

相關問題