分類:計算

Apache代理和摘要式身份驗證

史蒂芬勞埃德沃特金斯 ,星期日2011年3月27日下午12時57分

這個職位將迅速告訴你如何設置代理基本身份驗證使用的Apache

在我的情況下,我想有位BT客戶端傳輸可通過互聯網,所以我可以檢查國家和adminster torrent下載(如最新的Fedora發行版)的要求。 輸電本身運行的Web客戶端的默認端口9091。 與其費心開放更多的端口,在我的防火牆和加入nessecary端口轉發規則,我決定我只希望通過向代理的電話傳輸通過Apache使用mod_proxy的

繼續閱讀'Apache代理和摘要式身份驗證'»

Zend框架:渲染如果存在

史蒂芬勞埃德沃特金斯 ,星期日二零一零年十二月十二日下午4時19分

綜述

職位,這是一個快速而簡單的討論,我創建了視圖助手呈現Zend框架式視圖文件只有當它存在。 一般要求代碼來呈現一個文件,不存在將拋出一個異常。 因此我創建了一個包裝器在Zend_View::render()的方法,確定文件是否存在,若有渲染,否則只是簡單地返回一個空字符串。
繼續閱讀'Zend框架:渲染如果存在'»

Zend認證工程師(鄭商所)5.3

史蒂芬勞埃德沃特金斯 ,星期四二零一零年九月三十日下午九時

隨著官方發布的Zend認證工程師(鄭州商品交易所)計劃的5.3我以為我會很快給我的印象,我想到了考試。

一個小背景自己:我是第一次接觸到PHP的大約7年前,有專業的工作自2006年以來在PHP。 我目前工作的一個令人興奮的啟動稱為Brightpearl總部設在英國布里斯托爾 ,生產的綜合客戶關係管理,會計,和電子商務軟件。 以前我還沒有獲得任何以前的鄭商所的資格。 我公司目前開發的5.2.X系列,並沒有真正使用過任何具體的5.3功能(我在等待Zend框架 2和原則 2)在我的開發項目。
繼續閱讀'Zend認證工程師(鄭州商品交易所)5.3'»

Zend框架的每個模塊佈局設置-跟進

史蒂芬勞埃德沃特金斯 ,週二二〇一〇年二月十六日下午8時48分

作為後續行動,我以前的職位上,每個模塊的佈局設置Zend框架 ,我已經更新了代碼,需要更少的配置,然後才(不是,它需要更多的幾行中,一個應用程序的配置!)。
繼續閱讀'Zend框架的每個模塊佈局設置-跟進'»

使用虛擬辦公室網格計算環境-第4部分

史蒂芬勞埃德沃特金斯 ,星期五09年12月4日晚上11:59

簡介

本人在一家公司工作,我們批作業處理運行多個記錄的數據以百萬計的每一天,我最近一直在思考的所有的機器圍坐的每一天什麼都不做了幾個小時。 那豈不是好,如果我們可以利用這些機器的處理能力來支持我們的系統? 在這組文章中,我要去看看的潛在好處僱用辦公室電網使用虛擬化環境。

第三部分我們創建了虛擬加工機和設置Windows機器成為空閒時間的工人。

最新的代碼運行

在創建你的工人不可避免的業務邏輯會改變,錯誤會被發現,更快,更高效的代碼會產生這樣離開你的工人圍坐在處理數據使用舊的臭代碼 那麼我們如何確保我們始終使用最新和最強大的版本,我們處理腳本?

有幾個簡單的方法很簡單,我們可以做到這一點,訣竅,但是,要減少網絡流量處理能力和在實現這一點。 讓我們先從最簡單的解決方案以及完善它慢慢地在一對夫婦的迭代。

第一種方法是將我們的工作簡單地連接到控制服務器(通過 Samba,FTP或類似)和拉下來的最新版本的代碼。 不是很有效,但是它會做這個工作。 這有點讓我們改進,如何建立一個 rsync的腳本和使用,每次呢? 或者怎麼樣把我們的最新處理腳本到顛覆檢查出的代碼,然後就開始更新我們的代碼在每次運行( svn更新 )?

最後,我們可能會與一個 bash腳本(稱為由cron每10分鐘),看起來很簡單,因為這:

  #!/ bin / sh的
如果ps的斧| grep的- V的grep的| grep的PHP的 “/ dev / null的
然後
    迴聲“工作目前正在處理,退出”
其他
    迴聲“作業沒有運行,從現在做起”
    光盤 /路徑 /要/工作/複製
     svn更新
     PHP的yourJobProcessingScript.php
科幻 

現在我們可以肯定的是我們每次運行時肯定運行的是最新的代碼。 我們保證這個代碼庫更新我們的每一次我們執行運行和降低網絡通信量傳輸文件的差別只在我們的網絡。

在我的示範設置,我沒有完全按照以上。 Subversion被安裝在我的作業處理服務器,我只是拉了最新的代碼從一個'工人'分支使用'svn更新'。 我還添加了一個版本號標記,這是我的處理腳本返回到數據庫的一部分返回結果。 這樣我可以看到我的代碼已被更新,每次我複製我的樹幹分支即到工人,我是絕對運行最新的處理腳本。

使用最新的數據

如果你的工作處理使用的數據源,然後在某個時刻這些將要更新了。 除非你打電話給你的數據源的基礎上非常罕見的水災,你要去的交通網絡,盡快使你的員工開始運行一切停頓。 對於我的解決辦法,我決定,我想提出我用我的數據源虛擬機。

