當前位置:首頁 » 編程軟體 » memcached啟動腳本

memcached啟動腳本

發布時間: 2024-07-27 11:55:41

『壹』 如何利用APMserv搭建本地php環境

APMServ文件採用7-Zip壓縮,比用WinRAR壓縮減少了10M體積,請運行APMServ5.2.6_zip.exe

解壓包,將APMServ解壓縮到一個路徑中不含有漢字和空格的分區或目錄即可。

------------------------------------------------------------------------------------

APMServ 5.2.6 是一款擁有圖形界面的快速搭建Apache 2.2.9、PHP 5.2.6、Mysql 5.1.28&4.0.26、Nginx 0.7.19、Memcached 1.2.4、phpMyAdmin 2.11.9.2、OpenSSL、SQLite、ZendOptimizer,以及ASP、CGI、Perl網站伺服器平台的綠色軟體。無需安裝,具有靈活的移動性,將其拷貝到其它目錄、分區或別的電腦時,均只需點擊APMServ.exe中的啟動按鈕,即可自動進行相關設置,將Apache和MySQL安裝為系統服務並啟動。APMServ集合了Apache穩定安全的優點,並擁有跟IIS一樣便捷的圖形管理界面,同時支持MySQL 5.0 & 4.0兩個版本,虛擬主機、虛擬目錄、埠更改、SMTP、上傳大小限制、自動全局變數、SSL證書製作、緩存性能優化等設置,只需滑鼠一點即可完成。

1、注意事項:APMServ程序所在路徑不能含有漢字和空格。

2、MySQL默認用戶名:root,密碼為空

3、MySQL資料庫文件存放目錄:MySQL5.1data或MySQL4.0data

4、網站根目錄[HTML,PHP]wwwhtdocs [ASP]wwwasp [CGI,Perl]wwwcgi-bin

5、訪問本機請用http://127.0.0.1/或https://127.0.0.1/ (如果開啟SSL)

6、非默認埠,網址為http://127.0.0.1:埠/或https://127.0.0.1:埠/

7、如果在「擴展功能」中選擇使用Memcached,它的埠為:11211

8、APMServ集成了以下軟體:

Apache 2.2.9 [HTTP伺服器]

Nginx 0.7.19 [HTTP伺服器]

NetBox 2.8 Build 4128 [HTTP伺服器+ASP腳本解釋引擎]

PHP 5.2.6 [PHP腳本解釋引擎]

MiniPerl 5.8 [Perl腳本解釋器]

Memcached 1.2.4 [key-value內存緩存系統]

MySQL 5.1.28 [MySQL資料庫伺服器]

MySQL 4.0.26 [MySQL資料庫伺服器]

phpMyAdmin 2.11.9.2 [MySQL資料庫在線管理工具]

eAccelerator 0.9.5.3 [PHP腳本加速引擎]

ZendOptimizer 3.3.3 [PHP腳本加速引擎]

OpenSSL 0.9.8h [HTTPS(SSL)安全傳輸協議]

但是就我個人而言,如果是新手更建議使用PHPstudy,因為它支持PHP的各種版本管理及各種擴展的開啟及關閉

『貳』 PHP是什麼

PHP是PHP的遞歸首字母縮寫:Hypertext Preprocessor,一種用於創建動態和互動式HTML網頁的腳本語言。當網站訪問者打開頁面時,伺服器處理PHP命令,然後將結果發送到訪問者的瀏覽器。

主要特點

①開源性和免費性

由於PHP的解釋器的源代碼是公開的,所以安全系數較高的網站可以自己更改PHP的解釋程序。另外,PHP運行環境的使用也是免費的。

②快捷性

PHP是一種非常容易學習和使用的一門語言,它的語法特點類似於C語言,但又沒有C語言復雜的地址操作,而且又加入了面向對象的概念,再加上它具有簡潔的語法規則,使得它操作編輯非常簡單,實用性很強。

③資料庫連接的廣泛性

PHP可以與很多主流的資料庫建立起連接,如MySQL、ODBC、Oracle等,PHP是利用編譯的不同函數與這些資料庫建立起連接的,PHPLIB就是常用的為一般事務提供的基庫。

④面向過程和面向對象並用

在PHP語言的使用中,可以分別使用面向過程和面向對象,而且可以將PHP面向過程和面向對象兩者一起混用,這是其它很多編程語言是做不到的。


(2)memcached啟動腳本擴展閱讀

PHP優點

