VMware在今年4月份突然发布了业内第一个开源的PaaS——CloudFoundry。发布至今的这几个月里,笔者一直关注它的演进,并从它的架构设计中获益良多,觉得有必要写出来与大家分享一下。
本文会分为两个部份:第一部份主要介绍CloudFoundry的架构设计,从它所包含的模块介绍起,到各部份的消息流向,各模块如何协调合作;第二部份会在第一部份的基础上,以如何在你的数据中心里面用CloudFoundry部署一个私有PaaS为目标,把第一部分介绍到的架构知识使用起来。
第一部份讲的很多内容,会引用Pat在10月12日的VMwareCloud Forum上面关于CloudFoundry架构的演讲。Pat是CloudFoundry Core的负责人,他的那次演讲很值得一听。如果你当时在场,并且理解他所说的内容,本部份可以选择直接跳过。我除了会把说的内容讲具体点外,不太可能可以讲得比他好。
一、架构及模块
从总体地看,CloudFoundry的架构如下:

这个架构图以及下文所用到的各模块架构图均来自Pat的PPT。从上图能够看到CloudFoundry主要有以下几大组件组成:
1、 Router:顾名思义,Router组件在CloudFoundry中是对所有进来的Request进行路由。进入Router的request主要有两类:首先是来自VMCClient或者STS的,由CloudFoundry使用者发出的,管理型指令。
例如:列出你所有apps的vmcapps,提交一个apps等等。这类request会被路由到AppLife Management组件,又叫CloudController组件去;第二类是外界对你所部署的apps访问的request。这部份requests会被路由到Appexecution,又或者叫做DEAs的组件去。所有进入CloudFoundry系统的requests都会经过Router组件,看到这里可能会有朋友会担心Router成为单点,从而成为整个云的瓶颈。
但是CloudFoundry作为云系统,其设计的核心就是去单点依赖,组件平行扩充,且可替代的以保证扩展性,这是CloudFoundry,甚至所有云计算系统的设计原则,后文会讨论CloudFoundry如何做到这点,目前只要知道,系统可以部署多个Routers共同处理进来的requests,但是Router上层的LoadBalance不在CloudFoundry的实现范围,CloudFoundry只保证所有的request是无状态的,这样就使上层均衡附载选择面非常非常大了,例如可以通过DNS做,也可以部署硬件的LoadBalancer,或者简单点,弄台ngnix作负载均衡器,都是可行的。
Router组件,目前版本是对nginx的一个简单封装。熟悉ngnix的朋友应该知道,它可以一个套接字文件(.sock文件)作为输入输出。所有安装CloudFoundry的Router组件服务器都会安装一个nginx,其ngnix.conf文件有以下配置:

从整体的来看,Router组件的结构如下:

