簡體   English   中英

雲中的Java框架

[英]Java Frameworks in the Cloud

因此,我試圖最終了解基於雲的企業應用程序如何工作,以及他們的架構通常是什么樣子。 假設我使用像亞馬遜這樣的雲提供商。 假設 (請糾正我,如果我錯了),我將支付1+個虛擬機,根據我的應用程序需要容納一堆軟件。

我對jcloudsTerracotta等框架如何融入圖片感到困惑。 jclouds將自己宣傳為“ 一個可以幫助您開始使用雲的開源庫 ”,並列出了許多巨大的功能,如果沒有有意義的示例,對我來說並不重要。 Terracotta自稱是一個高規模的集群框架。 為什么我需要使用像jclouds這樣的東西? 我將使用哪些具體的具體方案?

再說一遍,如果我使用亞馬遜作為我的雲提供商,他們不會已經高度擴展嗎? 為什么我需要雲中的兵馬俑?

所以你有你的Linux機器(虛擬實例),它工作正常。 但突然之間你需要擴展 - 那就是你需要在需求增加時啟動更多實例並在它關閉時關閉它們。 所以你可以做的就是使用亞馬遜的API來啟動EC2實例 - 為他們提供你可以從管理控制台做的一切(甚至更多)。 但使用亞馬遜的API基本上將你的雙手綁在亞馬遜上。 對於像JCloud這樣的框架,你所做的就是這樣(這是偽代碼):

CloudProvider provider = new CloudProvider.getProvider("Amazon"); 
provider.authenticate("username", "password");
provider.startInstance("some option", numOfInstances);

所以說你必須擴展,你使用JClouds部署在亞馬遜上 - 你將使用類似上面的東西但突然你決定從亞馬遜遷移到Rackspace所以不要重新設計你的應用程序的所有邏輯通過配置實例和使用它們,您只需更改

CloudProvider provider = new CloudProvider.getProvider("Amazon");

喜歡的東西

CloudProvider provider = new CloudProvider.getProvider("RackSpace");

並繼續使用authenticate方法和startInstance,但隨后該庫將采用如何將此庫方法實際“轉換”為給定雲提供程序支持的特定方法。 基本上它是一種抽象代碼的方式,它必須處理底層的雲提供者 - 只要它提供服務,你就不應該關心它是誰,對吧?

將應用程序“帶入雲端”至少有兩個方面。

首先,您必須管理節點:在所有節點上部署應用程序,監控它們,啟動新節點以實際擴展,檢測和替換故障節點,實現新應用程序版本的某些更新方案,等等。 通常,如果沒有工具,這是不合理的。 JClouds適用於此,因為它涵蓋了其中的一些要點。

其次,您的應用程序本身必須“雲就緒”。 您不能使用任意應用程序,將其放在多個節點上並期望它可以很好地擴展。 這里的要點是定義如何擴展所有節點之間對共享數據的訪問(SQL數據庫,NoSQL數據存儲,潛在的會話復制......)。 通常,您使用一些現有的框架/ appserver / datastore來管理您的共享狀態。 Terracotta就是其中之一,基本上它提供了一種在多個節點上的JVM實例之間共享內存的有效方法。

暫無
暫無

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

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