①流行,容易上手

PHP是目前最流行的編程語言,這毋庸置疑。它驅動全球超過2億多個網站,有全球超過81.7%的公共網站在伺服器端採用PHP。PHP常用的數據結構都內置了,使用起來方便簡單,也一點都不復雜,表達能力相當靈活。

②開發職位很多

在伺服器端的網站編程中PHP會更容易幫助你找到工作。很多互聯網相關企業都在使用PHP開發框架,所以可以說市場對PHP的開發程序員的需求還是比較大的。

③仍然在不斷發展

PHP在不斷兼容著類似closures和命名空間等技術,同時兼顧性能和當下流行的框架。版本是7之後,一直在提供更高性能的應用。

④可植入性強

PHP語言在補丁漏洞升級過程中,核心部分植入簡單易行,且速度快。

⑤拓展性強

PHP語言在資料庫應用過程中,可以從資料庫調取各類數據,執行效率高

『叄』 怎麼將python腳本 部署到虛擬centos7上去

1.安裝centos VMware9下面安裝centos2.在centos下面設置共享文件夾為你本地的論壇的代碼,然後設置網路為橋接:直接連接到物理網路,賦值網路連接狀態3.進入forum_svr.py目錄下運行python forum_svr.py,當然是啟動不了服務的4.安裝easy_install(想辦法)5.安裝pymogo tornado memcache 等一系列的模塊。6.當然還是啟動不了的7.還需要啟動memcached ,所以就要安裝memcached,Memcached是由Danga Interactive開發的,高性能的,分布式的內存對象緩存系統,用於在動態應用中減少資料庫負載,提升訪問速度。所以你就要安裝libevent8.libevent 最新的穩定版:wget http://monkey.org/~provos/libevent-1.4.14b-stable.tar.gz
# rpm -q libevent (首先檢查系統是否安裝了Libevent)
# yum -y install libevent* (我使用的Yum安裝)或者可以使用編譯安裝
# tar zxvf libevent-1.4.14b-stable.tar.gz
# cd libevent-1.4.14b-stable
# ./configure --prefix=/usr/local/libevent/ # make
# make install

9.memcached 最新的穩定版:wget http://memcached.googlecode.com/files/memcached-1.4.5.tar.gz # tar -zxvf memcached-1.4.5.tar.gz
# cd memcached-1.4.5 # ./configure --prefix=/usr/local/memcached --with-libevent=/usr/local/libevent/ # make
# make install
啟動Memcached
# cd /usr/local/memcached/bin/ # ./memcached -u root -d
將Memcached加入系統自動啟動
# vim /etc/rc.local
# /usr/local/memcached/bin/memcached -u root -d
查看Memcached
# ps -ef |grep memcached

10.然後你就要找到虛擬機的IP地址,可以在虛擬機下找運行ifconfig 例如:inet addr:192.168.0.109
11.在course_form_edit.html和course_forum_viem.html下修改swf:地址:(我的)當然是http://192.168.0.109:8086/了。(共六處)12.現在從虛擬機下啟動forum_svr.py就能啟動了。13.可能在windows下你訪問時可能還是會報伺服器拒絕的錯誤,說明虛擬機的鏈接地址還是請求不到虛擬機下的數據,可以在虛擬機下運行
iptables -I INPUT -i eth0 -p tcp --dport 8086 -j ACCEPT(為windows下實體機開辟一個8086埠),虛擬機防火牆不讓請求數據。
OK,現在windows下就可以請求到數據了。方便本地的調試了。

『肆』 如何在後台部署深度學習模型

搭建深度學習後台伺服器

我們的Keras深度學習REST API將能夠批量處理圖像,擴展到多台機器(包括多台web伺服器和Redis實例),並在負載均衡器之後進行循環調度。

