国产xxxx99真实实拍_久久不雅视频_高清韩国a级特黄毛片_嗯老师别我我受不了了小说

資訊專欄INFORMATION COLUMN

新版CloudFoundry揭秘

tianlai / 2966人閱讀

摘要:上面主要是將新的多了些什么。在新版本的設計中,他們使用腳本來代替原先的腳本。可以看到在新的架構中多出了很多組件。他究竟是如何操作的呢首先,我們必須準備好系統例如。當剛剛推出的時候,包含了應用運行時啟動,停止等簡單命令。

CloudFoundry距離發布已經一年多了。在這一年里CloudFoundry不論是社區還是代碼日臻成熟,擁有了眾多合作伙伴。現在他邁開了更大的腳步,新的CloudFoundry已經逐漸浮出水面。

新版的CloudFoundry對于開發者來說,除了可以支持給多的Framework,提供更多類型的Service之外,沒有太多變化。但是CloudFoundry本身的架構做了很多改進,可靠性,擴展性和安全性都有了質的提升,而所有的一切都發生在背后。

一、新的功能

CloudFoundry提供了一些開發者們期冀的新功能。

可以和Service直接通信的Tunnel。作為開發者的我們往往希望可以使用客戶端工具直接連接到DB上調試。但是在CloudFoundry將DB作為Service隱藏在背后,這樣可以提供了諸多方便服務,卻讓我們無法直接連接到DB。CloudFoundry已經解決了這個問題,可以使用vmctunnel工具,直接訪問云后的服務。

遺留系統的接入支持。如果你有自己的DB或者已經有一個遺留系統不想讓CloudFoundry托管,但是又想獲得CloudFoundry的PaaS服務。現在有了一個完善的解決方案。開發者可以將DB或者遺漏系統包裝成一個Service。然后可以在CloudFoundry中注冊,這樣就可以自由的訪問了。

更多的Framework支持。CloudFoundry之前已經支持很多的框架。有Spring forJava, Rails and Sinatra for Ruby, and Node.js。現在CloudFoundry將支持更多的Framework。有

o-> Java平臺

> Grails模仿Rails的Java平臺實現

> Java_web 普通Java web程序

> Lift基于Scale的web框架

> Spring 流行的Java框架

o-> Ruby平臺

> Rack 最小化的Ruby Web框架

> Rails3 一站式的Ruby Web框架

> Sinatra 極簡主義的Ruby Web框架

o-> Python平臺

> Django 最流行的PythonWeb框架

> Wsgi Python的CGI

o-> 其他平臺

> Static page 靜態頁面

> node.js 異步Web框架

> Erlang

> php

> standalone 獨立的程序

隨著時間的推移,支持的框架將越來越多。你也可以自定義自己的框架,只需要實現不多的代碼。其中Standalone是比較特殊的。開發者的程序只要能啟動并監聽一個端口,就可以作為一個程序運行在CloudFoundry上。提供了非常大的靈活性。

更多的Service支持。除了更多的框架 支持,CloudFoundry增加了更多的服務。現在除了支持MySQL, MongoDB 和 Redis外。還支持很多服務。

×-> DB

- Mongodb 最流行的NoSQL數據庫

- Mysql傳統開源關系數據庫

- Neo4j圖數據庫

- PostgreSQL Mysql的有力競爭者

- Redis極快的內存KV數據庫

×-> 存儲

- Atmos EMC專業存儲

- FileSystem 遠程NFS支持

- Vblob 提供Amazon S3支持

×-> 其他

- RabbitMQ 出色的Erlang隊列系統

現在服務逐漸完善,覆蓋主流的數據庫和存儲。也可以通過上文提到的ServiceBroker來接入任何一個外部服務。沒有做不到,只有想不到。

上面主要是將新的CloudFounry多了些什么。事實上,新的版本80%的工作在于對基礎架構的改進。下面仔細闡述,CloudFoundry做了什么讓他的架構更可靠。如果不熟悉前代的架構的話,可以參見《深入Cloud Foundry》

二、ROUTER

上個版本中。Router作為一個nginx腳本存在。所以的請求都必須經過Ruby代碼,然后加以轉發。這個設計干凈利落,不過Ruby也因此轉發了大量的數據,容易引起性能問題,所以下個版本中做了如下的改進。

