雲計算參考架構:
上圖闡釋如何創建私有和混合雲,最終用戶可以自行提供計算、 存儲和網絡。許多大型組織開始創建內部的私有雲,來增強其數據中心戰略。
58同城的雲架構:
百度社區的雲架構
結合對彈性服務的理解,第一個是彈性伸縮,你讓你的業務隨着你的性能,隨着你的流量,隨着業務的變化自動的伸縮流量,這是第一個點。第二個點是我能夠自動的屏蔽異常處理,我的機器出問題的時候,對業務是透明的,也是沒有影響的。
有道筆記 雲架構:
在整個雲存儲系統中,可以采用的開源技術,主要開發語言有:C、PHP、Erlang、Python,開源產品有:Nginx、GraphicsMagick、MySQL、Memcached、Hadoop、Redis、Squid、Heartbeat、IPVS BIND
需要考慮的技術平台:
o-> Java平台
> Grails模仿Rails的Java平台實現
> Java_web 普通Java web程序
> Lift基於Scale的web框架
> Spring 流行的Java框架
o-> Ruby平台
> Rails3 一站式的Ruby Web框架
> Sinatra 極簡主義的Ruby Web框架
o-> Python平台
> Django 最流行的PythonWeb框架
> Wsgi Python的CGI
o-> 其他平台
> Static page 靜態頁面
> node.js 異步Web框架
> Erlang
> php
> standalone 獨立的程序
存儲
×-> DB
- Mongodb 最流行的Nosql數據庫
- Mysql傳統開源關系數據庫
- Neo4j圖數據庫
- Postgresql Mysql的有力競爭者
- Redis極快的內存KV數據庫
×-> 存儲
- Atmos EMC專業存儲
- FileSystem 遠程NFS支持
- Vblob 提供Amazon S3支持
×-> 其他
- RabbitMQ 出色的Erlang隊列系統
雲計算系統架構的四個方面有怎樣的影響:
- 可擴展性:我能否增加資源以處理增加的需求?
- 可用性:我的應用能否容忍短暫的和持久的故障?
- 可管理性:我是否有辦法了解生產系統的健康和性能?
- 可行性:我能否在時間和成本預算之內構建和維護這個系統?
可擴展性
可擴展性來自於兩個方面:資源和密度。能力是指增加額外的硬件,它可能微不足道(在一個負載均衡器后增加額外的網絡服務器)也可能非常地困難(增加一個次要的數據庫服務器)。密度是指你能以怎樣的效率去使用已經擁有的能力。傳統的性能調優可以大幅地增加密度。
可度量的資源
可度量的資源是某些需要小心監控的東西。舉例來說,數據庫連接就是一種可度量的資源。作為一種有限的資源,濫用它就會大幅度地降低密度。其他可度量資源的例子還包括認證服務器和第三方網絡服務。這些有時被稱為“隱形的資源”,因為開發人員設計架構時經常會忽略掉它們。
通過隊列負載均衡
上傳時的峰值可能會成為問題,尤其是在那些針對大量讀取工作負載優化過的系統上。一種降低這種峰值的方式是,通過使用隊列以等待時間交換可用性。 在這種方案下,新數據在數據庫中不是同步保存的。相反,它們會被放到一個隊列中,這是個后台進程監控器。這個后台進程可以使負載趨於平滑,以便數據庫始終會被使用,而不是某些時候忙,其他時候閑。 使用隊列的其他好處是可以批量處理那些工作。一般來說,把信息批量寫入到數據庫中要比一次一條記錄快得多。
最后要說的是,這還增加了解耦點。后台進程或數據庫可以宕掉,完全不會影響前端應用接受新數據的能力。
改善消息隊列的可用性
如果過多的消息是被同時接收的,可以使用輔助的消息隊列去保存過量的部分。為了做到這一點,你需要設計應用能夠支持多個隊列,即使最初你打算只部署有一個隊列的應用。
記錄錯誤的數據
大多數開發人員都很清楚需要去驗證數據,但是當驗證失敗的時候,他們不知道做什么。僅僅棄掉數據和拋出錯誤是不夠的。應該把錯誤的數據以它原有的格式記錄下來,以便開發人員能夠斷定為什么會有這種錯誤的請求。
您可能感興趣的文章:
如有想了解更多軟件,系統 IT,企業信息化 資訊,請關注我的微信訂閱號:
作者:Petter Liu
出處:http://www.cnblogs.com/wintersun/
本文版權歸作者和博客園共有,歡迎轉載,但未經作者同意必須保留此段聲明,且在文章頁面明顯位置給出原文連接,否則保留追究法律責任的權利。
該文章也同時發布在我的獨立博客中-Petter Liu Blog。