自拍偷在线精品自拍偷,亚洲欧美中文日韩v在线观看不卡

Cloud Foundry Service Broker開(kāi)發(fā)部署實(shí)例解析(上)

云計(jì)算
Cloud Foundry(CF)通過(guò)buildpack擴(kuò)展運(yùn)行不同語(yǔ)言應(yīng)用的能力,通過(guò)service broker(SB)擴(kuò)展支持應(yīng)用所需的各種關(guān)系數(shù)據(jù)庫(kù)、中間件、緩存、云存儲(chǔ)、內(nèi)存數(shù)據(jù)庫(kù)等各種服務(wù)的能力。這篇博文將從頭至尾介紹通用的SB開(kāi)發(fā)和部署。

Cloud Foundry(CF)通過(guò)buildpack擴(kuò)展運(yùn)行不同語(yǔ)言應(yīng)用的能力,通過(guò)service broker(SB)擴(kuò)展支持應(yīng)用所需的各種關(guān)系數(shù)據(jù)庫(kù)、中間件、緩存、云存儲(chǔ)、內(nèi)存數(shù)據(jù)庫(kù)等各種服務(wù)的能力。這篇博文將從頭至尾介紹通用的SB開(kāi)發(fā)和部署。

[[130782]]

什么是service broker

SB就是實(shí)現(xiàn)了CF規(guī)定的一組rest api的服務(wù)端程序,它作用于CF與服務(wù)的資源池中間,CF通過(guò)調(diào)用SB上這些規(guī)定的rest api對(duì)服務(wù)資源池進(jìn)行管理,而SB實(shí)際執(zhí)行這些資源池管理操作。比如,對(duì)于oracle而言,管理意味著管理服務(wù)計(jì)劃(即create/drop profile)、創(chuàng)建/綁定/解綁/刪除服務(wù)實(shí)例(即create tablespace、create user、drop user、drop tablespace)。下面給出SB需要實(shí)現(xiàn)rest api列表,理論上有了這張表,隨便用什么語(yǔ)言寫個(gè)web service的服務(wù)端就行了,這些接口中有幾個(gè)是博主為實(shí)現(xiàn)本文的開(kāi)發(fā)和部署過(guò)程自行添加的。

METHODURL用途

Cloud Foundry service broker開(kāi)發(fā)部署實(shí)例解析

開(kāi)發(fā)

本文給出的SB使用java(spring)開(kāi)發(fā)的,使用了hibernate,基本思路是下載源代碼,按照下面的描述修改必要的實(shí)現(xiàn),然后打包就可以開(kāi)始部署了。這一SB的基本思路是將已有的資源池的授權(quán)信息存儲(chǔ)到SB中,不自動(dòng)化的做任何部署和管理工作,所以理論上,這個(gè)SB是用于任何服務(wù)的管理。

準(zhǔn)備

首先下載源代碼,這代碼是個(gè)gradle工程,首先得準(zhǔn)備好開(kāi)發(fā)環(huán)境,不管用原生eclipse還是sts,都得先安裝gradle support,以STS為例,下載解壓后,打開(kāi)集成開(kāi)發(fā)環(huán)境,在dashborad-》IDE EXTENSIONS中,搜索gradle support并安裝。將源代碼解壓,在STS的package explorer中import gradle project,選擇到解壓的目錄,build model,然后點(diǎn)擊finish。

修改源代碼

 

  1. src/main/resources/ServiceDescription.json 

這個(gè)文件是json格式服務(wù)的描述信息,程序***運(yùn)行時(shí),會(huì)將此json作為創(chuàng)建新服務(wù)的輸入

  • name:服務(wù)的唯一標(biāo)識(shí)
  • description:顯示在UI里的描述信息
  • bindable:true
  • tags:關(guān)鍵字
  • longDescription:顯示在UI里的詳細(xì)描述信息
  • imageUrl:顯示在GUI里的圖片地址
  • displayName:顯示在GUI里的服務(wù)名稱
  • providerDisplayName:顯示在GUI里的服務(wù)供應(yīng)商名稱
  • documentationUrl:顯示在GUI里的服務(wù)文檔地址
  • supportUrl:顯示在GUI里的服務(wù)支持網(wǎng)站
  1. src/main/java/com/pivotal/cf/broker/config/AppConfig.java和RelationalCloudDataSourceConfig.java 

將這兩個(gè)文件中的mdsbrokerdb修改為下一步部署在CF上時(shí)綁定的MySQL服務(wù)實(shí)例名稱,比如samplebrokerdb

  1. src/main/java/com/pivotal/cf/broker/model/PlanMetadataRes.java 

