• linkedu视频
  • 平面设计
  • 电脑入门
  • 操作系统
  • 办公应用
  • 电脑硬件
  • 动画设计
  • 3D设计
  • 网页设计
  • CAD设计
  • 影音处理
  • 数据库
  • 程序设计
  • 认证考试
  • 信息管理
  • 信息安全
菜单
linkedu.com
导航菜单
  • 网页制作
  • 数据库
  • 程序设计
  • 操作系统
  • CMS教程
  • 游戏攻略
  • 脚本语言
  • 平面设计
  • 软件教程
  • 网络安全
  • 电脑知识
  • 服务器
  • 视频教程
  • windows
  • 服务器硬件
  • 服务器运维
  • 云计算
  • 虚拟化
  • IIS教程
  • Linux
  • Apache
  • Ftp
  • DNS
  • Nginx
您的位置:首页 > 服务器 >云计算 > Cloud Foundry service broker开发部署实例解析(上),foundrybroker

Cloud Foundry service broker开发部署实例解析(上),foundrybroker

作者:网友 字体:[增加 减小] 来源:互联网

本文主要包含cloud foundry,cloud foundry官网,cloud foundry gpl,cloud foundry tools,foundry service等服务器相关知识,网友希望可以进行参考

Cloud Foundry service broker开发部署实例解析(上),foundrybroker


Cloud Foundry(CF)通过buildpack扩展运行不同语言应用的能力,通过service broker(SB)扩展支持应用所需的各种关系数据库、中间件、缓存、云存储、内存数据库等各种服务的能力。这篇博文将从头至尾介绍通用的SB开发和部署。

什么是service broker

SB就是实现了CF规定的一组rest api的服务端程序,它作用于CF与服务的资源池中间,CF通过调用SB上这些规定的rest api对服务资源池进行管理,而SB实际执行这些资源池管理操作。比如,对于oracle而言,管理意味着管理服务计划(即create/drop profile)、创建/绑定/解绑/删除服务实例(即create tablespace、create user、drop user、drop tablespace)。下面给出SB需要实现rest api列表,理论上有了这张表,随便用什么语言写个web service的服务端就行了,这些接口中有几个是博主为实现本文的开发和部署过程自行添加的。

METHOD URL 用途
GET /v2/catalog 获取此SB管理的全部服务
POST /v2/catalog/services 创建新服务
DELETE /v2/catalog/services/{sid} 删除服务
POST /v2/catalog/services/{sid}/plans 创建新服务计划
PUT /v2/catalog/services/{sid}/plans/{planId}/costs 为计划增加单价
PUT /v2/catalog/services/{sid}/plans/{planId}/pool 为计划的资源池添加资源
DELETE /v2/catalog/services/{sid}/plans/{planId} 删除计划
DELETE /v2/catalog/services/{sid}/plans/{planId}/costs/{costId} 删除计划的单价
DELETE /v2/catalog/services/{sid}/plans/{planId}/pool/{resId} 删除计划的资源
PUT /v2/service_instances/{instanceId} 创建服务实例,用户创建服务时执行
DELETE /v2/service_instances/{instanceId} 删除服务实例,用户删除服务时执行
GET /v2/service_instances 获取服务实例信息
PUT /v2/service_instances/{instanceId}/service_bindings/{bindingId} 绑定服务到应用,用户绑定服务时执行
DELETE /v2/service_instances/{instanceId}/service_bindings/{bindingId} 将服务从应用解绑定,用户解绑服务时执行

开发

本文给出的SB使用java(spring)开发的,使用了hibernate,基本思路是下载源代码,按照下面的描述修改必要的实现,然后打包就可以开始部署了。这一SB的基本思路是将已有的资源池的授权信息存储到SB中,不自动化的做任何部署和管理工作,所以理论上,这个SB是用于任何服务的管理。

准备

首先下载源代码,这代码是个gradle工程,首先得准备好开发环境,不管用原生eclipse还是sts,都得先安装gradle support,以STS为例,下载解压后,打开集成开发环境,在dashborad-》IDE EXTENSIONS中,搜索gradle support并安装。将源代码解压,在STS的package explorer中import gradle project,选择到解压的目录,build model,然后点击finish。

修改源代码

  • src/main/resources/ServiceDescription.json
    这个文件是json格式服务的描述信息,程序首次运行时,会将此json作为创建新服务的输入
    name:服务的唯一标识
    description:显示在UI里的描述信息
    bindable:true
    tags:关键字
    longDescription:显示在UI里的详细描述信息
    imageUrl:显示在GUI里的图片地址
    displayName:显示在GUI里的服务名称
    providerDisplayName:显示在GUI里的服务供应商名称
    documentationUrl:显示在GUI里的服务文档地址
    supportUrl:显示在GUI里的服务支持网站
  • src/main/java/com/pivotal/cf/broker/config/AppConfig.java和RelationalCloudDataSourceConfig.java
    将这两个文件中的mdsbrokerdb修改为下一步部署在CF上时绑定的MySQL服务实例名称,比如samplebrokerdb
  • src/main/java/com/pivotal/cf/broker/model/PlanMetadataRes.java
    将下面的属性替换为管理的资源所需的授权信息,当然也要修改属性对应的setter和getter