擁抱你是馬那裡!如果我的數據源是巨大的? 嗯,這確實是一個案件有多少數據是我們說話嗎? 這可能是更符合成本效益來安裝額外的更大的硬盤到每個機比購買一個額外的服務器進行處理。 這是一個問題的預算,是由企業來決定。 這也許就是你的數據來源是如此之大,它只是保持這一行不通的數據量在你的工作機器。 在這種情況下你會怎麼辦? 嗯,我們可以看看調用本地數據服務器,但是這可能導致問題的網絡。 在這種情況下,電網系統,如這可能成為不切實際的,包括你的辦公環境。 這也可能是你可以看看其他運行策略,如只要求你的員工和晚上八時至上午06時每晚和/或節流數據源的請求。

可以說,我們對移動數據源萬兆的數據量。 好,可以說的相當多的數據,移動網絡上的更新。 我們如何確保我們擁有最新的數據副本在這種情況下? Rsync是一種可能性,但我個人覺得您的最新數據源運行在您的作業處理服務器和將其設置為一個掌握複製(用了漂亮的長濱日誌)可能是長的路要走:

複製 通過設置您的每個工人,作為一個奴隸的作業控制服務器更新您的數據源就會從天上掉下來的工人沒有很好的巨額增長,在網絡活動(即,除非你執行一個龐大的數據更新和所有的工人踢在一次)。 這已經超過rsync的優勢在,你不會得到一個長時間的停頓在每次工作;作為數據庫更新時, MySQL的守護進程在你的工人會不斷更新它的數據,而繼續處理。

這是怎麼設置我的演示服務器。 設置複製我跟著指南MySQL網站( 設置複製 ),並在20分鐘內,我有我>初始工人作業控制服務器複製數據集。 每增加工人的複製設置和處理工作,每次當虛擬機被複製。

綜述

在本節中的文章中,我們已經看到了如何簡單,無痛的它讓您的加工代碼最新的using rsync或subverion(SVN)的做工作,減少網絡流量的同時,我們還討論了如何time.Â讓您的數據源的信息保持在最新通過允許它流到您的每個工人。 因此,我們面積確保我們跟上業務邏輯和辦公室中的信息網格系統。 將有無數的選擇,顯然是在執行這些任務,但這裡有兩個簡單的例子,說明一個解決方案是多麼容易得的。

下次

在本系列的最後部分,取名為5部分 ,我們將討論部署該系統。 我會總結所學和我設法創造。

使用虛擬辦公室網格計算環境-第3部分

史蒂芬勞埃德沃特金斯 ,週五09年12月4日下午11點37分

簡介

本人在一家公司工作,我們批作業處理運行多個記錄的數據以百萬計的每一天,我最近一直在思考的所有的機器圍坐的每一天什麼都不做了幾個小時。 那豈不是好,如果我們可以利用這些機器的處理能力來支持我們的系統? 在這組文章中,我要去看看的潛在好處僱用辦公室電網使用虛擬化環境。

第二部分的工作,我們看著一台服務器將運行,以及如何工作應配置,以達到最大的處理量,同時確保每個作業處理不許失敗。

設置你的工人 - 或跛行服務器

下一步就是在這個過程中設置虛擬工人。 為此我將使用安裝使用VirtualBox的CentOS。 我要安裝mySQL的PHP的服務器上,也被稱為跛行馬錢, 米ySQL,磷惠普)在ServerA(我可能會做出這個名字了)。

  • 安裝 VirtualBox在你的Windows機器(以下鏈接)
  • 下載並安裝的CentOS(目前版本5.3)在創建的虛擬機

有一點我沒有到這個有可能是1000的大教程那裡(沒關係,這裡有一個: 創建和Managing CentOS的虛擬機下的VirtualBox )。 最重要的一點要注意的是,我想我打電話給我的虛擬機GridMachine。