將下面的屬性替換為管理的資源所需的授權(quán)信息,當(dāng)然也要修改屬性對(duì)應(yīng)的setter和getter

  1. @JsonProperty("kcxpaddr"
  2.  
  3. private String kcxpaddr; 
  4.  
  5. @JsonProperty("kcxpport"
  6.  
  7. private String kcxpport; 
  8.  
  9. @JsonProperty("rvipaddr"
  10.  
  11. private String rvipaddr; 
  12.  
  13. @JsonProperty("rvport"
  14.  
  15. private String rvport; 
  16.  
  17. @JsonProperty("username"
  18.  
  19. private String username; 
  20.  
  21. @JsonProperty("password"
  22.  
  23. private String password;1234567891011121314151617 
  • src/main/java/com/pivotal/cf/broker/model/ServiceInstance.java

將下面的屬性替換為管理的資源所需的授權(quán)信息,當(dāng)然也要修改對(duì)應(yīng)的構(gòu)造函數(shù)

  1. @JsonSerialize 
  2.  
  3. @JsonProperty("kcxpaddr"
  4.  
  5. @Column(name="kcxpaddr"
  6.  
  7. private String kcxpaddr; 
  8.  
  9. @JsonSerialize 
  10.  
  11. @JsonProperty("kcxpport"
  12.  
  13. @Column(name="kcxpport"
  14.  
  15. private String kcxpport; 
  16.  
  17. @JsonSerialize 
  18.  
  19. @JsonProperty("rvipaddr"
  20.  
  21. @Column(name="rvipaddr"
  22.  
  23. private String rvipaddr; 
  24.  
  25. @JsonSerialize 
  26.  
  27. @JsonProperty("rvport"
  28.  
  29. @Column(name="rvport"
  30.  
  31. private String rvport; 
  32.  
  33. @JsonSerialize 
  34.  
  35. @JsonProperty("username"
  36.  
  37. @Column(name="username"
  38.  
  39. private String username; 
  40.  
  41. @JsonSerialize 
  42.  
  43. @JsonProperty("password"
  44.  
  45. @Column(name="password"
  46.  
  47. private String password;1234567891011121314151617181920212223242526272829 

 

  • src/main/java/com/pivotal/cf/broker/model/ServiceManagementImpl.java

createInstance()中,修改ServiceInstance instance = new ServiceInstance的參數(shù),輸入正確的授權(quán)信息

removeServiceInstance()中,將下面代碼修改為正確的授權(quán)信息

  1. res.setKCXPAddr(instance.getKCXPAddr()); 
  2.  
  3. res.setKCXPPort(instance.getKCXPPort()); 
  4.  
  5. res.setRVIPAddr(instance.getRVIPAddr()); 
  6.  
  7. res.setRVPort(instance.getRVPort()); 
  8.  
  9. res.setUserName(instance.getUserName()); 
  10.  
  11. res.setPassword(instance.getPassword());123456 

createInstanceBinding(),將下面代碼修改為正確的授權(quán)信息

  1. credentials.put("KCXPAddr0", instance.getKCXPAddr()); 
  2.  
  3. credentials.put("KCXPPort0", instance.getKCXPPort()); 
  4.  
  5. credentials.put("RVIPAddr", instance.getRVIPAddr()); 
  6.  
  7. credentials.put("RVPort", instance.getRVPort()); 
  8.  
  9. credentials.put("UserName",instance.getUserName()); 
  10.  
  11. credentials.put("Password",instance.getPassword());123456 

編譯打包

在STS的package explorer中,右鍵單擊項(xiàng)目,run as-》gradle build,如果是初次運(yùn)行,輸入下面的編譯打包gradle命令,run即可:

  1. clean 
  2.  
  3. build 
  4.  
  5. assemble123 

至此,我們就得到了程序包,下面就可以開(kāi)始部署了。
 

責(zé)任編輯:Ophira 來(lái)源: 云計(jì)算實(shí)務(wù)博客
相關(guān)推薦

2015-03-30 15:15:00

CloudFoundrPaaS開(kāi)源

2011-05-06 15:37:10

Service BroSQL Server

2011-04-22 10:13:42

Cloud FoundAzure

2015-04-14 11:10:22

PaaSCloudFoundrBuildpack

2015-06-09 10:36:13

Cloud FoundAzurePaaS

2018-08-22 18:16:47

2013-04-26 17:38:52

大數(shù)據(jù)全球技術(shù)峰會(huì)

2012-07-19 09:13:40

VMware云計(jì)算Cloud Found

2017-07-17 15:50:17

微服務(wù)Docker架構(gòu)

2011-05-06 15:48:35

Service BroSQL Server

2012-12-07 10:00:25

SpringOneCloud FoundVMware

2013-10-23 10:21:57

OpenStack

2009-12-01 10:49:44

Visual Stud

2012-05-14 10:49:25

Cloud Found

2011-11-15 16:48:58

Zend Studio

2022-07-03 06:58:46

deno開(kāi)發(fā)nodejs

2012-03-27 11:40:55

vmwareCloud Found

2014-03-07 09:26:46

PaaSCloud Found

2015-04-24 09:33:11

Cloud Found組件分析PaaS

2015-12-16 11:11:52

Cloud FoundSpring云計(jì)算
點(diǎn)贊
收藏

51CTO技術(shù)棧公眾號(hào)