@JsonProperty("kcxpaddr")
private String kcxpaddr;

@JsonProperty("kcxpport")
private String kcxpport;

@JsonProperty("rvipaddr")
private String rvipaddr;

@JsonProperty("rvport")
private String rvport;

@JsonProperty("username")
private String username;

@JsonProperty("password")
private String password;
  • src/main/java/com/pivotal/cf/broker/model/ServiceInstance.java
    将下面的属性替换为管理的资源所需的授权信息,当然也要修改对应的构造函数
@JsonSerialize
@JsonProperty("kcxpaddr")
@Column(name="kcxpaddr")
private String kcxpaddr;

@JsonSerialize
@JsonProperty("kcxpport")
@Column(name="kcxpport")
private String kcxpport;

@JsonSerialize
@JsonProperty("rvipaddr")
@Column(name="rvipaddr")
private String rvipaddr;

@JsonSerialize
@JsonProperty("rvport")
@Column(name="rvport")
private String rvport;

@JsonSerialize
@JsonProperty("username")
@Column(name="username")
private String username;

@JsonSerialize
@JsonProperty("password")
@Column(name="password")
private String password;
  • src/main/java/com/pivotal/cf/broker/model/ServiceManagementImpl.java
    createInstance()中,修改ServiceInstance instance = new ServiceInstance的参数,输入正确的授权信息
    removeServiceInstance()中,将下面代码修改为正确的授权信息
res.setKCXPAddr(instance.getKCXPAddr());
res.setKCXPPort(instance.getKCXPPort());
res.setRVIPAddr(instance.getRVIPAddr());
res.setRVPort(instance.getRVPort());
res.setUserName(instance.getUserName());
res.setPassword(instance.getPassword());

createInstanceBinding(),将下面代码修改为正确的授权信息

credentials.put("KCXPAddr0", instance.getKCXPAddr());
credentials.put("KCXPPort0", instance.getKCXPPort());
credentials
  


 
分享到:QQ空间新浪微博腾讯微博微信百度贴吧QQ好友复制网址打印

您可能想查找下面的文章:

  • 如何配置和使用Pivotal Cloud Foundry里的HAPorxy(下),pivotalhaporxy
  • Cloud Foundry buildpack开发部署实例解析,foundrybuildpack
  • Cloud Foundry service broker开发部署实例解析(下),foundrybroker
  • Cloud Foundry service broker开发部署实例解析(上),foundrybroker
  • Cloud Foundry安装部署指南(下),cloudfoundry

相关文章

  • Hbase Client Test Case,hbasecase
  • 漫谈分布式系统:三种通信范型
  • Bulk Load-HBase数据导入最佳实践,load-hbase最佳实践
  • hive 不以科学计数法输出,hive计数法输出
  • Azure云平台学习之路(一)——Azure简介,azure之路
  • hive FAILED: ParseException line 1:814 cannot recognize input near ‘;’ <EOF>’,hiveparseexception
  • Azkaban的AJAX的RestFul接口调用事例
  • 机器学习--Logistic回归算法案例,--logistic算法
  • 个性化推荐的十大挑战,个性化十大挑战
  • HDP出现Could not create the Java Virtual Machine解决方法,hdpvirtual

文章分类

  • windows
  • 服务器硬件
  • 服务器运维
  • 云计算
  • 虚拟化
  • IIS教程
  • Linux
  • Apache
  • Ftp
  • DNS
  • Nginx

最近更新的内容

    • 【Spark】Spark的Standalone模式安装部署,sparkstandalone
    • Apriori算法的java实现,apriori算法java
    • Hadoop 1.x的Shuffle源码分析之2,hadoopshuffle
    • 【Spark1.3官方翻译】 Spark Submit提交应用程序,spark1.3spark
    • Sqoop工具,sqoop安装
    • hive复杂类型访问操作,hive访问
    • OutOfMemoryError PermGen space 的解决办法(头痛了几天),permgenspace
    • Spark性能优化指南:高级篇
    • Hadoop集群性能优化一,Hadoop集群性能优化
    • Twitter 新一代流处理利器——Heron 论文笔记之Storm Limitations,

关于我们 - 联系我们 - 免责声明 - 网站地图

©2020-2025 All Rights Reserved. linkedu.com 版权所有