至於我的選擇虛擬化的客戶端和操作系統去那裡是沒有什麼大的令人信服的理由,每個選擇。 VirtualBox是我用的東西在我家的機器,支持三個主要的操作系統。 我選擇了CentOS的作為它的一個良好穩定的操作系統,我用它在我自己的Web服務器。 我非常相信在正確的工具工作(雖然我在申請'用最快和最簡單的為你的心態在這裡),所以如果你的操作系統運行的X代碼更快更有效地使用它 :)

更重要的是確保你的虛擬機使用DHCP,否則每個新的虛擬機需要單獨配置這是我們不使用DHCP want.By我們並不需要配置網絡設置,個別工人機,DHCP會手出IP地址給你的。 因此,您可以複製您的虛擬機上的辦公室,而不必擔心設置每一個行動(這提高了可擴展性和降低工人的管理)。

這個過程中你要達到的目的是取得一個新的物理機,安裝 VirtualBox,然後部署幾乎沒有什麼其他的虛擬形象。 這可能是明智的設定所有你的員工在不同的子網,這樣你至少可以看到有多少機器正在運行。 您還需要設置你的機器上長期租賃或租用的DHCP無限。

如何運行的作業的勞動者

這是一個有趣的領域,並有多種有效的方法處理作業的工人。 在這裡,我將只討論兩個最明顯的:

  • 永遠運行腳本:腳本,無論是一個 shell腳本,或執行一個 PHP腳本一次在工人和運行的一部分,一個無限循環。 我已經貼現此方法,因為一次撞車事故的劇本,你的員工可能會停止運行沒有某種形式的干預。
  • 克龍的腳本執行:每隔X分鐘 cron守護進程啟動一個打電話給腳本來得到的東西去。 如果沒有一些檢查,這可能導致許多許多份你的工人腳本運行。

我的決定是去是用cron啟動一個 shell腳本每10 minutes.Â我的shell腳本執行以下任務:

  1. 獲取進程列表和grep這個'PHP的。 如果沒有找到,那麼繼續。
  2. 打電話給你的工作代碼,在我而言這將是基於 PHP的東西
  3. 工人腳本完成運行
  4. 準備去下一個適當的再次呼籲

我的bash腳本看起來類似如下:

  #!/ bin / sh的
如果ps的斧| grep的- V的grep的| grep的PHP的“/ dev / null的
然後
    迴聲“工作目前正在處理,退出”
其他
    迴聲“作業沒有運行,從現在做起”
     PHP的yourJobProcessingScript.php
科幻 

注:Echo的幾乎是完全沒有意義的,但可以幫助下一個人誰走來,試圖對其進行編輯。

那完成了設立工人虛擬機,快速,簡單,易於複製到每個新的一塊硬件收到。 在'聰明'的電網系統真的不是在可視化的操作系統,它的一切都與代碼創建的處理作業,作業配置,在確保作業運行在適當的時候(即當主機處於閒置狀態)。

設置窗口,以初始化工人

第一項任務是制訂命令來運行虛擬機從 Windows命令行。 如果你已經安裝的VirtualBox在默認位置,你也叫你的工人GridMachine那麼該命令需要加載你的工作是:

 的“C:\ Program Files文件\日\ VirtualBox的\ VBoxManage.exe”startvm GridMachine 

但要運行腳本在一個'無頭'的狀態,我們需要使用:

 的“C:\ Program Files文件\日\ VirtualBox的\ VBoxHeadless.exe”- startvm GridMachine -殘疾人复業=關 

這將啟動虛擬機沒有圖形用戶界面,並允許它保存狀態正常。 第二個參數關閉的RDP,因此不會與Windows RDP的衝突,或給你一個消息關於偵聽端口3389。 虛擬機的名稱是區分大小寫的!

下一步,我們將需要設置的窗戶上踢了我們的工人,一旦虛擬機已處於閒置狀態。 要做到這一點(在Windows XP中),你就需要去開始 - >“所有程序” - >附件 - >“系統工具” - >計劃任務如下:

計劃任務

下一步點擊'添加任務計劃,其次是瀏覽添加自定義程序。 瀏覽到您的VBoxManage腳本,然後單擊確定。 安排您的任務任何選項(我們將改變這種一分鐘),然後繼續。 跳繩後下一個畫面窗口會問你誰,你要執行這個任務,我建議你為'管理員'或創造了新的特權用戶。 請記住我們不想干預標準人員佔機器上的任何一點。 單擊下一步,檢查顯示此任務的高級選項。

對於最終的運行文本框加入我們的'startvm GridMachine'字符串,並確保只運行在登錄時留下unticked。 訪問下一個調度任務的時間表,改變下拉的選項'當空閒',選擇的時間量您想將閒置的機器,然後再進入到下一個標籤。

最後勾去掉選擇哪些國家停止任務,如果它已經運行 X數額的時間,但打勾選擇停止任務,如果機器不再閒置。

附表

就是這樣然後對 Windows主機設置!

綜述

在這一部分,我們已成立一個虛擬機作為一個工人,以及以何種方式我們稱之為我們的工作處理和執行腳本(我自己一個 PHP腳本)。 從這裡我們看看如何建立我們的份窗口來啟動虛擬機中無頭模式當計算機空閒,並保存其狀態恢復時,用戶使用本機。 希望在這一點上你看到的是多麼簡單設立這樣一個系統,並渴望得到一些實驗的進行吧!

下次

第四部分 ,我們會關注使用工具,以確保您正在運行最新版本的代碼和數據來源,以便得到的結果始終保持最新與最新的商業信息和邏輯。

使用虛擬辦公室網格計算環境-第1部分

史蒂芬勞埃德沃特金斯 ,星期五09年12月4日下午11點23分

簡介

本人在一家公司工作,我們批作業處理運行多個記錄的數據以百萬計的每一天,我最近一直在思考的所有的機器圍坐的每一天什麼都不做了幾個小時。 那豈不是好,如果我們可以利用這些機器的處理能力來支持我們的系統? 在這組文章中,我要去看看的潛在好處僱用辦公室電網使用虛擬化環境。

作為PHP的開發者,我要使用的工具,我每天使用,即Linux操作系統, mySQL的 ,PHP中,VirtualBox的和Subversion(SVN)。 但我希望這本手冊將適應其他的語言和技術一樣好。

我提供的解決方案將是非常鬆散型的基礎上處理我們就需要實現不過,這可能不是真的通過整篇文章的事情,我會改變為簡單起見,或產生更有趣的使用方案。

這些虛擬環境將運行在Windows機器上,因為這是大多數辦公室運行。 該辦公室的加工機器做不應該干涉員工使用這些機器,應該不需要保養機器,並很容易地部署到新機器,因為它們變得可用。 此外,新的虛擬機應該不需要任何額外的配置,這大大降低了可擴展性和易用性在哪個網格系統可以延長。

為什麼要部署Office計算網格?

首先,你可能會想,為什麼不直接使用雲計算資源,如亞馬遜的EC2平台 那麼原因可能有幾個,例如:

  • 你不會委託某些數據到雲計算環境
  • 你不能把某些數據為雲計算環境的法律理由(如數據離開該國),可能出於法律原因,如國民保健服務的記錄。
  • 你想讓你的加工單位密切,並已完全控制硬件太
  • 您沒有該項目資金運行情況的雲
  • 你的辦公室並沒有連接到互聯網,因此它無法使用雲資源
  • 你不喜歡雨,雲建議下雨,因此,你保持好遠

我敢肯定,這個名單可以繼續,但我認為這足夠了。

優勢一處計算網格

那麼,讓我們做一些數學(和真正的物理風格讓作出一些籠統的假設)。 想像一下,你有大仡處理服務器上運行,每天100個就業機會。 在你的辦公室你有閒置的50台機器是16小時,每天每個這些機器是10%那麼強大,你仡處理服務器。 (所有結果以下四捨五入低估的性能提升)。

因此,一機* 10%的電力* 2 / 3的時間= 0.067即1台式機加工過程中的空閒時間可以充分的工作,每天6。

如果你現在這樣的規模就需要15閒置桌面處理盡可能多的就業機會,每一天都當作你的主要處理服務器一樣。

因此,在我們假裝辦公室50台機器 ,我們可以增加我們的服務器的處理能力從1到4個全處理服務器 ,或者我們可以每天處理400個職位 ,而不是100。

請注意,因為沒有投資於新硬件的公司剛剛增加了批量處理能力4倍 你會潛在增加你的電源使用,但大多數辦公環境,我去過的機器一般都留在一夜之間,所以你可以看到這是一個綠色的倡議。

其他優點還意味著,投資在新的(或更新)處理服務器可以被延遲,如果你的辦公室機器足夠,當你改善你的力量你的辦公室辦公設備變得更加強大的自動網格。

技術

你需要什麼? (或更正確我怎麼使用):

  • 空閒辦公室機器(在我的情況下舊的Windows XP的備用筆記本電腦)
  • VirtualBox的(或其他虛擬化用戶端軟件)
  • 一個虛擬機,使用PHP,mySQL的runningÂ運行減少操作系統,我打電話來,我這一瘸一拐服務器 :)
  • 喬布斯運行
  • 作業服務器(可以是另一個虛擬機的地方)

