VMware的CloudFoundry服務(wù)對(duì)PostgreSQL支持
今年年初,VMware宣布了CloudFoundry項(xiàng)目,一款平臺(tái)即服務(wù)(PAAS)開(kāi)源解決方案,其預(yù)置提供對(duì)MongoDB、MySQL及Redis此類服務(wù)的支持。最近它將PostgreSQL和RabbitMQ加入到云服務(wù)列表中以便為各應(yīng)用所使用,同時(shí)也提供了一個(gè)可運(yùn)行在單個(gè)工作站上的Micro版CloudFoundry。
將PostgreSQL納入CloudFoundry還是很有趣的,因?yàn)樗且粋€(gè)非常有特色的傳統(tǒng)數(shù)據(jù)庫(kù),其受眾較之MySQL或MongoDB的用戶截然不同。為了更好使用PostgreSQL,cloudfoundry并沒(méi)有直接使用其正常發(fā)布的版本而是在vFabric之上定制了一個(gè)版本,這在官方博客上有做解釋。(譯者注:針對(duì)云平臺(tái)對(duì)PostgreSQL做了一些優(yōu)化。)
該博客上給了一個(gè)樣例說(shuō)明如何利用Spring Roo在一個(gè)Java項(xiàng)目中使用PostgreSQL。我們這里介紹另一種可選方案,針對(duì)的Java應(yīng)用是某個(gè)基于Spring使用了JPA的WAR。
假設(shè)你的應(yīng)用已有的Spring上下文初始化內(nèi)容如:
而META-INF/persistence.xml文件如:
多虧了CloudFoundry的自動(dòng)配置功能,此應(yīng)用可以被直接上傳到CloudFoundry,完全不用做任何修改。
PostgreSQL(包括MySQL和其他平臺(tái)支持的服務(wù))充分利用了Cloudfoundry提供的自動(dòng)配置功能。在特定條件下,使用了PostgreSQL的某一本地Java應(yīng)用可以上傳到Cloudfoundry而無(wú)需修改任何一行代碼。
自動(dòng)配置利用了Spring核心容器的功能,當(dāng)下面兩個(gè)條件都滿足的情況下可以生效:
任一給定的服務(wù)類型有且只有一個(gè)服務(wù)實(shí)現(xiàn)。比如,你應(yīng)該只給自己的應(yīng)用綁定一個(gè)關(guān)系型數(shù)據(jù)庫(kù)服務(wù)(MySQL或PostgreSQL)。
每個(gè)匹配類型對(duì)應(yīng)有且只有一個(gè)bean。比如,在你的應(yīng)用上下文中應(yīng)該只出現(xiàn)一個(gè)數(shù)據(jù)源bean。
如果滿足上述需求,那Cloudfoundry將會(huì)自動(dòng)攔截你的本地?cái)?shù)據(jù)源,并使用Cloudfoundry服務(wù)來(lái)代替那些設(shè)置在Spring上下文中的值。
剩下***要做的就是積極地回答當(dāng)應(yīng)用被上傳到云上,vmc是何時(shí)請(qǐng)求服務(wù)綁定的。
對(duì)于更加復(fù)雜的應(yīng)用,Spring 3.1預(yù)計(jì)能增加一個(gè)特殊的云命名空間并提供運(yùn)行時(shí)概要支持。
查看英文原文:VMware's CloudFoundry Service Gains Support for PostgreSQL