轻诉架构
1.应用之云飘啊飘
我们知道GE Predix云平台是基于Cloud Foundry (CF)平台开发的。 所以 CF命令行(CLI)在使用Predix云平台上有着重要的作用。 作为开始部署使用Predix云平台的用户来说, 一个轻度的CF CLI的解释会是一个比较好的入门选择。 所以飘在我们最前面的, 目前是Predix工业云平台, 其实背后有Cloud Foundry云平台。
那为什么Predix云后面还有云呢?为什么选Cloud Foundry呢? 因为Predix云是要将一个可以绑定工业数字化模型的PaaS云, 那么底层需要选择一个通用的PaaS云, 而CF就是一个极好的PaaS云。 PaaS是要帮屏蔽了管理中间件和运行部分, 让你集中在应用和数据。 底层还有IaaS云, 帮你屏蔽了管理操作系统。
其实除了这三层之外,还有SaaS层, 但是Predix为了适应不同的工业领域的应用开发, 不能走到SaaS层, 固定好数据和应用, 所以只能到PaaS层:
那为什么选Cloud Foundry,而不选其他的PaaS平台呢? 首先我们看一下目前有哪些知名的PaaS平台, 不知名的, 肯定不太靠谱了。 我们看到在PaaS层面上, 除了Docker和Cloud Foundry, 其他的分布式Amazon, IBM, Microsoft,RedHat和SAP的平台。 相比较而言, Amazon, IBM, Microsoft和SAP都有自己的工业业务, 一定程度是也可以是GE的竞争对手。 所以Predix不能选由竞争对手主导的平台作为主流。 再比较Docker,Cloud Foundry,和RedHat的OpenShift。 那么Cloud Foundry在可扩展,稳定性方面的优势就比较明显了。 所以GE和EMC一起投资了Pivotal Software。
CF是方便你管理应用和数据的PaaS云平台。 那么, 一般一个在线服务, 会有三层:用户层, 服务层,和资源层(数据层)。
2. 不同架构高呀高
那么对应到三层里面的服务层, 要做好用户层的需求, 有个经典的MVC模型, 划分出模型Model, 来搞业务逻辑, 视图View来搞展示界面, 还有控制器Controller, 来匹配模型和视图。 这样, 控制器就显得尤为重要。
这样我们对应不同的URL访问, 就需要匹配不同的MVC模型。
这时候, 人们把这个匹配的功能独立出来, 提出了路由Route的功能。
随着路由功能的增强, 他成为了新型MVC模型的一部分,使得不同服务可以使用相同的Controller,同一个服务也可以使用不同的Controller。
很快, 人们又发现, 一个Controller需要的有些子功能还需要其他服务Service的支持。
那么如何把Controller和后台一些服务绑定, 这就需要有服务代理Service Broker。
最明显的是数据服务Data Service:
这样, 我们把上面的应用, 除了Controller之外的路由Router, 服务代理Service Broker, 引入了Application的体系里面。
其实, Controller还是会有相应的日志输出的, 这里用于经常服务日志Log的一个组件就是信息总线Message Bus。
其实在Cloud Foundry里面, 一般情况下, Controller不是直接和Message Bus打交道, 很多时候是把状态发给Health Manager, 然后由Health Manager把日志信息发给总线的。
这样在CF里面, Health Manager就把状态信息发给总线, 而总线会把信息发给Heath Monitor进行展示。
除了上面这些比较集中的功能, CF还提供对用户登录的管理, 由两部分组成, 登录服务器Login Server 和 用户账户认证UAA User Account Authentation。
这样综合上面三方面的内容, 我们可以大致得到CF提供了几大模块, 这些模块分成7层模型, 路由层routing, 用户认证层authentication, 应用生命期层app lifecycle, 应用存储运行层app storage & execution, 服务层 services, 信息层messaging, 日志和性能仪表层metrics and logging。
他们之间的简单通信, 就得到了CF的架构, 譬如:
1. UAA Login和Cloud Controller之间。
2. Cloud Controller和Health Manager(HM9000)和NATS Message Bus 和Metrics Controller之间。
3. Cloud Controller和Service Broker之间。
4. 另外,运行虚拟机也有细分, DEA Droplet Execution, Agent Warden Server等构成了运行虚拟机作为应用执行环境:
举个PHP应用的例子, DEA里面运行好多节点, 每个节点有个PHP的运行, 然后由Warden管理这些节点的生命周期, 而他们的访问由Router导入访问, Cloud Controller (CC)把状态发给Health Manager (HM9000), 而每个Controller要访问的数据库服务有服务代理Broker管理。
3.应用执行Go吧Go
其实,在最新的CF架构里面, 对执行架构进行了升级, 从DEA Droplet Execution Agent架构升级到了Diego架构。 其中最大的升级就是把开发语言从Ruby换成了Go,同时更名了对应的名称。 核心的, 虚拟机的生命期管理,从Warden变成了Garden; Controller的运行从DEA 节点Node 变成了 Diego Cell; Controller之间的协调器从DEA变成了Diego Brain。 如下表所示:
还可以看到原来DEA是和Cloud Controller绑定的, 限制Diego和Cloud Controller解耦合了。
这样我们来看一下整个组件有哪些变化:
从上图, 我们看到, 应用运行从DEA框架换成Diego框架之后, Message Bus 和 Health Manager 也对应进行了变化。 直观来说就是把Health Manager的功能进一步独立细分了, 把一部分功能独立成信息层的功能了。 从Health Manager (HM9000) 变成了 nsync, BBS, 和 Cell Rep 更多组件了。
至此, 我们再来详细看一下, 前面讲的Controller, Router, Health Manager, Message Bus, Application Execution是如何变化的?
可以看到:
1. Controller不是再和Health Manager联系了, 是和nsync进行交互。 整个组成Controller API,CAPI模块。
2. Router和Controller也不是和NATS Message Bus交互了,而是用bbs替换了NATS的功能。
3. 引入auction机制到Diego Brain来作为协调机制
另外一个不太容易看到的特性是:
4. Warden只能运行Linux容器, 而Garden提供了各种操作系统的虚拟机。
综上, 我们把Cloud Foundry的架构轻度解释了一遍, 这样是为了后面我们把命令行和这些部分对应起来。
轻诉命令行
命令行操作的安装就跳过了, 可以参考 https://docs.cloudfoundry.org/cf-cli/install-go-cli.html。
1. 登录进入CF
2.空间Space管理
3.应用APP管理
4.服务Service管理
在每个Space里面, 除了你可以创建管理APP之外, 非常类似你可以创建Service。5.路由Route管理
6.域名Domain管理
7.环境变量Environment管理
除了上面空间, 应用,服务, 路由, 域名之外。 还有很重要求的就是环境变量和日志的管理。轻诉蓝绿部署
1.蓝绿之分
2.蓝绿之分
小结
这样我们从一个web应用出发,说明了Cloud Foundry是如何为这个应用建立需要的环境的。 之后,再介绍了部分核心的命令行, 与前面说明对应起来。 谢谢大家~~~