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