cloud controller v2源码解析

本文深入解析 Cloud Controller v2 的核心组件,包括 VCAP::CloudController::Runner、Controller 和 Permissions 等模块,阐述了从 App 上传、打包到权限控制的流程。启动脚本涉及配置加载、数据库初始化,而 RESTController 处理 HTTP 请求,Permissions 模块则实现了细粒度的权限控制。此外,还详细介绍了 AppManager、AccountCapacity 和 BlobStore 的功能。
摘要由CSDN通过智能技术生成

在bin目录下面有一个cloud_controller启动脚本,主要进行了源码目录lib和app的加载,然后进行了vcap::cloudcontroller::runner初始化,并调用run!启动接口

启动命令:./bin/cloud_controller [-c] [-m] [-d]

VCAP::CloudController::Runner

  1. 读取启动命令后的参数
    1. -c 设置配置文件读取路径,如果没有指定-c,那么默认会读取config/cloud_controller.yml文件作为cloud_controller启动的配置文件,读取配置文件信息到内存中保存起来,供后续使用
    2. -d 进行rack_env设置,默认是production模式,如果有-m那么会是development,那么执行 register Sinatra::Reloader,动态加载 reload_path 路径下的*.rb文件,这样就可以在不需求重启进程情况下,查看修改后结果,加快开发速度
    3. -m 数据库初始化,默认进行 rake db:migrate 后,数据库都是空的,加了-m 选项,cc会在启动的时候将一些默认的值写到数据库中,比如:quota定义等等
  2. setno日志对象初始化
  3. message_bus初始化,所有的subscribe和publish都通过这个对象来进行操作
  4. cloud_controller初始化,创建pid文件,设置logger,创建和db数据库的连接,对象初始化将message_bus和config作为参数传递
  5. 创建app,用户接收所有的request请求,包括消息的订阅和注册
  6. thin_server初始化,app设置为第5部的那个app值,bing到ip和port上,由app来处理请求
  7. 监听信号,如果接收到term quit的信号的话,那么thin server会暂停,并且调用EM.stop命令暂停

使用EM.run来启动一个事件循环机制,当有io事件,信号,或者是timer时候,会调用run中相应的处理模块,直到调用EM.stop时候,才会退出这个loop。

VCAP::CloudController::Controller

继承于Sinatra::Base,处理所有http请求的入口

http请求分为两部分:

  1. 一部分是直接定义在*.rb文件中,比如 lib/cloud_controller/legacy_api/*.rb 下的所有请求都是直接在脚本中定义get或者post请求处理函数,这种是直观就可以看见的
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值