為此,我們將使用:

  • KerasRedis(內存數據結構存儲)

  • Flask (Python的微web框架)

  • 消息隊列和消息代理編程範例

  • 本篇文章的整體思路如下:

    我們將首先簡要討論Redis數據存儲,以及如何使用它促進消息隊列和消息代理。然後,我們將通過安裝所需的Python包來配置Python開發環境,以構建我們的Keras深度學習REST API。一旦配置了開發環境,就可以使用Flask web框架實現實際的Keras深度學習REST API。在實現之後,我們將啟動Redis和Flask伺服器,然後使用cURL和Python向我們的深度學習API端點提交推理請求。最後,我們將以對構建自己的深度學習REST API時應該牢記的注意事項的簡短討論結束。

    第一部分:簡要介紹Redis如何作為REST API消息代理/消息隊列

    測試和原文的命令一致。


    第三部分:配置Python開發環境以構建Keras REST API

    文章中說需要創建新的虛擬環境來防止影響系統級別的python項目(但是我沒有創建),但是還是需要安裝rest api所需要依賴的包。以下為所需要的包。


    第四部分:實現可擴展的Keras REST API

    首先是Keras Redis Flask REST API數據流程圖

    讓我們開始構建我們的伺服器腳本。為了方便起見,我在一個文件中實現了伺服器,但是它可以按照您認為合適的方式模塊化。為了獲得最好的結果和避免復制/粘貼錯誤,我建議您使用本文的「下載」部分來獲取相關的腳本和圖像。

    為了簡單起見,我們將在ImageNet數據集上使用ResNet預訓練。我將指出在哪裡可以用你自己的模型交換ResNet。flask模塊包含flask庫(用於構建web API)。redis模塊將使我們能夠與redis數據存儲介面。從這里開始,讓我們初始化將在run_keras_server.py中使用的常量.


    我們將向伺服器傳遞float32圖像,尺寸為224 x 224,包含3個通道。我們的伺服器可以處理一個BATCH_SIZE = 32。如果您的生產系統上有GPU(s),那麼您需要調優BATCH_SIZE以獲得最佳性能。我發現將SERVER_SLEEP和CLIENT_SLEEP設置為0.25秒(伺服器和客戶端在再次輪詢Redis之前分別暫停的時間)在大多數系統上都可以很好地工作。如果您正在構建一個生產系統,那麼一定要調整這些常量。

    讓我們啟動我們的Flask app和Redis伺服器:


    在這里你可以看到啟動Flask是多麼容易。在運行這個伺服器腳本之前,我假設Redis伺服器正在運行(之前的redis-server)。我們的Python腳本連接到本地主機6379埠(Redis的默認主機和埠值)上的Redis存儲。不要忘記將全局Keras模型初始化為None。接下來我們來處理圖像的序列化:


    Redis將充當伺服器上的臨時數據存儲。圖像將通過諸如cURL、Python腳本甚至是移動應用程序等各種方法進入伺服器,而且,圖像只能每隔一段時間(幾個小時或幾天)或者以很高的速率(每秒幾次)進入伺服器。我們需要把圖像放在某個地方,因為它們在被處理前排隊。我們的Redis存儲將作為臨時存儲。

    為了將圖像存儲在Redis中,需要對它們進行序列化。由於圖像只是數字數組,我們可以使用base64編碼來序列化圖像。使用base64編碼還有一個額外的好處,即允許我們使用JSON存儲圖像的附加屬性。

    base64_encode_image函數處理序列化。類似地,在通過模型傳遞圖像之前,我們需要反序列化圖像。這由base64_decode_image函數處理。

    預處理圖片


    我已經定義了一個prepare_image函數,它使用Keras中的ResNet50實現對輸入圖像進行預處理,以便進行分類。在使用您自己的模型時,我建議修改此函數,以執行所需的預處理、縮放或規范化。

    從那裡我們將定義我們的分類方法


    classify_process函數將在它自己的線程中啟動,我們將在下面的__main__中看到這一點。該函數將從Redis伺服器輪詢圖像批次,對圖像進行分類,並將結果返回給客戶端。

    在model = ResNet50(weights="imagenet")這一行中,我將這個操作與終端列印消息連接起來——根據Keras模型的大小,載入是即時的,或者需要幾秒鍾。

    載入模型只在啟動這個線程時發生一次——如果每次我們想要處理一個映像時都必須載入模型,那麼速度會非常慢,而且由於內存耗盡可能導致伺服器崩潰。

    載入模型後,這個線程將不斷輪詢新的圖像,然後將它們分類(注意這部分代碼應該時尚一部分的繼續)


    在這里,我們首先使用Redis資料庫的lrange函數從隊列(第79行)中獲取最多的BATCH_SIZE圖像。

    從那裡我們初始化imageIDs和批處理(第80和81行),並開始在第84行開始循環隊列。

    在循環中,我們首先解碼對象並將其反序列化為一個NumPy數組image(第86-88行)。

    接下來,在第90-96行中,我們將向批處理添加圖像(或者如果批處理當前為None,我們將該批處理設置為當前圖像)。

    我們還將圖像的id附加到imageIDs(第99行)。

    讓我們完成循環和函數

    在這個代碼塊中,我們檢查批處理中是否有圖像(第102行)。如果我們有一批圖像,我們通過模型(第105行)對整個批進行預測。從那裡,我們循環一個圖像和相應的預測結果(110-122行)。這些行向輸出列表追加標簽和概率,然後使用imageID將輸出存儲在Redis資料庫中(第116-122行)。

    我們使用第125行上的ltrim從隊列中刪除了剛剛分類的圖像集。最後,我們將睡眠設置為SERVER_SLEEP時間並等待下一批圖像進行分類。下面我們來處理/predict我們的REST API端點


    稍後您將看到,當我們發布到REST API時,我們將使用/predict端點。當然,我們的伺服器可能有多個端點。我們使用@app。路由修飾符以第130行所示的格式在函數上方定義端點,以便Flask知道調用什麼函數。我們可以很容易地得到另一個使用AlexNet而不是ResNet的端點,我們可以用類似的方式定義具有關聯函數的端點。你懂的,但就我們今天的目的而言,我們只有一個端點叫做/predict。

    我們在第131行定義的predict方法將處理對伺服器的POST請求。這個函數的目標是構建JSON數據,並將其發送回客戶機。如果POST數據包含圖像(第137和138行),我們將圖像轉換為PIL/Pillow格式,並對其進行預處理(第141-143行)。

    在開發這個腳本時,我花了大量時間調試我的序列化和反序列化函數,結果發現我需要第147行將數組轉換為C-contiguous排序(您可以在這里了解更多)。老實說,這是一個相當大的麻煩事,但我希望它能幫助你站起來,快速跑。

    如果您想知道在第99行中提到的id,那麼實際上是使用uuid(通用唯一標識符)在第151行生成的。我們使用UUID來防止hash/key沖突。

    接下來,我們將圖像的id和base64編碼附加到d字典中。使用rpush(第153行)將這個JSON數據推送到Redis db非常簡單。

    讓我們輪詢伺服器以返回預測

    我們將持續循環,直到模型伺服器返回輸出預測。我們開始一個無限循環,試圖得到157-159條預測線。從這里,如果輸出包含預測,我們將對結果進行反序列化,並將結果添加到將返回給客戶機的數據中。我們還從db中刪除了結果(因為我們已經從資料庫中提取了結果,不再需要將它們存儲在資料庫中),並跳出了循環(第163-172行)。

    否則,我們沒有任何預測,我們需要睡覺,繼續投票(第176行)。如果我們到達第179行,我們已經成功地得到了我們的預測。在本例中,我們向客戶機數據添加True的成功值(第179行)。注意:對於這個示例腳本,我沒有在上面的循環中添加超時邏輯,這在理想情況下會為數據添加一個False的成功值。我將由您來處理和實現。最後我們稱燒瓶。jsonify對數據,並將其返回給客戶端(第182行)。這就完成了我們的預測函數。

    為了演示我們的Keras REST API,我們需要一個__main__函數來實際啟動伺服器

    第186-196行定義了__main__函數,它將啟動classify_process線程(第190-192行)並運行Flask應用程序(第196行)。

    第五部分:啟動可伸縮的Keras REST API

    要測試我們的Keras深度學習REST API,請確保使用本文的「下載」部分下載源代碼示例圖像。從這里,讓我們啟動Redis伺服器,如果它還沒有運行:

  • redis-server

  • 然後,在另一個終端中,讓我們啟動REST API Flask伺服器:

  • python run_keras_server.py

  • 另外,我建議在向伺服器提交請求之前,等待您的模型完全載入到內存中。現在我們可以繼續使用cURL和Python測試伺服器。

    第七部分:使用cURL訪問Keras REST API

    使用cURL來測試我們的Keras REST API伺服器。這是我的家庭小獵犬Jemma。根據我們的ResNet模型,她被歸類為一隻擁有94.6%自信的小獵犬。

  • curl -X POST -F [email protected] 'http://localhost:5000/predict'

  • 你會在你的終端收到JSON格式的預測:

  • {"predictions": [{"label": "beagle","probability": 0.9461546540260315},{"label": "bluetick","probability": 0.031958919018507004},{"label": "redbone","probability": 0.006617196369916201},{"label": "Walker_hound","probability": 0.0033879687543958426},{"label": "Greater_Swiss_Mountain_dog","probability": 0.0025766862090677023}],"success": true}

  • 第六部分:使用Python向Keras REST API提交請求

    如您所見,使用cURL驗證非常簡單。現在,讓我們構建一個Python腳本,該腳本將發布圖像並以編程方式解析返回的JSON。

    讓我們回顧一下simple_request.py

  • # import the necessary packagesimport requests# initialize the Keras REST API endpoint URL along with the input# image pathKERAS_REST_API_URL = "http://localhost:5000/predict"IMAGE_PATH = "jemma.png"

  • 我們在這個腳本中使用Python請求來處理向伺服器提交數據。我們的伺服器運行在本地主機上,可以通過埠5000訪問端點/predict,這是KERAS_REST_API_URL變數(第6行)指定的。

    我們還定義了IMAGE_PATH(第7行)。png與我們的腳本在同一個目錄中。如果您想測試其他圖像,請確保指定到您的輸入圖像的完整路徑。

    讓我們載入圖像並發送到伺服器:

  • # load the input image and construct the payload for the requestimage = open(IMAGE_PATH, "rb").read()payload = {"image": image}# submit the requestr = requests.post(KERAS_REST_API_URL, files=payload).json()# ensure the request was sucessfulif r["success"]: # loop over the predictions and display them for (i, result) in enumerate(r["predictions"]): print("{}. {}: {:.4f}".format(i + 1, result["label"], result["probability"]))# otherwise, the request failedelse: print("Request failed")

  • 我們在第10行以二進制模式讀取圖像並將其放入有效負載字典。負載通過請求發送到伺服器。在第14行發布。如果我們得到一個成功消息,我們可以循環預測並將它們列印到終端。我使這個腳本很簡單,但是如果你想變得更有趣,你也可以使用OpenCV在圖像上繪制最高的預測文本。

    第七部分:運行簡單的請求腳本

    編寫腳本很容易。打開終端並執行以下命令(當然,前提是我們的Flask伺服器和Redis伺服器都在運行)。

  • python simple_request.py

  • 使用Python以編程方式使用我們的Keras深度學習REST API的結果

    第八部分:擴展深度學習REST API時的注意事項

    如果您預期在深度學習REST API上有較長一段時間的高負載,那麼您可能需要考慮一種負載平衡演算法,例如循環調度,以幫助在多個GPU機器和Redis伺服器之間平均分配請求。

    記住,Redis是內存中的數據存儲,所以我們只能在隊列中存儲可用內存中的盡可能多的圖像。

    使用float32數據類型的單個224 x 224 x 3圖像將消耗602112位元組的內存。