外界httprequest进入CloudFoundry服务器,nginx会首先接到request,nginx通过sock与router.rb进行交互,于是真正处理请求的是Router组件。router.rb里面根据传入的url,用户名密码等,进行逻辑判断,到CloudController组件或者DEA组件取数据并且返通过与niginx连接的.sock文件返回。
router.rb是对nginx进行了逻辑封装。熟悉CloudFoundry的朋友肯定知道,CloudFoundry给每一个app分配了一个url访问,如果直接使用VMware所托管的CloudFoundry.com的话,那你的app的url可能就是xxx.cloudfoundry.com,无论通过命令给你的app扩展了多少个instances,都是从这个url访问的,这里面的url转换路由就是由router.rb实现的。
原文:http://datacenter.watchstor.com/infra-134681.htm
分享到:
相关推荐
VMware在今年4月份突然发布了业内第一个开源的PaaS——CloudFoundry。发布至今的这几个月里,笔者一直关注它的演进...第一部份讲的很多内容,会引用Pat在10月12日的VMwareCloudForum上面关于CloudFoundry架构的演讲。P
Cloud Foundry架构由多个内核组件组成,这些组件通过消息机制实现自动发现和松散耦合。核心组件包括UAA(用户账户和认证服务)、Login Server、Health Manager、Service Broker、Node(s)、DEA Pool(s)、User ...
第2章微型计算机系统基础知识.pptx
计算机视觉_OpenCV455图像处理库_MinGW-W64跨平台编译工具链_基于Windows11系统使用CMake3213构建的x86_64-posix-seh架构动态链接库版本_包含SS.zip
计算机视觉_OpenCV_C_图像处理_机器学习_深度学习_计算机图形学_图像识别_图像分割_边缘检测_轮廓提取_形状识别_正方形检测_四边形检测_透视变换_图像校正_特征提取_霍夫变换_阈值.zip
yolov10-main-pred-liver-disease_3976通过医学图像分析肝脏状况-辅助肝脏疾病的诊断+数据集+训练好的模型,包含有使用教程 1. 内部包含标注好的目标检测数据集,分别有yolo格式(txt文件)和voc格式标签(xml文件), 共3976张图像, 已划分好数据集train,val, test,并附有data.yaml文件可直接用于yolov5,v8,v9,v10,v11,v12等算法的训练; 2. yolo目标检测数据集类别名:liver-disease(肝脏疾病),包括 ballooning(气球样变)、fibrosis(纤维化)、inflammation(炎症)、steatosis(脂肪变性)等 3. yolo项目用途:通过医学图像分析肝脏状况,辅助肝脏疾病的诊断 4. 可视化参考链接:https://blog.csdn.net/weixin_51154380/article/details/126395695?spm=1001.2014.3001.5502
知识图谱_自然语言处理_机器学习_深度学习_图数据库_语义分析_实体识别_关系抽取_车音数据_语音识别_文本挖掘_智能问答_行业知识库_汽车领域_语音交互_大数据分析_人工智能_多.zip
内容概要:本文详细介绍了基于PLC(可编程逻辑控制器)的换热站自动控制系统的设计与实现。主要内容涵盖PLC的选择、PID温度控制模块的应用、组态画面设计的艺术、通信配置的注意事项以及系统的调试技巧。作者分享了实际项目经验,强调了比例系数和积分时间对温度控制的影响,提出了合理的组态画面分层设计方案,并讨论了MODBUS通信的心跳检测机制。此外,还提到了调试阶段的乐趣和注意事项,最后预告了后续关于Python进行换热站数据分析的内容。 适合人群:从事工业自动化领域的工程师和技术人员,尤其是对换热站自动化感兴趣的从业者。 使用场景及目标:适用于需要提升换热站自动化水平的企业和个人。主要目标是帮助读者掌握PLC在换热站自动化中的应用方法,提高系统的稳定性和效率。 其他说明:文中提供了具体的代码示例和实践经验,有助于读者更好地理解和实施相关技术。同时,强调了在实际操作前进行充分的虚拟测试的重要性。
C51单片机的PPT内容,可以看看
内容概要:该报告深入探讨了微盘股策略的表现及其背后的驱动因素。历史数据显示,微盘股指数多数年份能战胜主流宽基指数,尤其在剩余流动性充裕或通胀因子下行区间时表现更佳。微盘股超额收益的本质在于低PB和小市值个股未来获得高收益的概率较大。换手率维度显示调仓频率对超额收益贡献有限,而盈利维度表明盈利并非主要贡献因素,估值维度则揭示超额收益主要来自PB修复和高估值向低估值的切换。基于此,报告建议通过小市值优选个股并辅以低PB筛选来把握微盘股机会。此外,报告还分析了当前微盘股拥挤度和估值均处于历史高位,提醒投资者注意风险。 适用人群:具备一定金融市场知识,特别是对A股市场感兴趣的投资者和金融从业者。 使用场景及目标:①理解微盘股
内容概要:本文详细介绍了如何利用组态王6.55软件进行3×4立体仓库的动画仿真。主要内容涵盖堆垛机的移动控制脚本,通过微步进移动和延时来模拟真实的设备动作;货位状态管理采用二维数组记录并更新货位情况,结合颜色变化直观展示货位状态;以及通过状态机实现指令队列的有序执行,确保动画流畅无冲突。此外,还讨论了调试过程中遇到的问题及其解决方案。 适合人群:从事自动化仓储系统开发的技术人员,特别是熟悉组态王软件的开发者。 使用场景及目标:适用于需要构建和优化自动化立体仓库系统的场合,旨在提高仓储效率和管理水平。通过学习本文,可以掌握组态王6.55的具体应用技巧,如脚本编写、动画制作和故障排除方法。 其他说明:文中提供的代码片段和调试经验对于实际项目实施有重要参考价值,特别是在处理复杂运动控制和动画同步方面。
数据库以及U安装教程.ppt
计算机专业英语专业知识.pptx
内容概要:本文介绍了基于6.1版本的隧道围岩变形流固耦合动态分析模型,该模型综合考虑了浆液黏度时变性与重力效应对注浆压力的影响。通过流体力学、岩土力学及数值模拟技术,建立了详细的数学模型并进行了可视化展示,主要包括位移大小和应力分布。研究表明,这种模型可以更准确地预测围岩变形和应力分布,从而优化注浆工艺,确保隧道施工安全。 适合人群:从事隧道工程、岩土工程及相关领域的研究人员和技术人员。 使用场景及目标:适用于需要进行隧道围岩变形和应力分布预测的实际工程项目,旨在提高注浆工艺的科学性和安全性。 其他说明:尽管当前模型已经取得了一定成果,但仍有改进空间,如更精准地描述浆液黏度时变性及其他因素对注浆过程的影响。
计算机视觉_OpenCV4NodeJS_Express_EJS_SocketIO_Webcam_视频流处理_NodeJS_实时传输_图像处理_深度学习_前端开发_后端开发_网络通信_Web应用.zip
计算机视觉与嵌入式系统开发_树莓派相机控制库_基于C11和OpenCV的Raspberry_Pi_Camera_硬件接口封装_提供RaspiCam_RaspiCam_Cv_RaspiCam_S.zip
内容概要:本文档是一份详细的10bit 50MHz SAR(逐次逼近寄存器)模数转换器(ADC)的设计与仿真指南,旨在帮助新手掌握从基础理论到实际电路设计的全过程。文档涵盖了多个关键模块的设计,如栅压自举开关、CDAC(电荷再分配数模转换器)、比较器和SAR逻辑,并提供了完整的Cadence仿真指导以及SMIC 40nm工艺库的应用实例。此外,还包括了测试电路的设计和优化技巧,确保设计的可靠性和性能。文中不仅介绍了各模块的工作原理,还提供了一些实用的仿真技巧和注意事项,如动态衬底偏置技术、蒙特卡洛仿真设置、自动归零相位控制等。 适合人群:对模拟集成电路设计感兴趣的电子工程专业学生、初入职场的研发工程师及其他希望深入了解SAR ADC设计的技术爱好者。 使用场景及目标:① 学习并掌握10bit 50MHz SAR ADC的基本原理及其各组成部分的功能;② 掌握Cadence仿真工具的使用方法,特别是针对SMIC 40nm工艺库的仿真设置;③ 提升实际电路设计能力,能够独立完成类似复杂电路的设计与验证。 其他说明:文档提供了丰富的实战经验和技巧,有助于提高设计效率和成功率。同时,对于希望进一步提升ADC速度的读者,文档还提到了TI-ADC扩展接口的相关信息。
内容概要:本文详细介绍了利用模型预测控制(MPC)技术,在给定圆形道路条件下,通过Carsim和Simulink联合仿真的方式,实现车辆轨迹跟踪的研究。文章首先概述了MPC的基本原理及其在车辆轨迹跟踪中的应用,接着阐述了圆形道路的轨迹规划方法,包括道路半径、车辆初始状态等参数的设定。随后,重点讲解了MPC控制器的设计步骤,涉及车辆动态模型、约束条件及优化目标的选择。最后,展示了如何在Simulink中构建MPC控制器并与Carsim中的车辆模型进行联合仿真,验证了MPC控制器的有效性和优化效果。 适合人群:从事车辆工程、自动化控制领域的研究人员和技术人员,特别是对MPC技术和联合仿真感兴趣的读者。 使用场景及目标:适用于希望深入了解MPC在车辆轨迹跟踪中的具体应用,掌握Carsim和Simulink联合仿真的操作流程,提升车辆控制系统设计能力的专业人士。 其他说明:文中提供了部分Python代码片段,帮助读者更好地理解和实现MPC控制器的设计。同时,展望了MPC在未来智能驾驶和自动驾驶技术中的潜在应用和发展方向。
内容概要:本文详细介绍了基于Matlab的蔡氏混沌电路(Chua's circuit)系统分析,包括电路的设计、仿真及其混沌行为的表现。首先,文章提供了蔡氏电路的基础模型代码,解释了其微分方程以及非线性项的作用。接着,展示了如何计算Lyapunov指数,验证系统的混沌性质。然后,通过绘制分岔图,展示了系统从周期运动到混沌的转变过程。最后,通过相图直观地展示了系统的双涡卷吸引子特征。此外,还提到了硬件实现的效果。 适合人群:对混沌理论、非线性动力学感兴趣的科研人员、电子工程学生及爱好者。 使用场景及目标:适用于研究混沌系统的行为特点,探索非线性电路设计的实际应用,以及进行相关教学演示。 其他说明:文中提供的Matlab代码可以直接运行,帮助读者更好地理解和实验蔡氏电路的混沌现象。
内容概要:本文详细介绍了如何在MATLAB环境中使用Transformer自注意力机制进行数据回归预测。首先解释了Transformer模型的基本架构,重点在于其捕捉数据长期依赖的能力。接着展示了具体的MATLAB代码实现,包括创建Transformer模型、设置训练选项以及数据预处理步骤如标准化。文中还提供了详细的评价指标计算方法,如RMSE、MSE、MAE、MBE、MAPE和R²,并讨论了不同情况下选择合适指标的重要性。此外,提到了一些实用技巧,例如学习率调整策略和避免常见错误的方法。最后简述了模型部署注意事项。 适合人群:对机器学习尤其是深度学习感兴趣的科研人员和技术开发者,熟悉MATLAB编程环境者优先。 使用场景及目标:适用于需要进行高精度数据回归预测的研究项目或实际应用场景,特别是在处理长序列或多特征点的时间序列数据时,能够显著提高预测准确性。 其他说明:虽然本文主要针对MATLAB用户,但对于Python或其他编程语言使用者也有一定的借鉴意义,因为所涉及的技术概念和方法具有通用性。