搜尋

隨機推薦

07 二月 2011

摘要

本文將會從實際應用場景出發,介紹一致性哈希算法(Consistent Hashing)及其在分佈式系統中的應用。首先本文會描述一個在日常開發中經常會遇到的問題場景,借此介紹一致性哈希算法以及這個算法如何解決此問題;接下來會對這個算法進行相對詳細的描述,並討論一些如虛擬節點等與此算法應用相關的話題。

IETF HTTP2草案(draft-ietf-httpbis-http2-13)

摘要

本規範描述了一種優化的超文本傳輸協議(HTTP)。HTTP/2通過引進報頭字段壓縮以及多路復用來更有效利用網絡資源、減少感知延遲。另外還介紹了服務器推送規範。

本文檔保持對HTTP/1.1的後向兼容,HTTP的現有的語義保持不變。

http://cl.ly/QDWQ/fluentd.png

fluentd是一個日誌收集系統,它的特點在於其各部分均是可定製化的,你可以通過簡單的配置,將日誌收集到不同的地方。

目前開源社區已經貢獻了下面一些存儲外掛:MongoDBRedisCouchDB,Amazon S3Amazon SQSScribe0MQAMQPDelayedGrowl 等等。

本文要介紹的是在Fluentd的最新版中已經內置的MongoDB支持。主要通過一個收集Apache日誌的例子來說明其使用方法:

http://cl.ly/PF0P/https.jpg

說明

   本文檔規定了互聯網社區的標準組協議,並需要討論和建議以便更加完善。請參考

「互聯網官方協議標準」(STD 1)來瞭解本協議的標準化狀態。本協議不限流傳發佈。

版權聲明

   Copyright (C) The Internet Society (1999).   All Rights Reserved.

摘要

超文本傳輸協議(HTTP)是一種為分佈式,協作式的,超媒體信息系統。它是一種通用的,無狀態(stateless)的協議,除了應用於超文本傳輸外,它也可以應用於諸如名稱服務器和分佈對象管理系統之類的系統,這可以通過擴展它的請求方法,錯誤代碼和消息頭[47]來實現。HTTP的一個特性就是是數據表現形式是可以定義的和可協商性的,這就允許系統能獨立于于數據傳輸被構建。  

HTTP在1990年WWW全球信息剛剛起步的時候就得到了應用。本說明書詳細闡述了HTTP/1.1 協議,是RFC 2068的修訂版[33]。

一.C10K的問題

C10K的問題在上個世紀90年代就被提出來了。大概的意思是當用戶數超過1萬時,很多設計不良好的網絡服務程序性能都將急劇下降、甚至癱瘓。並且,這個問題並不能通過升級硬件設備解決,是操作系統固有的問題,也就是說,如果你的服務器最高能支撐1000個並發,儘管你升級了計算能力高一倍的 cpu,內存再翻一番,硬盤轉速在快一倍,也無法支撐2000個並發。

經典的網絡編程模型有4個:

1. Serve one client with each thread/process, and use blocking I/O。

即對每個客戶都使用不同的線程或進程進行服務,在每個線程或進程中使用阻塞I/O。這是小程序和java常用的策略,對於交互式的應用也是常見的選擇,這種策略很能難滿足高性能程序的需求,好處是實現極其簡單,容易實現複雜的交互邏輯。我們常用的Apache、ftpd等都是這種工作。

2. Serve many clients with single thread, and use nonblocking I/O and readiness notification。

即對所有的客戶使用單一一個線程或進程進行服務,在這個線程或進程裡,採用異步IO的策略。這是經典模型,優點在於實現較簡單,方便移植,也能提供足夠的性能;缺點在於無法充分利用多CPU的資源。

3. Serve many clients with each thread, and use nonblocking I/O and readiness notification

對經典模型2的簡單改進,仍然採用異步IO的策略,但對所有的客戶使用多個線程或進程進行服務。缺點是容易在多線程並發上出bug,甚至某些OS不支持多線程進行readiness notification 

4. Serve many clients with each thread, and use asynchronous I/O

在有AI/O支持的OS上,能提供相當高的性能。不過AI/O編程模型和經典模型差別相當大,基本上很難寫出一個框架同時支持AI/O和經典模型。這個模型主要是用於window平台上。

 

在linux上開發高性能的網絡應用,只能選著第2、3種方式。考慮到複雜性,我們往往只採用第2種。下面就討論一下第二種模型。

URL 含中文路徑名稱的終極解法 - 利用 mod_fileiri 解決中文檔名問題

當然,對付中文檔名問題的最好的解決方法就是「絕對不要用中文檔名」,然而在許多不得已的狀況下,我們還是被迫要使用中文檔名,這時候問題就來了....

在 Web Server 上使用中文檔名最常遇到的問題就是會發生無法存取的錯誤

發生這種狀況最主要的原因就是在 URL 的定義當中,並沒有任何關於字元集(Charset)的資訊。只有要求對於 URL 中的非 ASCII 符號,要用百分比符號的方式去編碼 (例如: %A4 )

 

網站初始

架設網站入門其實很容易,很多網路上的免費資源運用一下,許多學生也可以自己建置網站,最基本的架構就是安裝一台Web server 及一台 Database server,這樣的架構在流量不高的個人網站的確已足夠,但其實風險相當高,因為完全沒考慮到日後的擴充性(scalibility),也沒考慮到系統容錯及復原能力 (High avability & Failover),因此只要流量一高,問題就接踵而至 ,但用這個架構可視為Close beta時期,多找一些親友來當免費測試員。

 

商業化架構

在這時期代表已經籌到一筆資金,網站可以進行商業化架構設計,一般商業化考量下的標準架構,通常如下圖所示

 

 

顏開
v0.2
2010.2
日前國內沒有一套比較完整的NoSQL資料庫資料,有很多先驅整理髮表了很多,但不是很系統。不材嘗試著將各家的資料整合一下,並書寫了一些自己的見解。
本書寫了一些目前的NoSql的一些主要技術,算法和思想。同時列舉了大量的現有的資料庫實例。讀完全篇,相信讀者會對NoSQL資料庫瞭解個大概。
另外我還準備開發一個開源內存資料庫galaxydb.本書也是為這個資料庫提供一些架構資料。

http://www.ajaxman.net/wp-content/uploads/2008/07/apache_display.png

Apache模塊 mod_rewrite 提供了一個基於正則表達式分析器的重寫引擎來實時重寫URL請求。它支持每個完整規則可以擁有不限數量的子規則以及附加條件規則的靈活而且強大的URL操 作機制。此URL操作可以依賴於各種測試,比如服務器變量、環境變量、HTTP頭、時間標記,甚至各種格式的用於匹配URL組成部分的查找數據庫。

第 1 頁,共 2 頁

Please publish modules in offcanvas position.