『伍』 APMServ5.2.6搭建伺服器

它只是搭載的一個php環境,具體如下:
APMServ 5.2.6 是一款擁有圖形界面的快速搭建Apache 2.2.9、PHP 5.2.6、MySQL 5.1.28&4.0.26、Nginx 0.7.19、Memcached 1.2.4、phpMyAdmin 2.11.9.2、OpenSSL、SQLite、ZendOptimizer,以及ASP、CGI、Perl網站伺服器平台的綠色軟體。無需安裝,具有靈活的移動性,將其拷貝到其它目錄、分區或別的電腦時,均只需點擊APMServ.exe中的啟動按鈕,即可自動進行相關設置,將Apache和MySQL安裝為系統服務並啟動。APMServ集合了Apache穩定安全的優點,並擁有跟IIS一樣便捷的圖形管理界面,同時支持MySQL 5.0 & 4.0兩個版本,虛擬主機、虛擬目錄、埠更改、SMTP、上傳大小限制、自動全局變數、SSL證書製作、緩存性能優化等設置,只需滑鼠一點即可完成。

1、注意事項:APMServ程序所在路徑不能含有漢字和空格。
2、MySQL默認用戶名:root,密碼為空
3、MySQL資料庫文件存放目錄:MySQL5.1\data或MySQL4.0\data
4、網站根目錄[HTML,PHP]www\htdocs [ASP]www\asp [CGI,Perl]www\cgi-bin
5、訪問本機請用 http://127.0.0.1/或 https://127.0.0.1/ (如果開啟SSL)
6、非默認埠,網址為 http://127.0.0.1:埠/或 https://127.0.0.1:埠/
7、如果在「擴展功能」中選擇使用Memcached,它的埠為:11211
8、APMServ集成了以下軟體:

Apache 2.2.9 【HTTP伺服器】
Nginx 0.7.19 【HTTP伺服器】
NetBox 2.8 Build 4128 【HTTP伺服器+ASP腳本解釋引擎】
PHP 5.2.6 【PHP腳本解釋引擎】
MiniPerl 5.8 【Perl腳本解釋器】
Memcached 1.2.4 【key-value內存緩存系統】
MySQL 5.1.28 【MySQL資料庫伺服器】
MySQL 4.0.26 【MySQL資料庫伺服器】
phpMyAdmin 2.11.9.2 【MySQL資料庫在線管理工具】
eAccelerator 0.9.5.3 【PHP腳本加速引擎】
ZendOptimizer 3.3.3 【PHP腳本加速引擎】
OpenSSL 0.9.8h 【HTTPS(SSL)安全傳輸協議】

附加組件:
一Perl、CGI支持(需下載ActivePerl):
APMServ 5.2.6 附帶的是MiniPerl,可以運行簡單的Perl、CGI程序。如果運行復雜的Perl、CGI程序,請下載ActivePerl,安裝在APMServ所在分區根目錄下的usr目錄中。假如APMServ所在目錄為E:\APMServ5.2.6,則將ActivePerl的安裝路徑選為E:\usr
ActivePerl 5.8.8.819 for Windows 下載地址:[華軍軟體園] [中國站長站]