在新版本的設計中,他們使用Lua腳本來代替原先的Ruby腳本。而Lua腳本會對請求加以分析,轉發給Ruby程序,然后Ruby程序再將分析的結果返回。這樣一來,proxied request已經不再經過Ruby代碼。邏輯和數據完美分離。性能和穩定性都大幅提高了。

在前版設計中,當Router接收到請求后,會隨機分配一個Droplet來處理這個請求,這種方式使得用戶沒有辦法使用Session,因為連續的HTTP請求會被分發到不同的應用實例上處理。新版本設計中增加了對SESSION的支持,當Router發現用戶的請求中帶了cookie信息,它會在Cookie里暗藏一個Droplet的host,port地址。當有新的請求進來,Router通過解析Cookie得到上次的應用實例,然后盡量轉發到同一臺Droplet上。

三、STAGE

下面的新版CloudFoundry的架構圖。

可以看到在新的CloudFoundry架構中多出了很多組件。新架構中將用戶驗證從Controller中剝離,提供更好的驗證服務。同時多出了一個多帶帶Stager。

在原有的架構中,用戶上傳代碼后,Cloud Control會將這部分代碼結合CloudFoundry打包成DEA可以運行的格式,并上傳到一個NFS中,當DEA啟動的時候,會從NFS取到需要相應的包,然后再運行。

由于打包(Stage)的過程,比較復雜還需要操作大量的文件,需要的時間比較長,單薄的CloudController不堪重負,所以將其移出,成為一個多帶帶的進程。每當CloudController需要打包的時候,就會向Stage隊列中發送一個請求,Stage收到請求后,逐個處理之。

眾所周知,不管是Java,Python還是Ruby程序都會有一系列的依賴,例如Ruby的Gem。每次打包的時候,都需要下載很多Gem,這是費時費力不討好的。所以開發了PackageCache模塊來緩存常用的依賴包。這樣的話,打包的過程會順暢很多。

原先性能問題算是解決了。但CloudFoundry還是個注重高可用的系統,按照原先的設計,存放運行包的NFS是一處單點,一旦Crash,整個CloudFoundry的部署功能都將癱瘓。這是不能容忍的,而且越來越大的規模,一臺機器遲早無法容納全部的運行包。所以使用了BlobStore模塊,來替代原先的NFS,提供高可用可擴展的存儲服務。

四、SERVICE BROKER

Service Broker可以讓Cloudfoundry輕松的支持遺留系統或者不愿意讓CloudFoundry托管的系統。他究竟是如何操作的呢?

首先,我們必須準備好系統,例如postgress。我們配置好程序和防火墻,讓CloudFoundry能通過類似

postgres://xyzhr:secret@db.xyzcorp.com:5432/xyz_hr_db 的URL來訪問到服務。

然后,調用create service,系統會在ServiceBroker中記錄你的配置信息。這樣就算大功告成了。Bind和其他的過程都有ServiceBroker完成,其實僅僅就是記錄信息,沒有實際操作。使用這個新的Service的時候和使用CloudFoundry的內部Service沒有兩樣,配置參數都會通過環境變量傳入。所以當App訪問Service的時候,就與ServiceBroker無關了。

五、DEA

DEA是App的運行環境,全稱是DropletExecution Agent。一臺虛擬機上會運行一個或多個DEA。一個DEA可以啟動多個App(又稱Droplet)。所以我們大家的App都會由DEA啟動并管理。

當CloudFoundry剛剛推出的時候, Droplet包含了應用運行時啟動,停止等簡單命令。用戶應用可以隨意訪問文件系統,也可以在內網暢通無阻,跑滿CPU,占盡內存,寫滿磁盤。你一切可以想到的破壞性操作都可以做到,太可怕了。CloudFoundry顯然不會放任這樣的情況太久,現在他們開發出了Warden,一個程序運行容器。這個容器提供了一個孤立的環境,Droplet只可以獲得受限的CPU,內存,磁盤訪問權限,網絡權限,再沒有辦法搞破壞了。

Warden在Linux上的實現是將Linux 內核的資源分成若干個namespace加以區分,底層的機制是CGROUP。這樣的設計比虛擬機性能好,啟動快,也能夠獲得足夠的安全性。在網絡方面,每一個Warden實例有一個虛擬網絡接口,每個接口有一個IP,而DEA內有一個子網,這些網絡接口就連在這個子網上。安全可以通過iptables來保證。在磁盤方面,每個warden實例有一個自己的filesystem。這些filesystem使用aufs實現的。Aufs可以共享warden之間的只讀內容,區分只寫的內容,提高了磁盤空間的利用率。因為aufs只能在固定大小的文件上讀寫,所以磁盤也沒有出現寫滿的可能性。

