且构网

分享程序员开发的那些事...
且构网 - 分享程序员编程开发的那些事

【Cloud Foundry】Could Foundry学习(三)——Router

更新时间:2022-09-16 11:05:07

在阅读的过程中有不论什么问题。欢迎一起交流

邮箱:1494713801@qq.com   

QQ:1494713801

 

 

一、概述 

       Router组件在Cloud Foundry中是对全部进来的Request进行路由。

        进入Router的request主要有两类:首先是来自VMCClient或者STS的管理型指令,这类request会被路由到AppLife Management组件,又叫CloudController组件去;第二类是外界对你所部署的apps訪问的request,这部份requests会被路由到Appexecution。又或者叫做DEAs的组件去。

        系统能够部署多个Routers共同处理进来的requests,可是Router上层的LoadBalance不在CloudFoundry的实现范围,CloudFoundry仅仅保证全部的request是无状态的,这样就使上层均衡负载选择面很很大了,能够通过DNS做、也能够部署硬件的LoadBalancer、或者简单点弄台ngnix作负载均衡器,都是可行的。

二、组成架构

        眼下版本号的Router组件是对nginx的一个简单封装。它包含ngnix和router.rb两部分,当中nginx利用套接字文件(.sock文件)进行输入输入,router.rb实现对nginx的逻辑封装。

从总体的来看,Router组件的结构例如以下:    

  【Cloud Foundry】Could Foundry学习(三)——Router

        外界httpRequest进入Cloud Foundryserver,nginx会首先接到request,nginx通过sock与router.rb进行交互(所以真正处理请求的是Router组件)。router.rb依据传入的url、usernamepassword等,进行逻辑推断。到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实现的。

注意:第二版的时候,由于ruby直接处理请求性能不行,换成了lua脚本来接收请求,再由ruby程序将结果返回。






本文转自mfrbuaa博客园博客,原文链接:http://www.cnblogs.com/mfrbuaa/p/5069128.html,如需转载请自行联系原作者