【Cloud Foundry】Cloud Foundry学习(四)——Service
在阅读的过程中有不论什么问题,欢迎一起交流
QQ:1494713801
Services:Cloud Foundry的Service模块从源码控制上看就知道是一个独立的、可Plugin的模块,以方便第三方把自己的服务整合入 CloudFoundry生态系统。在Github上看到service是与CloudFoundry Core项目vcap独立的一个repository,为vcap-service。Service模块当中设计原则是方便第三方服务提供商提供服务。
在 这方面CloudFoundry做得非常成功。从Github上看。已经有下面服务提供:a)MongoDB;
b) mysql; c) neo4j; d) PostgreSql; e) RabbitMQ; f) Redis; g)vBlob。
基类都是放在base目录中。
第三方假设须要自己开发CloudFoundry的服务,须要继承改写它里面的两个基础类:Node和Gateway;而里面一些操作, 如:Provision。能够在base的provisioner.rb基础上增加自己的逻辑,相同的还有Service_Error和 Service_Message等。关于怎样写自己的Service,ELC的博客会推出对应文章具体论述,并不在本文的讨论范围里面,从架构了解上来 说,仅仅要知道服务间的关系,知道个服务与base间透过继承关系来横向扩充。而CloudFoundry与apps调用Service是通过base来完
成这一简单的架构方法就可以。
cf提供的服务按模块分能够分为:service gateway和 service node。类层次结构上分为两层:vcap-service-base提供了base的getway(vcap-service-base\lib \gateway.rb启动gateway。启动了一个thinserver,vcap-services-base\lib\base \asynchronous_service_gateway.rb,提供服务的处理方法)和node。详细的服务则需重载或实现gateway和 node的一些方法。
Service Gateway
service gateway提供REST接口。
从cloud controller过来的请求会先到service gateway做初步的处理,接着查找相应的服务节点。将请求通过发消息的方式托付给详细服务的节点处理。
Service Node
Service Node负责详细的处理gateway的消息。管理service如创建(provision)删除(provision)绑定(bind)解绑(unbind)。恢复服务(restore)等,并将详细请求发送到服务实例。
重要的概念
Service Instance
服务实例。详细的执行的服务进程,如执行着的mysqld。
执行在Service Node中,由Service Node管理。为DEA中的app提供服务。
Credentials
凭据,服务的配置和认证信息。创建服务的时候,service node会创建credentials。绑定app时则增加到app的环境变量中,app拿到改信息则能够訪问详细的服务。
关键工作流程
provision service
注意,vmc/STS到cloud controller的通信,到gateway的通信都是HTTP REST请求,gateway和node之间是NAT的消息。
bind service
绑定服务到应用:查找服务实例,查找credentials并返回给cloud controller。创建的服务。应用还不知道。须要通过绑定将服务的credentials信息设置到应用的环境变量,应用才干訪问到。
绑定mysql服务的流程例如以下:
核心代码
cloud controller
1. cloud_controller-master\cloud_controller\config\routes.rb:cloud controller URL到方法映射
2. cloud_controller-master\cloud_controller\app\controllers\services_controller.rb:针对service的controller
gateway
1. vcap-services-base-master\lib\base\asynchronous_service_gateway.rb:暴露接口的gateway
2. vcap-services-base-master\lib\base\provisioner.rb:gateway的服务方法
Service Node
1. vcap-services-base-master\lib\base\node.rb:node基类
2. cf-services-release-master\src\mysql_service\lib\mysql_service\node.rb:mysql node
【Cloud Foundry】Cloud Foundry学习(四)——Service的更多相关文章
- Spring Cloud 微服务架构学习笔记与示例
本文示例基于Spring Boot 1.5.x实现,如对Spring Boot不熟悉,可以先学习我的这一篇:<Spring Boot 1.5.x 基础学习示例>.关于微服务基本概念不了解的 ...
- (转)SpringMVC学习(四)——Spring、MyBatis和SpringMVC的整合
http://blog.csdn.net/yerenyuan_pku/article/details/72231763 之前我整合了Spring和MyBatis这两个框架,不会的可以看我的文章MyBa ...
- Spring Boot 项目学习 (四) Spring Boot整合Swagger2自动生成API文档
0 引言 在做服务端开发的时候,难免会涉及到API 接口文档的编写,可以经历过手写API 文档的过程,就会发现,一个自动生成API文档可以提高多少的效率. 以下列举几个手写API 文档的痛点: 文档需 ...
- TweenMax动画库学习(四)
目录 TweenMax动画库学习(一) TweenMax动画库学习(二) TweenMax动画库学习(三) Tw ...
- SVG 学习<四> 基础API
目录 SVG 学习<一>基础图形及线段 SVG 学习<二>进阶 SVG世界,视野,视窗 stroke属性 svg分组 SVG 学习<三>渐变 SVG 学习<四 ...
- Android JNI学习(四)——JNI的常用方法的中文API
本系列文章如下: Android JNI(一)——NDK与JNI基础 Android JNI学习(二)——实战JNI之“hello world” Android JNI学习(三)——Java与Nati ...
- SCARA——OpenGL入门学习四(颜色)
OpenGL入门学习[四] 本次学习的是颜色的选择.终于要走出黑白的世界了~~ OpenGL支持两种颜色模式:一种是RGBA,一种是颜色索引模式. 无论哪种颜色模式,计算机都必须为每一个像素保存一些数 ...
- ZigBee学习四 无线+UART通信
ZigBee学习四 无线+UART通信 1) 协调器编程 修改coordinator.c文件 byte GenericApp_TransID; // This is the unique messag ...
- Expression Blend学习四控件
原文:Expression Blend学习四控件 Expression Blend制作自定义按钮 1.从Blend工具箱中添加一个Button,按住shift,将尺寸调整为125*125; 2.右键点 ...
- day 83 Vue学习四之过滤器、钩子函数、路由、全家桶等
Vue学习四之过滤器.钩子函数.路由.全家桶等 本节目录 一 vue过滤器 二 生命周期的钩子函数 三 vue的全家桶 四 xxx 五 xxx 六 xxx 七 xxx 八 xxx 一 Vue的过滤 ...
随机推荐
- LoadRunner解决超时错误
在运行脚本回放过程中,有时会出现错误,这在实际测试中是不可避免的,毕竟自动录制生成的脚本难免会有问题,需要运行脚本进行验证,把问题都解决后才加入到场景中进行负载测试.下面结合常用的协议(如Web.We ...
- webSQL 实现即时通讯
websql存储方式一共有以下几个方法 openDatabase:这个方法使用现有的数据库或新建数据库来创建数据库对象. transaction:这个方法允许我们执行事务处理; executeSql: ...
- ES2017 keys,values,entries使用
let {keys, values, entries} = Object; let obj = { a: 1, b: 2, c: 3 }; for (let key of keys(obj)) { c ...
- UVA 10168 Summation of Four Primes(数论)
Summation of Four Primes Input: standard input Output: standard output Time Limit: 4 seconds Euler p ...
- 《The Story of My Life》Introductiom - The Life and Work of Helen Keller
Helen Keller was born on June 27,1880, in Tuscumabia, Alabama, to Captain Arthur Henry Keller, a Con ...
- docker 中 安装 openssh-server
1,首先,需要从docker官网获得centos或Ubuntu镜像 2,当本地已有Ubuntu镜像后(大概200M左右大小),使用如下命令 docker run -t -i ubuntu /bin/b ...
- RJ45接口定义
RJ45接口定义 常见的RJ45接口有两类:用于以太网网卡.路由器以太网接口等的DTE类型,还有用于交换机等的DCE类型. DTE我们可以称做“数据终端设备”,DCE我们可以称做“数据通信设备”.从某 ...
- Hadoop 集群搭建 mark
Hadoop 集群搭建 原创 2016-09-24 杜亦舒 性能与架构 性能与架构 性能与架构 微信号 yogoup 功能介绍 网站性能提升与架构设计 目标 在3台服务器上搭建 Hadoop2.7.3 ...
- springMVC中实现用户登录权限验证
通过上网搜资料显示,使用filter和interceptor都可以实现.不过推荐使用interceptor. 下面就使用Interceptor实现用户登录权限验证功能. 拦截器需要实现Inceptor ...
- 从request获取各种路径总结
一.获得都是当前运行文件在服务器上的绝对路径 在servlet里用: this.getServletContext().getRealPath() 在struts用: this.getServlet( ...