注意事項:
迅雷、Skype、PPLive、BT等軟體啟動後默認會佔用80埠,導致Apache無法啟動。解決方法:先關閉這些軟體,啟動完APMServ之後,再開啟這些軟體。

『陸』 linux基礎知識有哪些

第一階段:linux基礎入門
Linux基礎入門主要包括: Linux硬體基礎、Linux發展歷史、Linux系統安裝、xshell連接、xshell優化、SSH遠程連接故障問題排查、L inux基礎優化、Linux目錄結構知識、Linux文件屬性、Linux通配符、正則表達式、Linux系統許可權等
第二階段:linux系統管理進階
linux系統管理進階包括:Linux定時任務、Linux用戶管理、Linux磁碟與文件系統、Linux三劍客之sed命令等。
第三階段:Linux Shell基礎
Linux Shell基礎包括:Shell編程基礎、Linux三劍客之awk命令等。
第四階段:Linux網路基礎
第五階段:Linux網路服務
Linux網路服務包括:集群實戰架構開始及環境准備、rsync數據同步服務、Linux全網備份項目、nfs網路存儲服務精講、inotify/sersync實時數據同步/nfs存儲實時備份項目等。
第六階段:Linux重要網路服務
Linux重要網路服務包括:http協議/www服務基礎、nginx web介紹及基礎實踐、nginx web、lnmp環境部署/資料庫異機遷移/共享數據異機遷移到NFS系統、nginx負載均衡、keepalived高可用等。
第七階段:Ansible自動化運維與Zabbix監控
Ansible自動化運維與Zabbix監控包括: SSH服務秘鑰認證、ansible批量自動化管理集群、 zabbix監控等。
第九階段:大規模集群高可用服務(Lvs、Keepalived)
第十階段:Java Tomcat服務及防火牆Iptables
第十一階段:MySQL DBA高級應用實踐
MySQL DBA高級應用實踐包括:MySQL資料庫入門基礎命令、MySQL資料庫進階備份恢復、MySQL資料庫深入事務引擎、MySQL資料庫優化SQL語句優化、MySQL資料庫集群主從復制/讀寫分離、MySQL資料庫高可用/mha/keepalved等。
第十二階段:高性能資料庫Redis和Memcached課程
第十三階段:Linux大規模集群架構構建(200台)
第十四階段:Linux Shell編程企業案例實戰
第十五階段:企業級代碼發布上線方案(SVN和Git)
第十六階段企業級Kvm虛擬化與OpenStack雲計算
第十七階段公有雲阿里雲8大組件構建集群實戰
第十八階段:Docker技術企業應用實踐
第十九階段:Python自動化入門及進階
第二十階段:職業規劃與高薪就業指導

『柒』 基於mogileFS搭建分布式文件系統--海量小文件的存儲利器

1.簡介

分布式文件系統(Distributed File System)是指文件系統管理的物理存儲資源不一定直接連接在本地節點上,而是通過計算機網路與節點相連。分布式文件系統的設計基於客戶機/伺服器模式。一個典型的網路可能包括多個供多用戶訪問的伺服器。另外,對等特性允許一些系統扮演客戶機和伺服器的雙重角色。例如,用戶可以「發表」一個允許其他客戶機訪問的目錄,一旦被訪問,這個目錄對客戶機來說就像使用本地驅動器一樣。