典型工作

該類型的工作,該系統被設計為運行情況如下:

  • 系統接收數據的列表後,我們需要匹配並返回結果
  • 選配涉及檢查 /搜索數(相當靜態)數據源
  • 結果從數據源可能需要進一步驗證,合併,檢查其他數據源的反應結果
  • 返回數據相匹配的記錄,充分驗證和處理
  • 每個記錄在一個工作是獨立於其他

所以基本上我們看到的正在運行的作業需要的混合物數據庫查找和一些數字計算,一個相當典型的場景是在商業環境。

網格解決方案不僅有利於處理這種類型的工作。 基本上,任何過程,可以分為獨立單元可並行運行。 看到這個維基百科的例子和更多的信息: 網格計算 ,但夫婦的例子是著名的SETI @ homeBIONC 有框架運行計算網格,這些都是值得研究的。

我們會怎樣實現?

到年底,這些文章我希望展示廳部署電網不需要非常昂貴或費時。 我將討論:

  • 設立作業控制系統,作業的配置
  • 建立適當的處理虛擬機
  • 如何設置基於 Windows系統的機器
  • 確保您使用的是最新的代碼和數據
  • 部署和基準
  • 展望未來

我會大樓(確定我建,並寫這個)一個示例應用程序來測試的概念在本地計算機使用Windows XP和我的'GridMachine的虛擬機。 我的工作控制服務器將是我的主要機器,運行Fedora的11

這絕不是為了充分展示了強大的系統工作,它意味著更多的示範和討論顯示,這些東西都可以實現在一個相當短的時間和空間較小的代價。 請隨時給我任何意見,更正,或改善,我會盡我所能,讓這文章的更新相匹配。

下次

第二部分首先,我會著眼於作業控制系統,並研究如何工作應配置,以達到最大的處理量,同時確保每個作業處理不許失敗。

使用虛擬辦公室網格計算環境-第2部分

史蒂芬勞埃德沃特金斯 ,星期五09年12月4日下午11點23分

簡介

本人在一家公司工作,我們批作業處理運行多個記錄的數據以百萬計的每一天,我最近一直在思考的所有的機器圍坐的每一天什麼都不做了幾個小時。 那豈不是好,如果我們可以利用這些機器的處理能力來支持我們的系統? 在這組文章中,我要去看看的潛在好處僱用辦公室電網使用虛擬化環境。

第一部分我給了系統的概述和技術我會用,以及討論了一些潛在的原因,你想創建一個Office網格。

作業控制

如果你要運行的工作,然後你會需要一些方法來管理它們。 你的任務控制系統(在你的作業服務器)需要,真正做到深思熟慮之前,甚至試圖運行一個辦公室的網格。 所以,首先,什麼是任務控制系統的工作:

  • 伸手從工人的工作提出要求
  • 告訴工人什麼類型的工作運行
  • 跟踪工作
  • 確保作業只運行一次
  • 為工人提供就業數據,或者至少告訴他們在哪裡得到它