LXC是另一個Linux Container。那為什么不使用它,而開發了Warden呢。因為LXC的實現是和Linux綁死的,CloudFoundry希望warden能運轉在各個不同的平臺,而不只是Linux。另外Warden提供了一個Daemon和若干Api來操作,LXC提供的是系統工具。還有最重要的一點是LXC過于龐大,Warden只需要其中的一點點功能就可以了,更少的代碼便于調試。

六、結語

至此,我們已經全面的瀏覽了CloudFoundry的新功能,新設計。云計算的大潮浩浩湯湯,CloudFoundry作為第一個開源的PaaS平臺日臻成熟,實用。但未來還會有更多更好設計等著我們發現,屆時我們再一起分享。

關于作者

顏開,EMC中國研究院研究員,關注大數據,云計算等領域

博客: http://weibo.com/yankaycom

文章版權歸作者所有,未經允許請勿轉載,若此文章存在違規行為,您可以聯系管理員刪除。

轉載請注明本文地址:http://m.specialneedsforspecialkids.com/yun/3625.html

相關文章

  • 深入Cloud Foundry(下)

    續與回顧 本文第一部分介紹了CloudFoundry的整體架構,并在最后花了一點篇幅簡介CloudFoundry的代碼組織情況,以便于讀者自己去研究源代碼。筆者認為開源項目較大的好處在于:當你讀懂源代碼、理解總體架構后,能夠成竹在胸,并吸收為己用(有點類似武俠小說中的北冥神功)。為己用就是本篇要說的內容:我們使用CloudFoundry搭建自己的私有PaaS平臺。 在介紹CloudFoundry之...

    qylost 評論0 收藏0
  • 深入 Cloud Foundry(上)

    引子 今年4月份,VMware突然發布了業內第一個開源的PaaS——CloudFoundry。幾個關鍵字:開源、PaaS、VMware,如果你對云計算感興趣,就沖著它的ApacheV2協議,如果不去GitHub拿它的代碼好好研讀一下,真有點對不起自己。筆者當時就是以這樣的心態去研究它的代碼,并把它部署在我們labs里面。發布至今的這幾個月里,筆者一直關注它的演進,并從它的架構設計中獲益良多,...

    XiNGRZ 評論0 收藏0
  • 云計算之美—單節點部署CloudFoundry方法

    摘要:執行后,開始啟動,最終出現下圖就說明成功了共啟動了個模塊。需要兩個文件和一個文件夾我在我的機子上找到這些文件,分別拷貝到相應的目錄,就了。安裝完后,執行上面的步驟都執行下,出現圖中的信息,說明安裝成功了,現在就可以在上面部署應用了。 作者:egg博客:http://blog.csdn.net/zhangerqing(轉載請說明出處)一、環境需求官方系統環境要求:Setup?a?VM?with...

    Salamander 評論0 收藏0
  • PaaS未來世界

    摘要:未來世界此屏幕截圖是一個非常好的例子,它包含了通過或者命令行開始所需要的所有內容。未來世界架構元素核心系統架構系統的核心和的附加功能都圍繞著控制器。而健康管理器的作用是識別任何可能產生的問題,并通過告知控制器或者其他機制來解決這些問題。 PaaS的未來會是什么樣的呢?NoOps和DevOps又如何融入其中呢?PaaS將會讓開發者生活的更加輕松。 實際上,PaaS是一些事物的混合體,它關注更快...

    Lavender 評論0 收藏0
  • 5分鐘部署一個Hello World Servlet到CloudFoundry

    摘要:首先從我的下載我寫好的到本地。安裝,然后執行命令行,確保成功,在項目根目錄的文件夾內生成了。將放到本地的文件夾下面。啟動本地,確保該本地工作成功。然后切換回項目根目錄,執行部署到您的上。 首先從我的Github下載我寫好的hello world Servlet到本地。 安裝Maven,然后執行命令行mvn clean install,確保build成功,在項目根目錄的target文件夾...

    chenatu 評論0 收藏0

發表評論

0條評論

tianlai

|高級講師

TA的文章

閱讀更多
最新活動
閱讀需要支付1元查看
<