當下我們處在一個互聯網飛速發展的信息 社會 ,在海量並發連接的驅動下每天所產生的數據量必然以幾何方式增長,隨著信息連接方式日益多樣化,數據存儲的結構也隨著發生了變化。在這樣的壓力下使得人們不得不重新審視大量數據的存儲所帶來的挑戰,例如:數據採集、數據存儲、數據搜索、數據共享、數據傳輸、數據分析、數據可視化等一系列問題。

傳統存儲在面對海量數據存儲表現出的力不從心已經是不爭的事實,例如:縱向擴展受陣列空間限制、橫向擴展受交換設備限制、節點受文件系統限制。

然而分布式存儲的出現在一定程度上有效的緩解了這一問題,之所以稱之為緩解是因為分布式存儲在面對海量數據存儲時也並非十全十美毫無壓力,依然存在的難點與挑戰例如:節點間通信、數據存儲、數據空間平衡、容錯、文件系統支持等一系列問題仍處在不斷摸索和完善中。

2.分布式文件系統的一些解決方案

Google Filesystem適合存儲海量大個文件,元數據存儲與內存中

HDFS(Hadoop Filesystem)GFS的山寨版,適合存儲大量大個文件

TFS(Taobao Filesystem)淘寶的文件系統,在名稱節點上將元數據存儲與關系資料庫中,文件數量不在受限於名稱節點的內容空間,可以存儲海量小文件LustreOracle開發的企業級分布式系統,較重量級MooseFS基於FUSE的格式,可以進行掛載使用MogileFS

擅長存儲海量的小數據,元數據存儲與關系型資料庫中

1.簡介

MogileFS是一個開源的分布式文件系統,用於組建分布式文件集群,由LiveJournal旗下DangaInteractive公司開發,Danga團隊開發了包括 Memcached、MogileFS、Perlbal等不錯的開源項目:(註:Perlbal是一個強大的Perl寫的反向代理伺服器)。MogileFS是一個開源的分布式文件系統。

目前使用 MogileFS 的公司非常多,比如國外的一些公司,日本前幾名的公司基本都在使用這個.

國內所知道的使用 MogileFS 的公司有圖片託管網站 yupoo又拍,digg, 土豆, 豆瓣,1 號店, 大眾點評,搜狗,安居客等等網站.基本很多網站容量,圖片都超過 30T 以上。

2.MogileFS特性

1) 應用層提供服務,不需要使用核心組件

2)無單點失敗,主要有三個組件組成,分為tracker(跟蹤節點)、mogstore(存儲節點)、database(資料庫節點)

3)自動復制文件,復制文件的最小單位不是文件,而是class

4)傳輸中立,無特殊協議,可以通過NFS或HTTP實現通信

5)簡單的命名空間:沒有目錄,直接存在與存儲空間上,通過域來實現

6)不用共享任何數據

3.MogileFS的組成

1)Tracker--跟蹤器,調度器

MogileFS的核心,是一個調度器,mogilefsd進程就是trackers進程程序,trackers的主要職責有:刪除數據、復制數據、監控、查詢等等.這個是基於事件的( event-based ) 父進程/消息匯流排來管理所有來之於客戶端應用的交互(requesting operations to be performed), 包括將請求負載平衡到多個"query workers"中,然後讓 mogilefs的子進程去處理.

mogadm,mogtool的所有操作都要跟trackers打交道,Client的一些操作也需要定義好trackers,因此最好同時運行多個trackers來做負載均衡.trackers也可以只運行在一台機器上,使用負載均衡時可以使用搞一些簡單的負載均衡解決方案,如haproxy,lvs,nginx等,

tarcker的配置文件為/etc/mogilefs/mogilefsd.conf,監聽在TCP的7001埠

2)Database--資料庫部分

主要用來存儲mogilefs的元數據,所有的元數據都存儲在資料庫中,因此,這個數據相當重要,如果資料庫掛掉,所有的數據都不能用於訪問,因此,建議應該對資料庫做高可用

3)mogstored--存儲節點

數據存儲的位置,通常是一個HTTP(webDAV)伺服器,用來做數據的創建、刪除、獲取,任何 WebDAV 伺服器都可以, 不過推薦使用 mogstored . mogilefsd可以配置到兩個機器上使用不同埠… mogstored 來進行所有的 DAV 操作和流量,IO監測, 並且你自己選擇的HTTP伺服器(默認為 perlbal)用來做 GET 操作給客戶端提供文件.