該系統還需要具有可擴展性,一個解決方案,工程正處在一個單一的情況下可以延長至運行多種類型的就業機會的企業認為值得在網格的解決方案。 例如,可能會獲得優先就業,多個工種可能存在(即幾個代碼基地),最終你甚至可能會出現幾個不同的工作機器,優化了每個類型的工作(雖然從沒有搬走的共通工人'的想法)。 總是試圖在思考未來發展的系統中,短期目標會導致長期的沮喪和更多的發展時間。

作業服務器

我們將需要一個地方來控制我們的工作從,這應該是唯一的系統在你的網格,它有一個固定資源定位器,是一個 IP地址,主機名稱,URL(使用內部 DNS)等,這是因為工人需要知道在哪裡找工作,工人們需要找到作業控制系統(未找到工作的工人控制系統)。

作業服務器本身並沒有真正有一個複雜的任務(在基本制度無論如何),它需要存儲一個列表的工作,手出的工作,接收結果,隨後它們存儲供日後檢索。 如何將這些部件(如'失控喬布斯)的定義可以是很基本的。 後來我們可以擴展系統,包括一個管理界面來添加,編輯,刪除,暫停工作,但是這已經超出這個練習。

沒有任何理由,然後,你的工作服務器不能是一個虛擬機運行在主服務器進行處理提供它不會消耗太多的資源了。 但是這項工作確實需要服務器的高可用性,如果它出現故障的星期五晚上你將失去整個週末的處理,你可能花費幾個星期的處理時間價值(相比,​​您的主服務器進行處理單) 。 您可能要考慮將你的工作服務器負載平衡環境中的高可用性。

基本設置

基本設置服務器為我們的工作將包括一個什麼我打電話,我癱軟服務器 (即馬錢, 米ySql,磷馬力)。 該代碼將運行在西婭工人實際工作了什麼工作,它可以運行與工作的互動與控制系統數據庫。 後來,我們可以創建一個Web服務和工作實際不可收拾,而不是讓工人自己做艱苦的工作,但現在我們將繼續使用KISS原則 (保持簡單,愚蠢!)。

因此,讓我們創建三個mySQL的表來處理工作。 這些工作將是``,`jobRecords`,`和`jobResults。

工作表 在這裡,我使用的SQL巴迪一個偉大的小的替代phpMyAdmin的只是因為它更容易安裝在CentOS(對於別人看: 10大phpMyAdmin的替代品

此表由5個簡單的領域,

  • 編號:唯一標識工作
  • 名稱:也許是客戶參考,或任意數量的其他標識
  • 狀態:你要知道在那裡的工作是,如
    • 0:未開始
    • 1:撿到
    • 2:已完成
  • started_by:誰開始做這項工作嗎? 這是必須的,但不完全是一個不錯的。 我建議由工人跟踪他們的IP地址在網絡上
  • started_at:什麼時候工人開始上班? 通過跟踪未完成的作業量在X的時候,我們知道我們需要拿起工作,並開始再次加工的另一名工人。 工人可以停止處理 /離線的任意數量的原因,停電,死機,網絡損失等

這是很容易如何表可以延長一些額外的字段,以便統計跟踪,完成時間列,了解工作多久了,計數器,看看有多少工人拿起工作(顯然,這往往需要1),作業的優先級,名單可以繼續下去。 在更複雜的工作方案將有可能指定多少內存工人將需要訪問(因此只使用合適的工人),甚至是什麼類型的工人將是必需的。

讓我們添加一些示例工作:

例如工作

下表又是很容易理解,這些都是我們的工作記錄。 它們鏈接到的主要工作表中的列`jobs_id`。 美容,本表在很大程度上取決於你需要的數據提供給你的員工,讓做一個很簡單的例子,我們有四個列:

  • 身份證:身份證的記錄
  • 名稱:人的姓名
  • 地址:人的地址
  • jobs_id:工作記錄的ID,這是與

第三個也是最後一個結果表包括表,它有許多相同品牌,作為我們的記錄表,並與另外一些列可以是兼職的記錄表:

  • job_record_id:鏈接的結果對工作表
  • 結果:結果數據

...這就是你需要的作業控制! (雖然在一個非常基本的水平)在我的情況下,我指著我的另一個表中的數據處理的位置,但是這也很容易被一個文件,參數運行模擬程序,你的名字。

選擇工作

如前所述,工人將盡我們的工作為我們現在的管理,所以我們真的需要做的是找到一份工作,需要處理和獲取信息。 我們怎麼做呢? 挑好了我們的工作的選擇標準和尋找工作,在SQL我做了以下幾點:

  1. 採取任何作業未標記為完成,但我們的工人和重置它們(替代__ME__同一個標識符,最簡單的將是IP地址):
     更新`工作`設置`地位`= 0,其中`地位`和`started_by = 1`= __ME__; 
  2. 用我們的工作選擇標準,選擇工作,告訴控制系統,這個工人是處理它:
     更新`工作`設置`地位`= 1,`started_by`= __ME__,`started_at`=現在()凡`地位`= 0或
     (`地位`和`started_at = 1`> DATE_SUB(現在的(),間隔 x小時))的量級的`id`升序; 

    通過抓工作還沒有返回的結果在X的時間量,我們確保所有的工作都是運行在崩潰的事件或去工人擅離職守。

  3. 下一步的工作細節抓起其次是記錄自己:
     選擇 *從`工作`其中`started_by`= __ME__極限 1;
    選擇 *從`job_records`其中``= __JOBID__身份證; 

這項工作完成後,我們插入我們的結果記錄和標記為已完成的工作。 記得作業可以暫停 /恢復在任何時候允許一些穩健性的腳本。 這可能是該任務中途中止更新作業控制系統,使檢查的記錄數在一份工作,結果數保存到作業控制系統將是一個明智之舉。

此外,雖然這項工作可以演示了如何選擇和管理,從一個SQL的查詢框,你真正應該抽象你的工作控制,因此,如果你決定轉而使用一個Web服務,基於文件系統, XML的 ,或任何其他數的系統也不會影響它上面的代碼。

作業配置

下一個方面要考慮的是作業的大小和配置。 透過扮演與工作配置,我們能夠取得良好平衡的速度,進程複製和可靠性。 以一對夫婦 ofÂ情況:

  1. 喬布斯以1天每次運行:這意味著你的員工需要15天時間來處理每一個工作(記得10%的功率2/3rds的時間)。 這顯然不是一個明智的配置,你的工作的大小是太大了! 這將需要至少增加一倍的時間去處理工作應走的初始工人擅離職守(時間拿起它並沒有回加後處理結果的時間)。 在一個理想的你至少有一個完整的職位,最終輕鬆地清除每個長的閒置期,這樣你的工作保持滴答過去,在最壞的情況下工作需要兩天的過程中應首先失踪。
  2. 喬布斯需要1分鐘,運行:這意味著你的員工大約需要15分鐘,每個作業運行。 雖然這最初可能似乎理想,你獲得額外的處理在工作午餐時間,茶點,會議等等這種情況下把其他領域的應變系統,介紹了其自身的問題。 例如,首先您的設置 /處理時間比還將會持續下去的權力下放,因此失去了系統效率。 您的網絡將是不斷流工作信息工作人員的各種令人沮喪的工人誰是毛澤東的日常工作​​。 你也將會把更多的應變處理服務器上的工作,因為它炮製出很多,很多小件作品定期。 最後,在這種情況下如果你的工作服務器停機你將創建一個巨大的回未完成的工作日誌,而更大的就業機會,可以繼續處理工作開心的不知道該服務器遇到的困難。

在現實中不​​會有一個理想的配置為您的網格設置,在很大程度上取決於可用的資源,類型的作業,作業周轉時間的要求,網絡功能等。 然而,有些準則是:

  • 大小工作,這樣每個工人可以通過至少3-4在一段時間內的工作15個小時(最長可能空閒時間)
  • 玩作業大小,使安裝時間變得相當微不足道相比,處理時間(銘記上述點)。
  • 如果工作沒有完成的時間量的兩倍(也許更少),你期望它來完成它認為它不再擅離職守,並開始處理它與另一名工人。 這意味著你可能要等上三倍的正常長度為它的工作完成(可能更長如果後續工作失敗)。 您可能要減少這種時間,但要小心不要減少太多,你可以開始複製的處理任務定期。
  • 喬布斯應該是獨立的外部要求盡可能。 作業服務器,例如,只應接觸的開始和結束每一項工作。
  • 不飽和您的網絡,這將有兩方面的負面影響,你白天的工作人員將發現使用的網絡問題可能是令人沮喪和經歷的連接超時的問題只會變得更糟,你縮放網格。
  • 確保作業可以運行在自己的工人。 如果工作過於密集的內存或磁盤空間密集的工作將開始中止,唯一你會發現在數量上是一個下拉處理的工作,沒有真正原因。

提交結果求職

當提交一份工作的結果是很重要的檢查結果沒有被提交的其他工人,特別是如果目前的工作已經休眠一段時間。

當結果提交確保結果的數量相匹配的記錄數內的工作。

如前所述,而不能過分強調,建立容錯檢索到的工作和成果提交。 工人可以(而且很可能會)進入掛起模式在最不方便的時間,這需要被照顧。 還再次提取了你的結果提交將有助於應付未來的變化對你的工作更容易控制系統來處理。

綜述

在這 sectionÂ我們看到什麼工作需要做的控制服務器,以及如何得到一個非常基本的系統設置。 我們討論了如何檢索工作從控制系統以及如何最好地配置工作,以獲得最大的我們對您的辦公網系統。 要完成,一個段落或兩個提交結果返回到工作,提出了控制服務器。

  • 一個作業控制服務器管理工作,確保完成各項工作單位
  • 通過抽象你的工作選擇 /結果提交的技術,我們可以改變的控制服務器,沒有什麼問題
  • 配置您的工作,以確保它們運行快速,高效地沒有把太多的壓力,您的網絡基礎設施,但不重複處理任務定期。
  • 確定你建立容錯和錯誤 checkingÂ到您的程序,工人可以暫停,恢復和最不方便的時候。 記住要檢查的結果已經提交了另一名工人。

下次

第三部分我們將創建我們的虛擬加工機,並成立了我們的窗戶機器成為空閒時間的工人。

使用虛擬辦公室網格計算環境-第5

史蒂芬勞埃德沃特金斯 ,星期五09年12月4日下午11點03分

簡介

本人在一家公司工作,我們批作業處理運行多個記錄的數據以百萬計的每一天,我最近一直在思考的所有的機器圍坐的每一天什麼都不做了幾個小時。 那豈不是好,如果我們可以利用這些機器的處理能力來支持我們的系統? 在這組文章中,我要去看看的潛在好處僱用辦公室電網使用虛擬化環境。

In Part 4 we looked at using tools to ensure that we're running the latest version of the code and data sources so that obtained results are always up-to-date with the latest business information and logic.

Pre-Deployment

Before deploying your grid system if there's one thing you do and one thing alone it's benchmark your current system ! No matter what you tell colleagues about how much extra work your system is going to do unless you have numbers to back this up your guarantees are nothing. 所以,

  • how many records can you process currently? Per Day? Per Hour?
  • How long does it typically take to turn around a job?
  • How much more capacity do you have?

There's also additional questions:

  • If your processing server (or one of your processing servers) goes down how will this affect your capabilities, will you be crippled?
  • What advantages do you hope/expect to get from a grid system?
  • Are your office machines capable of running the jobs?
  • Are your (or can you jobs be converted) to wrok in this style of running?

The last major point is to take your time on any major change like this. Update your processing code to work using the new methodology, benchmark again. Possibly set up your processing server to run a virtual machine, after all your processing server will just be another worker (just a very powerful one relatively). Allow the new process to settle.

Deployment

My suggestion would be to pop into the office one weekend perform all the installations and setup. Do this just before a fortnight's holiday and leave so other poor chap to deal with the consequences… maybe not…

Deployment for a system like this needs to be slow. Despite it being relatively simple to set up this system will affect your entire office infrastructure (well the digital one). Firstly, roll out to a couple of machines at a time, monitor network traffic, how the worker hosts perform on a day-to-day basis. You may need to alter your job configuration in response to your findings.

Once the system has settled with a few machines (lets say 10% of all office machines, ie 5) keep monitoring network traffic and host machine performance. Next benchmark again, you should now be processing 33% more jobs than your first benchmarks. Check this is so, or that you're at least in this ballpark. If not, investigate what is going on before moving on. Repeat this cycle until you happily have all office machines running without killing individual machine performance or grinding your network to a standstill.

At all times keep benchmarking, even after all deployments are made. Check how new code updates affect speed of your system, check all workers are reporting in and processing jobs. Slowly (very slowly) increment your job configuration to get the best from your workers and network.

住手!

如果你要停止你的員工在運行一段時間? 他們都在那裡運行,再生,並盡力處理數據,如飢餓的昆蟲。 答案似乎顯而易見,但它的價值增加,以防其被忽視。 您只需編輯處理腳本退出(0)或死亡()或其他聲明殺死你的處理工作。 一個重要原因,我們總是試圖更新到最新的處理腳本之前運行!

演示系統

為了寫這一套短文章我創建了一個非常小網格展示的技術和方法。 我看了很多文章,教程和使用各種工具來設置和監視是怎麼回事。 決不走了出來,我已經全廳飽和交通和NOR,我曾訪問一個普通工作人員,看看電腦主機性能受到影響。

My demonstration system was very humble indeed. I used my regular desktop set up as a job control server. On this I had installed mySQL server installed set up as a master in replication, PHP , and SVN linked through apache (for access via worker VM).

I then created a centOS worker machine on VirtualBox on a 6 year old windows XP laptop. I setup scheduled tasks as specified after copying the VM onto the machine and let it go.

The virtual machine was set up with PHP, subversion, and mySQL. I checked out a branch named 'worker' from my job control servers repository and made sure it could be updated using 'svn update'. Next I setup mySQL as a slave and checked that data was replicating from mySQL on the job control server down to the worker VM. 畢竟這是我設置的bash腳本和cron作業。

My processing script basically went along the lines of this (very simple stuff):

  • Read in the name field
  • Counted the number of similar names in a table from the data source held on the VM
  • Counted the number of names as above but splitting the name by spaces (ie forename, middle, surname)
  • Repeated this process 1,000 times

Each job took approximately 20 minutes to run. At one point I opened several copies of the worker VM on the windows laptop and watched the jobs be checked off by each of the worker IP addresses. 在這一點上我也證實,複製自動重新啟動。

Leaving the laptop to idle resulted in a worker starting to process jobs from the job control server. When resuming laptop usage there was a delay of about 30-60 seconds, this is a fair amount of time and staff would need to be made aware that their machine may pause for a short while when returning to the machine. Newer machines may not have a pause of this long. The benefit of the amount of processing performed by these machines during idle periods would more that outweigh staff members having to wait a short period (say 1 minute) on arriving at their machines of a morning (I frequently wait longer that this for a Windows Defender update to take place) provided they were made aware of this (useful time to grab a morning coffee!).

Overall I feel confident that I have demonstrated the technologies that could be used to create such a system. I have shown that such a system does work on a (very) small scale and with some more experimenting could be scaled up utilise the resources of an office's machines. If I don't get to the point of doing this I would be very interested to know/see when someone else does.

Conclusions / Evaluation

下一個明顯的步驟將是真正得到一個真正的世界的例子,並開始部署這一系統,如在一個辦公環境,看看會發生什麼。 要求一個企業要承擔這個公司沒有線索證明熾烈的技術和效益可能會有點困難。 網格/分佈式計算是很受歡迎的某些圈子裡,並有一些大型應用程序(BIONC,SETI @ home的,Folding @ Home的,等等)。 我沒有,但是,找到一個簡單的系統規模較小,像這樣在我的搜索推出了可在一個辦公環境。

我創建了一個基本上是免費的系統主要使用開源軟件和工具,可以在幾乎任何職位。 這些技術基本上表現,並顯示執行和正常工作。 希望我表明,沒有太多的工作,一個非常簡單的設置就可以部署一個辦公室網格計算系統,功能強大,價格便宜,A和可擴展性都在同一時間。

一旦系統啟動並運行,幾乎沒有盡頭的金額定制和改善你可以。 例如統計數據 /基準可以很容易地添加,顯示這種制度值得每一天。 新機器可以增加快速,輕鬆地到達時對現有硬件進行升級 bolstering你的處理能力。

我希望你喜歡閱讀這個系列的文章,其給你回味無窮運行辦公室電網系統。 這裡提出的解決方案並不一定適用於所有情況,但應該適應,讓您得到您的數據處理通過使用自己的解決方案。

請隨時給我任何意見,更正,或改善,我會盡我所能,讓這文章的更新相匹配。

Zend框架:基礎-回顧

史蒂芬勞埃德沃特金斯 ,星期六2009年11月28日下午10時42分

最近我的雇主支付了我們開發組採取Zend框架:基礎課程,在這裡我將總結一下我的想法和意見的過程中為他人。 對於那些希望節省時間,這裡是我的總結:

對於開發誰還沒來得及看看Zend Framework的這門課程(Zend框架:基本原理)提供了一個良好的整體框架的圖片向您介紹的重點領域和提供足夠的信息,以便繼續進行。 對於那些誰花時間看的框架和奉行一個或兩個教程本課程不提供遠遠超出。

背景

I've been a PHP developer for around 5-6 years, and have started working with the Zend Framework on a component basis over the last 6 months. I've developed and/or been a developer on a couple of small Zend Framework MVC sites. I'll be honest, I haven't had a huge amount of exposure to other frameworks from a coding point of view but have spent several hours researching the project websites and evaluating them. The framework and the community surrounding Zend Framework it is quite exciting and there seem to be huge possibilities in where its going.

About the Course

本課程都是通過兩個小時的WebEx會議 9日(含10分鐘,中間休息)。 時間都花在經歷提供的一組幻燈片由Zend與討論在任何時候。 你可以使用麥克風交談的教練,但說實話,我沒有看到任何人使用任何東西比聊天窗口。 另外一個 VMWare Ubuntu機提供的示例代碼和項目已經成立了一個試用版的Zend Studio的。 當然領導人會談的參加者或在一個集成的VoIP解決方案,也可以使用一個撥號全世界的許多撥號號碼。

During the course the material consists of a brief overview of the Framework and the MVC pattern before heading into a sample guestbook application. The discussion demonstrated bootstrapping, Zend_Application, Db Tables, Database access, Forms, Filtering, ACL, Validating, etc, etc. Basically covering all the topics you'd require to get a basic site up an running all the time giving you the tools to go and get more advanced in the framework (although this did amount to 'See the website' much of the time).

Time is given to code up some examples, and to develop the 'guestbook' and simple 'wiki' application. 我個人認為,提供每個應用程序代碼或再要求我們開發什麼,基本上是複製的同時並沒有真正提供了一個很好的學習經驗。 我寧願來開發應用程序類似,但不完全相同。 應用的例子有效益的指導參考。 Alternatively building the applications from scratch with the demonstrator would of possibly led to more questions about why and how , thus giving a better understanding of the framework, after all you can look up specifics after the course.

The last lecture consisted of working on the wiki application with help/guidance from the instructor. 課程的反饋意見後作出,這是多次強調通過課程,Zend的需要反饋非常認真,其實很明顯我們的版本的過程是相當新的。 Some of the other developers in the company will be taking the course soon so it will be interesting to see if this has happened.

The course style was informal, allowed for feedback and collaboration between attendees and the instructor. 該課程負責人很友好,平易近人(電子郵件地址被共享的問題),並同時從他的演講幻燈片有點不穩似乎完全勝任的框架。 他顯然是一個人誰使用了框架,而不是定期的人誰是教教過程中,我喜歡'真實世界'在這方面的經驗。

總體感覺

In some ways I found the course a waste of time, in others it was very handy. 希望我會得到我的理由跨越清楚,也許提供了一些發人深省的問題或有用的反饋(知道我這是不可能的!)。

對於我這個課程的目的是過低的水平。 在經歷過快速入門指南,可閱讀羅布艾倫的Zend框架的行動,並與框架一點我真的沒有得到任何東西太多了。 I would of liked the course to pick up from the end of the quickstart and develop additional skills.

儘管如此,課程名稱並註明“Zend框架: 基本原則 ”,並在這方面的課程達到它規定了什麼做的。 其他成員的開發團隊,沒有花的時間尋找到框架中完成的每個環節以飽滿的熱情,問題,真的很高興看到的。

All was not lost, it was good to spend time confirming the basic details of the framework and get to ask a couple of questions in areas where I wasn't 100%. 也有人說我有時間坐下來,想想每天使用框架的編碼和今後的項目,這是我不能夠做到的,否則(你能想像你的公司同意嗎?:))。 最後但並非最不重要的,你還得到一個不錯的證書從 Zend地說,你參加了課程(儘管通過電子郵件)。

Zend框架認證

This was one question that kept coming to mind during the course, would it prepare me for the certification? 快速,簡便是一個響亮的 The course instructor was quite clear on that with the additional advice that for the certification you should really be using the framework on a day to day basis and feel very comfortable and confident in its usage and methodologies.

綜述

鑑於上述一切,我已經寫了,我將總結一切都在兩個簡單的要點:

  • New to Zend Framework: This course does exactly what you'd expect, it gives you a nice introduction to the framework and a good grounding on the basics from which you can build. 本課程似乎產生興趣和熱情開發商之間的框架。
  • 使用Zend框架:雖然很高興能支撐一些基本我感到非常的時間,精力和資金的過程中可以採取的是更好地用在別處。 這將是不錯的經濟核算制度的Zend創建一個新的更高水平的課程開發人員可以採取一個新的水平-至少對標準的認證和超越。 為此我將立即註冊。












全景主題 Themocracy

8 visitors online now
6 guests, 2 bots, 0 members
最大遊客今日:26日上午12時 46分聯合技術
本月:26日2011年7月5日上午12點 35分聯合技術
今年:130 28-03-2011下午10時 40聯合技術
所有時間:130 28-03-2011下午10時 40聯合技術