典型的應用是一個掛載點有一個大容量的SATA磁碟. 只要配置完配置文件後mogstored程序的啟動將會使本機成為一個存儲節點.當然還需要mogadm這個工具增加這台機器到Cluster中.

配置文件為/etc/mogilefs/mogstored.conf,監聽在TCP的7500埠

4.基本工作流程

應用程序請求打開一個文件 (通過RPC 通知到 tracker, 找到一個可用的機器). 做一個 「create_open」 請求.

tracker 做一些負載均衡(load balancing)處理,決定應該去哪兒,然後給應用程序一些可能用的位置。

應用程序寫到其中的一個位置去 (如果寫失敗,他會重新嘗試並寫到另外一個位置去).

應用程序 (client) 通過」create_close」 告訴tracker文件寫到哪裡去了.

tracker 將該名稱和域命的名空間關聯 (通過資料庫來做的)

tracker, 在後台, 開始復制文件,知道他滿足該文件類別設定的復制規則

然後,應用程序通過 「get_paths」 請求 domain+key (key == 「filename」) 文件, tracker基於每一位置的I/O繁忙情況回復(在內部經過 database/memcache/etc 等的一些抉擇處理), 該文件可用的完整 URLs地址列表.

應用程序然後按順序嘗試這些URL地址. (tracker』持續監測主機和設備的狀態,因此不會返回死連接,默認情況下他對返回列表中的第一個元素做雙重檢查,除非你不要他這么做..)

1.拓撲圖

說明:1.用戶通過URL訪問前端的nginx

2.nginx根據特定的挑選演算法,挑選出後端一台tracker來響應nginx請求

3.tracker通過查找database資料庫,獲取到要訪問的URL的值,並返回給nginx

4.nginx通過返回的值及某種挑選演算法挑選一台mogstored發起請求

5.mogstored將結果返回給nginx

6.nginx構建響應報文返回給客戶端

2.ip規劃

角色運行軟體ip地址反向代理nginx192.168.1.201存儲節點與調度節點1

mogilefs192.168.1.202存儲節點與調度節點2

mogilefs192.168.1.203資料庫節點

MariaDB192.168.1.204

3.資料庫的安裝操作並為授權

關於資料庫的編譯安裝,請參照本人相關博文http://wangfeng7399.blog.51cto.com/3518031/1393146,本處將不再累贅,本處使用的為yum源的安裝方式安裝mysql

4.安裝mogilefs. 安裝mogilefs,可以使用yum安裝,也可以使用編譯安裝,本處通過yum安裝

5.初始化資料庫

可以看到在資料庫中創建了一些表

6.修改配置文件,啟動服務

7.配置mogilefs

添加存儲主機

添加存儲設備

添加域

添加class

8.配置192.168.1.203的mogilefs 。切記不要初始化資料庫,配置應該與192.168.1.202一樣

9.嘗試上傳數據,獲取數據,客戶端讀取數據

上傳數據,在任何一個節點上傳都可以

獲取數據

客戶端查看數據

我們可以通過任何一個節點查看到數據

要想nginx能夠實現對後端trucker的反向代理,必須結合第三方模塊來實現

1.編譯安裝nginx

2.准備啟動腳本

3.nginx與mofilefs互聯

查看效果

5.配置後端truckers的集群

查看效果

大功告成了,後續思路,前段的nginx和資料庫都存在單點故障,可以實現高可用集群

熱點內容
newman演算法 發布:2024-11-25 21:34:55 瀏覽:200
a演算法概念 發布:2024-11-25 21:24:16 瀏覽:587
jquery源碼書籍 發布:2024-11-25 21:19:50 瀏覽:803
銀行卡輸入密碼超限怎麼辦 發布:2024-11-25 21:09:07 瀏覽:958
編譯指令多發 發布:2024-11-25 20:58:17 瀏覽:751
java上傳文件到伺服器 發布:2024-11-25 20:52:47 瀏覽:741
軸加工編程 發布:2024-11-25 20:52:12 瀏覽:412
手機的媒體存儲 發布:2024-11-25 20:29:42 瀏覽:265
安卓如何關閉手機桌面 發布:2024-11-25 20:24:37 瀏覽:701
腳本也違法嗎 發布:2024-11-25 20:24:24 瀏覽:305