동적으로 런타임에서 Zend_Navigation 컨테이너에 페이지를 추가

이용 , 목요일 2010년 1월 7일 오후 10시 50분

Zend_Navigation에 대한 내 마지막 게시물에서 연속에서 사용자 정의 컨트롤러 / 액션에 sitemap.xml에 대한 경로 요청 이 게시물 dymnamically 런타임 / 스크립트 실행에서 Zend_Navigation 컨테이너에 페이지를 추가에 대한 것입니다.

그것은 괜찮는 INI하거나 페이지를 지정하는 XML 파일이 있지만 어느 시점에서 당신은 메뉴, 사이트맵, 또는 작은 표시 등산로에 포함되는 일부로하려는 사이트의 페이지를 변경했을거야. 따라서 우리가 할 일은 런타임에서 우리 Zend_Navigation 컨테이너에 페이지를 추가합니다. 이것에 대한 예제 추가 뉴스 항목, 블로그 포스트, 또는 페이지의 의견 등에있을 것이다

'동적으로 런타임에서 Zend_Navigation 컨테이너에 페이지를 추가'를 읽고 계속»

사용자 정의 컨트롤러 / 액션에 sitemap.xml에 대한 경로 요청

이용 수요일 2010년 1월 6일 12시 13분 오전,

/에 대한 직접적인 요청에 위해 sitemap.xml의 사용자에서 사용자 지정 컨트롤러와 액션에 젠드 프레임 워크 응용 프로그램을 간단하게 (예 : 제가 사용 navigation.ini)를 application.ini 또는 대체 구성 파일에 다음을 추가

 resources.router.routes.sitemap.route = "sitemap.xml의"
 resources.router.routes.sitemap.defaults.controller = 인덱스
 resources.router.routes.sitemap.defaults.action = 사이트맵

출력의 예제 코드는 적절한 컨트롤러 (예 : 내 Sitemap 색인 컨트롤러 사이트맵 행동에 달려있다)의 동작을 만들어 볼 수 있습니다 :

 < PHP
 수업 IndexController
     Zend_Controller_Action을 확장
 {
     / **
      * Zend_Navigation 설정을 기반으로 사이트맵을 찔려서
      * /
     공용 함수 sitemapAction ()
     {
    	 달러를 반향이 ->보기 -> 탐색 () -> 사이트맵 ();
    	 $이 ->보기 -> 레이아웃 () -> disableLayout ();
    	 $이 -> _helper -> viewRenderer -> setNoRender (TRUE);
     }
 }

Sitemaps는 빠르고 쉽게 이용하여 생성할 수 Zend_Navigation 이며, 훌륭한 빠른 자습서 (그리고 젠드 프레임 워크 튜토리얼에 대해 일반적으로 매우 유용) 젠드 기초가 - 동적 메뉴의 사이트맵과 빵부스러기를를 생성 .

젠드 프레임 워크는 단위 모듈 기반 설정

이용 금요일 2010년 1월 1일 오후 10시 40분

제가 적은 구성이 필요합니다이 게시물에 대한 추가 답변을 만들었을 참조하십시오 젠드 프레임 워크 - 모듈 기반 레이아웃 .

사용할 때 젠드 프레임 워크를 모듈, 당신은 동일한 응용 프로그램에게서 다양한 (하위) 사이트를 실행하는 경우 반드시 동일한 것을 원하지 않으면 그것의 명백한로 배치 스크립트에 각 부분을. 저는 다음 사이트의 구조로 결정 :

  / 신청
     / 컨트롤러
         ...
     / 모델
     / 모듈
         / 기본
             / 컨트롤러
             / 레이아웃
                 / 스크립트
             / 전망
                 / 스크립트
         / anotherModule
             ...
     / 스크립트

문제는 당 모듈 단위로 레이아웃 스크립트를 설정했다. 대답은 액션 도우미를 사용을 통해 왔어요. 당 모듈 단위로 레이아웃을 설정하는 것은 세 단계를 포함 :

  1. Application.ini (또는 이와 유사한 구성 설정) :
      admin.resources.layout.layoutPath = APPLICATION_PATH "/ 모듈 / 관리자 / 레이아웃 / 스크립트"
     default.resources.layout.layoutPath = APPLICATION_PATH "/ 모듈 / 기본 / 레이아웃 / 스크립트"
     member.resources.layout.layoutPath = APPLICATION_PATH "/ 모듈 / 회원 / 레이아웃 / 스크립트"
     affiliate.resources.layout.layoutPath = APPLICATION_PATH "/ 모듈 / 제휴 / 레이아웃 / 스크립트" 
  2. 귀하의 액션 도우미를 만들기 :
      <? PHP
     / **
      * 당 모듈 단위로 레이아웃 경로를 설정합니다
      *
      * @ 작성자 로이드 Watkin <lloyd@evilprofessor.co.uk>
      * @ 2010년 1월 1일 이후
      * /
     수업 Pro_Controller_Action_Helper_SetLayoutPath
         Zend_Controller_Action_Helper_Abstract 연장
     {
         / **
          모듈을 기반으로 * 세트 레이아웃 경로
          * /
         공용 함수 preDispatch ()
         {
        	 $ 모듈 = $이 -> getRequest () -> getModuleName ();
    
    	     경우 ($ 부트 스트랩 = $이 -> getActionController ()
    	                        -> getInvokeArg ( '부트 스트랩')) {
    
    	         $ 설정 = $ 부트 스트랩-> getOptions ();
    
    	         경우 (isset ($ 설정 [$ 모듈] [ '자원'] [ '레이아웃'] [ 'layoutPath'])) {
    	             $ layoutPath =
    	                  $ 설정 [$ 모듈] [ '자원'] [ '레이아웃'] [ 'layoutPath'];
    	             $이 -> getActionController ()
    	                  -> getHelper ( '레이아웃')
    	                  -> setLayoutPath ($ layoutPath);
    	         }
        	 }
         }
     } 
  3. 그리고 마지막으로 작업 도우미를 boostrap :
      ...
         / **
          * 당 모듈 단위로 배치 스크립트를 설정합니다
          * /
         보호 기능 _initLayoutHelper ()
    	 {
    	     $이 -> 부트 스트랩 ( 'frontController');
    	     $ 레이아웃 = Zend_Controller_Action_HelperBroker :: addHelper (
    	         새로운 Pro_Controller_Action_Helper_SetLayoutPath ());
    	 }
     ... 

교리 : 지금 날짜 _ 기본 ()

이용 , 수요일 2009년 12월 30일 오후 6시 반

나는 새을위한 데이터베이스 스키마를 설정과 사투를 벌인 봤는데 젠드 프레임 워크 프로젝트. 사용 사용하려는 교리의 내 데이터베이스 모델에 ORM을. 나는 현재의 타임 스탬프를 새 메시지를 추가할 때 그것이 나를 예`날짜 _`칼럼을위한 기본 날짜와 시간을 설정할 수 있도록 나는 스키마를 설정해야합니다. 나는 그것을 공유하고 많은 검색 및 실험 후에 나는 해결책을 발견.

귀하의 스키마에서 YAML의 파일을 간단하게 다음을 수행하십시오 :

 메시지 :
   actAs :
     Timestampable :
       생성 :
         이름 : created_at
         유형 : 타임 스탬프
         형식 : Ymd H : I : S
       업데이트 :
         이름 : last_updated
         유형 : 타임 스탬프
         형식 : Ymd H : I : S
   열 :
     ID :
       유형 : 정수
       주 : 진실
       autoincrement : 진실
     이름 : 문자열 (255)
     이메일 : 문자열 (300)
     메시지 : 문자열 (2000)

반면에 당신은`updated_at`컬럼을 원하지 않는 경우에는 다음을 사용할 수 있습니다 :

 메시지 :
   actAs :
     Timestampable :
       생성 :
         이름 : created_at
         유형 : 타임 스탬프
         형식 : Ymd H : I : S
       업데이트 :
         불가 : 진실
   열 :
     ID :
       유형 : 정수
       주 : 진실
       autoincrement : 진실
     이름 : 문자열 (255)
     이메일 : 문자열 (300)
     메시지 : 문자열 (2000)

PHP의 디자인 패턴 - 옵저버 패턴

이용 , 화요일 2009년 12월 29일 오후 10시 2분

나는 책을 읽은 적이 있는데 헤드 퍼스트 디자인 패턴 최근 것은 내 자신의 이익을 위해 PHP 예제로 패턴의 일부를 작성하기로 결정했습니다. 제가 코드를하기로 했죠 첫 번째가입니다 옵저버 패턴 . 옵저버 패턴의 공식적인 정의는 다음과 같습니다

관찰자 패턴 (비동기의 하위 집합이 패턴을 게시 / 구독 )은 소프트웨어 디자인 패턴 있는 개체 , 주제라는 관측라는 그 부양 가족의 목록을 유지하고, 일반적으로 호출하여, 모든 상태 변경 사항을 자동으로 통지 그 중 한 방법 . 그것은 주로 분산 이벤트 처리 시스템을 구현하는 데 사용됩니다.

시스템이 증가함에 따라 더 느슨하게 이벤트가 이러한 업데이 트에 대한 지식을 필요로 모든 시스템을 어떻게하면 정보를되었는지 확인하는 결합. 예를 들어, 블로그 게시물이 게시물을 저장한 후 우리는 (예 : Lucene) 검색 엔진을 업데이 트해야 할 수도 있습니다, 우리 사이트맵, 태그, 이메일 구독하는 사용자, 등등을 업데이 트 관찰자 패턴은 개발자들이 관찰할 수있는 개체를 수정하지 않고 추가 리스너를 추가할 수 있습니다 . 제목 (예 : 블로그 게시물 편집 시스템)으로 관측 (예 : 검색 엔진 업데이트 관찰자, Sitemap 생성기 등)을 주입함으로써 우리는 그것이 어떠한 변경없이 필요한 모든 업데이 트를 수행하도록 할 수 있습니다.

독서 'PHP의 디자인 패턴 - 옵저버 패턴'을 계속하기»

가상 환경을 사용하여 Office 그리드 컴퓨팅 - 4 부

이용 금요일 2009년 12월 4일 오후 11시 59분

소개

우리는 여러 배치 작업이 데이터를 매일 기록의 수백만을 처리하고 난 몇 시간 동안 아무것도하지 않고 매일 주위에 앉아있는 모든 컴퓨터에 대해 최근에 생각해 봤는데 실행 어디 회사에서 일하셨어요. 우리 시스템의 처리 능력을 강화하기 위해 그 기계를 사용할 수있다면 좋지 않겠어요? 기사 일련의 필자는 사무실 고용의 잠재적인 혜택을 보는 거예요 그리드 virtualised 환경을 사용합니다.

에서는 제 3 부 우리는 가상 가공 기계를 만들어 유휴 시간 근로자가 될 윈도우 머신을 설정합니다.

최신 코드를 실행

불가피하여 근로자의 비즈니스 로직 변경됩니다을 만든 후, 버그가 발견되고, 빠르고보다 효율적인 코드 때문에 직원들은 사용하여 데이터 처리 주위에 앉아 떠날 생산됩니다 오래된 냄새나는 코드를 . 그러면 어떻게 우리가 항상 처리 스크립트의 최신 버전을 사용하고 있는지 확인합니까?

우리가 이것을 할 수있는 몇 가지 매우 쉽게 간단한 방법이 있습니다, 트릭은 그러나, 이것을 달성 처리 능력과 네트워크 트래픽을 줄이는 것입니다. 솔루션의 간단한 시작과 반복 정도에 걸쳐 천천히를 개선하자.

첫 번째 방법은 단순히 우리의 작업 제어 서버 (삼바, FTP 또는 유사한 통해)에 연결하여 코드의 최신 버전을 다운 당길 것입니다. 별로 효율지만 일을 할 것입니다. 그 약간의 개선 방법에 rsync 스크립트를 생성하고 대신 그 때마다 사용하는 방법에 대한?하자 또는 어떤 Subversion을 처음 코드를 체크 아웃으로 최신 처리 스크립트를 넣어 그리고 나서 각각의 실행 (에 우리의 코드를 업데이 트에 대한 svn 업데이트 )?

결국 우리는이만큼 간단하게 보이 BASH 스크립트 (cron이 10 분 간격으로 불림)으로 끝낼 수도 :

  #! / bin / sh의
 만약 PS 도끼 | grep-v를 grep | grep PHP > / dev / null로
 그때
     에코 "직업은 현재 출구를 처리하고 있습니다"
 다른
     메아리 "작업이 실행되지 않는, 지금부터"
     CD / 경로 /에 /는 / 복사 작업
     svn 업데이트
     PHP yourJobProcessingScript.php
 

이제 우리는 각각의 운영으로 우리가 확실히 최신 코드를 실행하고 있는지 확인 될 수 있습니다. 우리는 우리의 코드베이스에게 우리가 운영을 수행하는 각각의 모든 시간을 업데이 트만이 우리의 네트워크를 통해 파일의 차이점을 전송함으로써 네트워크 트래픽을 줄여 이것을 보장하고.

제 데모 설치에서 나는 정확히 위와 같이 했어요. 서브 버전은 제 일을 처리하는 서버에 설치하고 간단하게 'svn 업데이트'를 사용하는 '노동자'지점에서 최신 코드를 뽑았습니다. 또 결과 반환의 일환으로 데이터베이스에 반환된 내 처리 스크립트로 버전 번호 태그를 추가했습니다. 이러한 방법으로 내 코드는 제가 확실히 최신 처리 스크립트를 실행하는 작업자 지점 예로 내 트렁크를 복사할 때마다 업데이 트되는 것을 볼 수 있었다.

최신 데이터를 사용

귀하의 작업 처리가 어떤 시점에서 다음 데이터 소스를 사용하게하는 경우 이들도 업데이 트해야 할 수 있습니다. 당신은 즉시 직원들은 정지에 모든것을 가져다가 게재되기 시작으로 트래픽이 네트워크가 몰려오는거야 매우​​ 드문 기준으로하여 데이터 소스를 호출하지 않는 한. 내 솔루션을 위해 나는 나의 VMS와 주변의 내 데이터 원본을 이동하려는 결심했다.

거기 말에있어 만요! 내 데이터 소스가 거대한 무엇입니까면? 그럼이게 정말 우리가 얼마나 많은 데이터 소리의 사건인가? 그것은 추가적인 프로세싱 서버를 구입하는 것보다 각 시스템에 추가로 더 큰 하드 드라이브를 설치할 효과보다 비용있을 수 있습니다. 이것은 예산의 문제이며 결정 사업에 달려있다. 그것은 아마도 당신의 데이터 소스에 너무 큰 것을 그것은 당신의 작업자 기계에서 해당 금액의 데이터를 유지하는 데 단지 unfeasible. 이 경우 당신은 어떻게 하시겠습니까? 그럼 우리는 로컬 데이터 서버를 호출 볼 수 있지만, 이것이 네트워크 문제가 발생할 수 있습니다. 이 경우에는 이와 같은 그리드 시스템은 사무 환경에 포함 비현실적인 될 수 있습니다. 그것은 또한 당신은 각 밤 및 / 또는 스로틀 데이터 소스 요청 오후 8시 및 오전 6시 사이에 근로자를 호출 예를 들어, 대안 실행 전략으로 볼 수 있습니다.

수에 이동하면 데이터의 100GB에 우리의 데이터 소스 금액을 말한다. 아 글쎄 그 업데이 트에서 네트워크 주위에 이동하는 데이터의 상당한입니다. 어떻게 우리가이 경우에 데이터의 최신 복사본이 있는지 확인까요? Rsync는 가능성이지만, 개인적으로 난 당신의 작업 처리 서버에서 최신 데이터 소스를 실행하고 복제에서 마스터 (좋은 긴 빈 로그를 포함)로 이것을 설정하여 갈 방법이 될 것 같아요 :

복제 데이터 원본에 작업 제어 서버 업데이 트에 대한 슬레이브로 근로자 각각을 설정하면 (당신이 거대한 데이터 업데이 트를 수행하고 모든 직원이 빨리 회복하지 않는 한 그것은 네트워크 활동의 큰 증가없이 해당 노동자에게 친절하게 아래로 물방울합니다 한번에). 이렇게하면 각 작업 전에 긴 일시 정지를 안해요에 rsync 이상의 이점을 가지고, 데이터베이스 업데이 트로, MySQL의 처리가 계속 발생하면서 노동자에 대한 데몬이 지속적으로 데이터를 업데이 트합니다.

여기가 바로 내가 데모 서버를 설정하는 방법입니다. 복제를 설정하려면 저는 MySQL 사이트 (대한 가이드를 따라 복제를 설정 )에서 20 분 이내에 내 작업 제어 서버 데이터 세트를 복제 내 inital 노동자했다. VM이 복사되었을 때 각 추가 노동자의 경우 복제 설정과 프로세스 때마다 일했습니다.

개요

기사의이 섹션에서는 우리가 쉽고 고통없이는 일을 rsync using 또는 subverion (SVN)에 의해 날짜와 같은 time.Â에서 네트워크 트래픽을 줄일 수 있도록 처리 코드를 유지하는 것이 얼마나 방문한 적이 우리는 또한 방법을 논의 네 근로자 각각의 아래로 물방울 있도록하여 데이터 소스 정보를 최신을 유지합니다. 따라서 우리 지역 우리 사무실 그리드 시스템의 비즈니스 로직과 정보를 유지할 수 있도록. 도 분명히 이러한 작업을 수행에 무수한 대안이 될하지만, 여기에 솔루션을 구하기가 얼마나 쉽게 표시하는 두 가지 간단한 예제였다 것입니다.

다음 번엔

핌이라는 이름의이 시리즈의 마지막 부분에서는 제 5 부 우리는이 시스템을 배포 다루겠습니다. 제가 만들려고 애쓰고 것을 알게되었다 무엇을 요약합니다.

가상 환경을 사용하여 Office 그리드 컴퓨팅 - 3 부

이용 금요일 2009년 12월 4일 오후 11시 37분

소개

우리는 여러 배치 작업이 데이터를 매일 기록의 수백만을 처리하고 난 몇 시간 동안 아무것도하지 않고 매일 주위에 앉아있는 모든 컴퓨터에 대해 최근에 생각해 봤는데 실행 어디 회사에서 일하셨어요. 우리 시스템의 처리 능력을 강화하기 위해 그 기계를 사용할 수있다면 좋지 않겠어요? 기사 일련의 필자는 사무실 고용의 잠재적인 혜택을 보는 거예요 그리드 virtualised 환경을 사용합니다.

에서는 제 2 부 우리는 서버가 실행 작업을 보면서, 그리고 작업은 각 작업이 실패하지 않고 처리 있도록면서 처리의 가장 큰 금액을 달성하기 위해서는 어떻게 구성되어야합니다.

또는 병든 서버 - 귀하의 노동자 설정하기

프로세스의 다음 단계는 가상 근로자를 설정하는 것입니다. 이를 위해 저는 VirtualBox를 사용하여 centOS의 설치를 사용거야. 저는 설치 겠어요 MySQL을 그리고 PHP를 또한 병든 (리튬의 nux, M ySQL, P HP) Server (내가 그 이름을 만들어 냈을 수도 있음)로 알려진 서버에.

  • (링크를 클릭하십시오) 당신의 윈도우 머신에 VirtualBox를 설치
  • 생성된 가상 머신 내에 centOS (현재 버전 5.3)을 다운로드 및 설치

아무 소용 내가 거기서 훌륭한 자습서 (네, 다음 1000의 아마가이가는이 없습니다 virtualbox하에 작성 및 Managing centOS 가상 머신 ). 그럼 만약 내가주의해야할 중요한 포인트는 내가 가상 머신 GridMachine라는 점이다.

아득히 가상화 클라이언트와 운영 체제의 제 선택가는대로 각 선택에 대한 큰 매력 아무런 이유가 없다. VirtualBox 내 가정용 컴퓨터에 사용 세 가지 주요 운영 체제가 지원하는 무언가이다. 나는 그것의 좋은 안정적인 운영 체제로서 centOS를 선택하고 내 자신의 웹 서버에 그것을 사용하세요. 제가 (제가 적용하고 있지만 여기에 정신 '을위한 빠르고 쉬운 사용')이 일을 위해 적합한 도구의 훌륭한 신자이고, 이렇게 운영 체제 엑스 빠르게 코드를 실행하고있다면보다 효율적으로 그 대신 :) 사용

중요한 것은 여러분의 VM이 각각의 새로운 가상 머신을위한 그렇지 않으면, DHCP를 사용하고 있는지 확인하는 것이 우리 노동자 기계에 대해 개별적으로 네트워크 설정을 구성하지 않아도 우리가 want.By DHCP를 사용하지 않는 무언가있는 별도로 구성할 필요가, DHCP는하겠다 당신을 위해 IP를 알아. 따라서 당신은 (이것은 확장성을 개선하고 노동자 관리를 감소) 각 설정에 대한 걱정없이 사무실에 대해 가상 머신을 복사할 수 있습니다.

당신이 달성하는 것을 목표로한다 과정은 새로운 물리 기계, 설치 VirtualBox를 구하려면 다음 많지 않죠없이 거의 가상 이미지를 배포하는 것입니다. 그것은 당신이 적어도 실행되고 얼마나 많은 기계를 볼 수 있도록 다른 서브넷에있는 모든 노동자를 설정하는 것이 현명 수도 있습니다. 당신은 또한 장기 임대 또는 무제한 임대 DHCP에 기계를 설정해야합니다.

노동자에 채용 정보를 실행하는 방법

이것은 흥미로운 분야이며, 노동자에 작업을 처리하는 여러 가지 유효한 방법이 있습니다. 여기에 단지 두 분명한 논의 것이다 :

  • 영속적 스크립트를 실행 스크립트, 그것 쉘 스크립트 또는 PHP 스크립트가는 노동자을 한 번 실행하고 무한 루프의 일부로 실행됩니다. 나는 스크립트 중 하나를 사고로이 방법을 할인했고 잠재적 근로자 개입 일종없이 실행하지 않게 되겠지.
  • Cron은 기반의 스크립트 실행 : 모든 X의 분에는 cron 데몬이 일을 가야 스크립트로 전화를 나가 라고요. 몇 가지 체크하지 않고이 당신의 작업자 스크립트 실행의 많은 여러 복사본을 초래할 수 있습니다.

내 결정은 쉘 스크립트에게 내 쉘 스크립트는 다음 작업을 수행하는 매 10 minutes. 나가 라고요 어떤 cron이 함께 이동하는 것이었다 :

  1. 프로세스 목록 가져오기 및 'PHP'이걸 grep. 발견되지 않으면 다음 계속 진행합니다.
  2. 직업 코드를 호출, 내 경우에는 이것이 기반 무언가 PHP 될
  3. 노동자 스크립트는 실행을 완료
  4. 다음 해당 통화에 다시 갈 준비

내 BASH 스크립트는 다음과 같이 보입니다 :

  #! / bin / sh의
 만약 PS 도끼 | grep-v를 grep | grep PHP> / dev / null로
 그때
     에코 "직업은 현재 출구를 처리하고 있습니다"
 다른
     메아리 "작업이 실행되지 않는, 지금부터"
     PHP yourJobProcessingScript.php
 

참고 : 에코의 거의 완전히 무의미하지만, 그들을 시도하고 편집할 나타나서 다음 사람에게 도움이 될 수 있습니다.

즉, 빠르고 간단하고받은 하드웨어 각각의 새로운 조각에 복사하기 쉽고 노동자 가상 머신의 설정을 마칩니다. 그리드 시스템의 '영리'는 정말 시각 OS,에 있지는 공정 작업, 작업 구성하고 만든 코드와 함께 할 모든 경우 (즉, 호스트가 유휴 상태일 때 해당 작업이 실행되었는지 확인하고 관련 ).

근로자를 초기화하도록 Windows 설정

첫 번째 작업은 Windows 명령줄에서 가상 머신을 실행하는 데 필요한 명령을 해결하는 것입니다. 당신이 기본 위치에 virtualBox를 설치하여 귀하 노동자 GridMachine라는했다면 다음 작업자를로드하는 데 필요한 명령은 다음과 같습니다 :

  "C : \ 프로그램 파일 \ 일 \ VirtualBox \ VBoxManage.exe"startvm GridMachine 

그러나 '머리없는'상태에서 스크립트를 실행하는 데 우리가 사용해야합니다 :

  "C : \ 프로그램 파일 \ 일 \ VirtualBox \ VBoxHeadless.exe"-startvm GridMachine - vrdp = 오프 

이것은 GUI없이 가상 머신을 시작하고 정상적으로 상태를 저장할 수 있습니다. 두 번째 인수는 윈도우 RDP와 충돌하지 않도록 RDP를 끄고, 또는 당신에게 포트 3389에서 수신 대기에 대한 메시지를 제공합니다. 가상 머신 이름은 대소문자를 구분합니다!

다음, 우리는 기계가 유휴되면 우리 노동자 VM을 킥오프 창문을 설정해야합니다. > 모든 프로그램 - -> 악세사리 -> 시스템 도구 -이 (윈도우 XP)를 수행하려면 [시작] 이동해야합니다 다음과 같이> 예약된 작업을 :

예약된 작업

에서 다음을 누릅니다 사용자 지정 프로그램을 추가하려면 탐색 뒤에 '는 예약 작업 추가'를 클릭합니다. 당신의 VBoxManage 스크립트로 이동하고 확인을 누릅니다. 옵션 중 하나 (우리는 곧 이것을 바꿀거야)에 대한 작업을 예약하고 계속합니다. 다음 화면을 빼먹는 후 Windows가이 작업을 실행하려면 누구를 묻습니다, 나도 '관리자'또는 새로운 권한이있는 사용자 생성을 제안 거라고. 우리가 어느 시점에서 컴퓨터의 표준 직원 계정을 방해하고 싶지 않아 잊지 마십시오. 다음을 클릭하고이 작업에 대해 표시 고급 옵션을 확인합니다.

실행 텍스트 상자의 끝에 우리의 'startvm GridMachine'문자열을 추가하고 unticked 남아 로그 인한 경우에만 그 실행을 보장합니다. 다음 일정 작업을 방문하여, 당신은 기계가 다음 탭으로로 이동하기 전에 유휴 상태가되고 싶은 시간을 선택할 '유휴시'는 일정 옵션 드롭 다운으로 변경합니다.

마지막으로 그것이 시간까지 XXX를 실행되어있다면 작업을 중단 나타내는 옵션을 untick하지만, 기계가 유휴 상태가 더 이상없는 경우 작업을 중단하는 옵션을 체크 않습니다.

일정

그것은 윈도우 호스트 설치를 위해 다음이야!

개요

이 부분에서 우리는 노동자뿐만 아니라 우리가 전화는 우리 일을 처리 스크립트를 실행하는 방법으로 행동하는 가상 머신을 설정하면 (자신이 PHP 스크립트의 경우). 여기에서 우리는 사용자가 기계의 사용을 다시 시작하면 그 상태를 컴퓨터가 유휴되면 헤드리스 모드에서 가상 머신을 시작하고 저장 창이 우리의 복사본을 설정하는 방법 좀 봐. 바라건대이 시점에서 당신은 이러한 시스템을 설정하는 방법을 간단하게보고 계시는 및 일부 실험은 스스로를 가야 가려움 있습니다!

다음 번엔

에서는 4 부 우리는 얻은 결과는 항상 최신의 비즈니스 정보와 논리가있는 최신입니다 있도록 코드와 데이터 소스의 최신 버전을 실행하고 있는지 확인하기 위해 도구를 사용하여보고됩니다.

가상 환경을 사용하여 Office 그리드 컴퓨팅 - 1 부

이용 금요일 2009년 12월 4일 오후 11시 23분

소개

우리는 여러 배치 작업이 데이터를 매일 기록의 수백만을 처리하고 난 몇 시간 동안 아무것도하지 않고 매일 주위에 앉아있는 모든 컴퓨터에 대해 최근에 생각해 봤는데 실행 어디 회사에서 일하셨어요. 우리 시스템의 처리 능력을 강화하기 위해 그 기계를 사용할 수있다면 좋지 않겠어요? 기사 일련의 필자는 사무실 고용의 잠재적인 혜택을 보는 거예요 그리드 virtualised 환경을 사용합니다.

마찬가지로 PHP를 개발 전, 즉 매일 리눅스를 사용하는 툴을 사용할 거예요 마이 SQL , PHP, VirtualBox와 서브 버전 (SVN)을. 그러나이 가이드는 단지뿐만 아니라 다른 언어 및 기술에 적응할 수 있기를 바랍니다.

제가 제공하는 솔루션은 매우 느슨한 우리가 난 단순에 대한 것들을 바꿀거야, 아니면 더 재미있게 사용 시나리오를 생산하는 게 전체 기사를 통해 사실이 아닐 수도 있지만 달성하기 위해 필요한 것 처리의 유형을 기준으로합니다.

이 사무실의 대부분이 실행 무엇 때문에 이러한 virtualised 환경은 Windows 컴퓨터에서 실행됩니다. 사무실 컴퓨터가 할 것을 처리가 그 기계를 사용하는 직원을 방해하지 말아야, 기계 에선 유지 보수를 필요로하지 않으며 그들이 출시되면 새로운 시스템에 쉽게 deployable 있어야합니다. 이것은 크게 그리드 시스템을 확장할 수있는에서 확장성과 용이성을 감소 또한, 새로운 가상 머신은 어떤 추가 구성이 필요 없습니다.

왜 오피스 컴퓨팅 그리드 구축?

첫째로 생각됩니다, 왜 그냥 같은 클라우드 컴퓨팅 리소스를 사용하지 아마존의 EC2 플랫폼을 ? 뭐 이유는 예를 들어, 몇 가지있을 수 :

  • 당신은 클라우드 컴퓨팅 환경에 특정 데이터를 위탁하지 않습니다
  • 당신은 법적인 이유로, 예를 들어 보건국 기록을 위해 잠재적으로, 법적 사유 (예 : 데이터가이 나라를 떠나)에 클라우드 컴퓨팅 환경에 특정 데이터를 넣어 수 없습니다.
  • 당신의 처리 장치가 너무 하드웨어에 완전한 제어권을 닫고도 유지하려면
  • 당신은 구름 인스턴스를 실행하는 프로젝트 자금이 없다
  • 당신의 사무실은 구름 리소스를 사용하려면 인터넷에 연결되어 있지 때문에 그것이 가능하지 않습니다
  • 당신은 비가 싫다, 구름은 비를 제안 그러므로 당신은 아주 멀리 유지

난 목록을 계속 갈 수있을거야,하지만 충분히 지금은 그거 같아요.

오피스 컴퓨팅 그리드의 장점

음, 어떤 수학을 (그리고 진정한 물리학 스타일의 일부 한눈에 가정을 만들 수 있습니다) 할 수 있습니다. 당신은 하루에 100 작업을 실행하는 큰 우둔한 처리 서버를 상상해보십시오. 사무실에서 16 시간 대기가 50 기계를 가지고,이 기계 각은 살이 찐 처리 하수관와 같은 강력한 10 %입니다. (여기서 모든 결과는 성능 향상을 과소 평가하는 반올림됩니다.)

따라서, 1 기계 * 10 %의 전력 * 3분의 2 시간 = 유휴 시간에 0.067 즉, 한 바탕 처리가 하루에 6 전체 작업을 처리할 수 있습니다.

지금이 기회를 확장할 경우는 메인 프로세싱 서버와 마찬가지로 하루에 많은 작업을 처리하는 데 15 유휴 데스크탑 걸립니다.

그래서 50 기 우리 솔직하게 사무실에서 우리는 4 전체 처리 서버에 최대 1 서버에서 우리의 처리 능력을 증대시킬 수있다, 또는 우리는 100 대신에 하루에 400 작업 처리를 할 수 있습니다.

공지 사항은 새로운 하드웨어 관련없이 투자 회사는 자사의 배치 처리 용량을 4 번 증가! 잠재적으로 귀하의 전력 사용량을 증가 될거야하지만 대부분의 사무실 환경에서 나는 기계에 다녀오는 길이는 일반적으로 어차피 하룻밤 사이에 남아되므로 녹색 사업으로 볼 수 있습니다.

다른 장점은 또한 사무실 기계가 충분하고 사무실 머신의 파워를 향상시키는대로 사무실 그리드가 자동으로 더 강력한가 될 수있다면 새로운에서 해당 투자 (또는 업데이트) 처리 서버가 지연될 수있다 는거야.

기술

당신이 필요 한가? (또는 더 정확하게 내가 무엇을 사용했습니까) :

  • 유휴 사무용 기계 (제 경우에 여분의 오래된 Windows XP의 노트북)
  • VirtualBox (또는 다른 가상화 클라이언트 소프트웨어)
  • PHP, MySQL을 runningÂ은 OS 다운 컷을 실행하고있는 가상 머신, 나는 이러한 나의 병든 서버에게 :)을 부르겠
  • 실행할 수있는 채용 정보
  • 작업 서버는 (어딘가에 다른 가상 머신이 될 수 있음)

일반 채용 정보

다음과 같이 해당 시스템이 실행되도록 설계되는 작업의 종류는 다음과 같습니다

  • 시스템은 우리가 결과와 일치하고 반환해야하는 즉시 데이터의 목록을받습니다
  • 검색은 (상당히 정적) 여러 데이터 소스를 점검 / 검색 포함
  • 데이터 소스의 결과가 결과에 대한 응답으로 추가 데이터 소스의 검사, 병합, 추가 유효성 검사가 필요할 수 있습니다
  • 데이터는, 일치하는 레코드로 반환 완벽하게 검증 및 처리
  • 직장 내의 각 레코드는 나머지 독립적입니다

그러니까 기본적으로 우리는 데이터베이스 조회의 혼합물 및 일부 숫자 재정 상태, 사업 환경에서 매우 일반적인 시나리오를 필요로 작업을 실행보고.

그리드 솔루션은 이러한 유형의 작업을 처리에만 유리하지 않습니다. 기본적으로 독립적인 단위로 분할 수있는 모든 프로세스가 병렬로 실행할 수 있습니다. 예제 및 자세한 내용은이 위키 피 디아를 참조 : 그리드 컴퓨팅 지만, 유명한 예제가 몇 있습니다 Seti @ 홈BIONC . 이 컴퓨팅 그리드를 실행하기위한 프레임 워크가 있으며, 이들은 조사 가치가있다.

우리는 무엇을 달성할 것인가?

이 기사의 마지막으로 나는 사무실 그리드를 배포하는 것은 상당히 비싸거나 시간이 소요가 될 필요가 없습니다 것을 보여줄 수 있도록 노력하겠습니다. 나는 토론거야 :

  • 작업 구성, 작업 제어 시스템을 설정하기
  • 적절한 처리를 가상 머신 만들기
  • 윈도우 머신에 시스템을 설정하는 방법
  • 당신은 최신 코드와 데이터를 사용하는 보장
  • 배포 및 벤치마킹
  • 앞서 찾고

나는 (확인이 쓴 다음, 내장) Windows XP 및 내 'GridMachine'가상 머신을 사용하여 로컬 컴퓨터에 개념을 테스트하기 위해 예제 응용 프로그램을 구축습니다. 내 직업은 관리 서버가 실행 나의 메인 시스템이 될 것입니다 페도라 11 .

이것은 어떠한 방식으로 완벽하게 작동 강력한 시스템을 설명하기위한 것입니다, 그것은 시위보다 이러한 것들은 시간을 합리적으로 짧은 공간과 약간의 비용으로 얻을 수 있다고 보여주는 논의를 의미. 나에게 의견, 수정 또는 개선을 보내주시기와 일치하도록 업데이 트이 문서를 유지하기 위해 최선을 다하겠습니다 주시기 바랍니다.

다음 번엔

에서는 제 2 부 나는 작업 제어 시스템을보고하여 시작되며, 작업이 각 작업이 실패하지 않고 처리 있도록면서 처리 큰 금액을 달성하기 위해서는 어떻게 구성되어야 조사.

가상 환경을 사용하여 Office 그리드 컴퓨팅 - 2 부

이용 금요일 2009년 12월 4일 오후 11시 23분

소개

우리는 여러 배치 작업이 데이터를 매일 기록의 수백만을 처리하고 난 몇 시간 동안 아무것도하지 않고 매일 주위에 앉아있는 모든 컴퓨터에 대해 최근에 생각해 봤는데 실행 어디 회사에서 일하셨어요. 우리 시스템의 처리 능력을 강화하기 위해 그 기계를 사용할 수있다면 좋지 않겠어요? 기사 일련의 필자는 사무실 고용의 잠재적인 혜택을 보는 거예요 그리드 virtualised 환경을 사용합니다.

에서는 제 1 부 당신이 사무실 격자를 만들 이유뿐만 아니라 잠재적인 이유 중 일부를 논의대로 사용됩니다 시스템 및 기술의 개요를 주었다.

작업 제어

당신은 작업을 실행해야 할거야면 당신이 그들을 관리하는 방법이 필요하다. 당신의 임무 제어 시스템 (직업 서버) 정말 잘 심지어 사무실 그리드를 실행하기 전에 밖으로 생각해야합니다. 그래서 첫째, 작업 제어 시스템에 대한 작업은 무엇입니까 :

  • 근로자의 요청에 따라 작업을 나누어
  • 어떤 종류의 작업을 실행하기 위해 근로자에​​게
  • 트랙 작업
  • 작업이 한 번만 실행되는 것을 보장
  • 노동자에게 일자리 데이터를 제공하거나, 적어도 어디에 그것을 얻기 위해서 그들에게

또한이 시스템은 확장 가능한, 그리드 솔루션의 가치를 보는 기업과 같은 작업을 여러 종류를 실행하도록 확장할 수 단일 경우에 지금 작동 솔루션 있어야합니다. 예를 들어, 작업 우선 순위를 얻을 수 있습니다, 하나 이상의 작업 유형 (예 : 여러 코드 기지)있을 수 있습니다, 결국 당신도 그 '일반 노동자에서 떨어지 않지만 (작업의 각 유형에 최적화된 여러 가지 노동자 머신을 실행할 수도 있습니다 '아이디어). 항상 시스템을 개발할 때 미래에 대해 생각하려고, 단기 비전은 장기 좌절과 개발 시간 증가로 이어질 수 있습니다.

작업 서버

우리는 우리의 일자리를에서 제어하는​​ 곳으로 늘려야 할 것,이 등 IP 주소, 호스트 이름, URL이 (내부 DNS를 사용하여),이 때문입니다 것을 고정 리소스 로케이터를 가지고 여러분의 그리드에서 유일한 시스템이 있어야합니다 노동자는 어디 일자리를 찾는 알아야 노동자는 작업 제어 시스템 (하지 작업 제어 시스템이 근로자를 찾아)을 찾아야 해요.

작업 서버 자체가 정말 (기본 시스템의 이유는) 복잡한 작업이 없다는, 일자리 나누어, 작업 목록을 저장하고 결과를받을 수 있었고, 그 후에 나중에 검색을 위해 그들을 저장할 필요가 있습니다. 이러한 부품 (예 : '손 작업 아웃') 정의되어있는 매우 기본적인 방법이 될 수 있습니다. 나중에 우리가 관리 인터페이스 추가, 수정, 삭제 작업을 일시 중지하지만이 운동을 넘어할지 포함하도록 시스템을 확장할 수 있습니다.

직장 서버가 그것에서 너무 많은 자원을 배수하지 않습니다 제공된 기본 프로세싱 서버 내에서 실행되는 가상 머신 없을 수 없다는 사실을 전혀 이유가 없다. 그게 당신이 처리 전체 주말을 잃게 될거야 금요일 저녁에 잡히게되면 작업 서버는 그러나 잠재적으로 당신에게 처리 시간의 가치가 몇 주 (혼자 기본 프로세싱 서버와 비교시) 비용, 높은 가용성을 필요가 없습니다 . 당신은 높은 가용성을위한 분산 처리 환경에서 작업 서버를 투입하는 것이 좋습니다.

기본 설정

우리 일이 서버에 대한 기본 설정 내 병든 서버 중 하나를 (그것 리의 nux, M ySql, P HP입니다)를 호출하는지로 구성되어 있습니다. the 근로자에​​서 실행되는 코드는 실제로 작업 제어 시스템 데이터베이스와 상호 작용하여 실행할 수있는 작업 밖으로 작동합니다. 나중에 우리의 웹 서비스와 실제로 손으로 작업 밖보다는 근로자들이 열심히 일을 스스로 할 필요를 만들 수 있겠지만 지금 우리는 계속 사용 할게 키스 원리를 (이것은 간단하게, 바보!).

그럼, 세 만들 수 있습니다 mySQL 데이터 작업을 처리하는 테이블을. 이들은`일자리`,`jobRecords`, 그리고`jobResults`될 것입니다.

작업 테이블 여기 내가 사용하고 SQL 버디에게 들에게 큰 작은 대안 phpMyAdmin을 (를위한 다른 사람들이 볼 수 centOS를 설치하는 단지는 쉽게 phpMyAdmin ~ 10 그레이트 대안 )

이 표는 5 단순 필드로 구성되어 있습니다

  • ID : 유니 클리 작업을 식별
  • 이름 : 클라이언트 참조 또는 다른 식별자의 숫자 수도
  • 상태 : 당신은 직업에 어디 있는지 알아야 예
    • 0 : 시작되지 않음
    • 1 왔는데
    • 2 : 완료
  • started_by : 할 일을 시작 누가 그래요? 이것은 전적으로 필요하지만 가질 멋지되지 않습니다. 난 당신의 네트워크에서 자신의 IP 주소로 추적 노동자를 제안 것
  • started_at : 언제 노동자가 작업을 시작 했지? 시간의 X 금액 내에 완료되지 않은 작업을 추적함으로써 우리는 다시 한 번 작업을 픽업하여 다른 작업자에 의해 처리를 시작할 필요가 알아요. 근로자는 처리를 중지 / 어떤 수를 이유로, 전원 장애, 충돌, 네트워크 손실 등에 대해 오프라인 갈 수있다

그것이 테이블 통계를 추적, 작업이 얼마나 많은 노동자들이 직장을 주워보고, 카운터는데 얼마나 걸린 볼 마감 시간 열 수 있도록 할 몇 가지 추가적인 필드를 사용하여 확장할 수있는 방법을 쉽게 (확실히이 요구 돌봐야 1), 작업 우선 순위 목록은 맨날 수 있습니다. 더 복잡한 작업 시나리오에서는 그것은 노동자 (그리고 그에에만 적합한 근로자를 사용), 또는 심지어 어떤 종류 노동자의 것이 필요한 것입 대한 액세스를 필요 얼마나 많은 메모리를 지정하는 것이 가능해 질 것입니다.

몇 가지 예제 작업을 추가할 수 있습니다 :

예를 들어 작업

다음 테이블을 다시 이해하기 매우 간단하다, 이들은 우리의 일이 기록입니다. 그들은 열에`jobs_id`하면 기본 작업 테이블에 연결되어 있습니다. 이 테이블의 메이크업은 정말 당신이 노동자에게 제공해야하는 데이터에 따라, 우리는 4 열이 매우 간단한 예제를 만들 수 있습니다 :

  • ID : 레코드의 ID
  • 이름 : 사람의 이름
  • 주소 : 본인의 주소
  • jobs_id :이 레코드에 연결되어있는 작업 ID

세 번째 마지막 테이블 결과 테이블로 구성되어 있습니다, 그것은 동일의 기록 테이블로 만들어 많이 가지고 있으며, 일부 컬럼의 추가와 함께 기록 테이블의 일부가 될 수 있습니다 :

  • job_record_id : 작업 테이블에 결과를 링크
  • 결과 : 결과 데이터

그리고 그 말은 당신이 작업 제어에 필요한 전부에요! (아주 기초적인 수준에서 떨어지기는) 내 경우에는 전 과정에 내 데이터가 위치한되었다 다른 테이블로 지적하고, 그러나 이것은 그냥 간단하게 파일을 입었 을까요, 시뮬레이션 코드를 실행할 수있는 매개 변수, 당신은 그것을 지정합니다.

직업 선택하기

이전에 언급한 바와 같이, 근로자 이제, 우리는 우리 일을 관리를 할 것이다, 그래서 우리가 정말해야 할 모든 처리를 필요로 직장을 찾아 정보를 얻을 수있다. 우리가 어떻게 이런 짓을 했을까? 그럼 우리의 직업 선택 기준을 선택하고 일자리를 찾습니다, SQL에서 나는 다음과 같은 한 :

  1. 전체로하지만 우리 노동자에서 표시되지 않은 작업을 타고 (식별자로 __의 ME__ 대체, 쉬운가 IP 주소가 될)을 재설정 :
      업데이트`작업`SET를`상황`= 0 WHERE`상태`= 1`started_by`= __ ME__; 
  2. 우리의 직업 선택 기준을 사용하여 직업을 선택하고 해당 근로자가 취급하고있는 제어 시스템을 말한다
      업데이트`작업`SET를`상황`= 1,`started_by`= __ ME__,`started_at`= NOW () WHERE`상태`= 0 또는
     (`상태`= 1`started_at`> DATE_SUB (NOW (), 간격 X 시간)) ID`ASC`BY 주문; 

    우리 모두 작업이 무단 충돌하거나가는 노동자의 경우에도 실행되도록 시간 X 금액에 결과를 반환하지 않은 잡을 작업으로.

  3. 다음 레코드 자체가 다음 작업 세부 정보를 잡아 :
      `일자리`부터 *를 선택 WHERE`started_by`= __ ME__ 제한할 1;
     job_records`부터 *를 선택`WHERE`아이디`= __ JOBID__; 

작업의 완료되면 우리는 결과 레코드를 삽입하고 전체와 같은 작업을 표시합니다. 작업이 언제든지 스크립트의 일부 견고을 허용을 중지 / 재개할 수로 기억하십시오. 이 작업이 이렇게 현명한 조치가 되겠죠 작업 및 작업 제어 시스템에 다시 저장한 결과의 개수의 레코드 번호를 확인, 작업 제어 시스템을 업데이 트를 통해 중간 정직 시키실 것이 될 수도 있습니다.

또한,이 작업이 정말로해야 SQL-쿼리 프레임에서 선택하고 관리할 수 방법을 보여줍니다면서 추출 하므로 작업 제어를 당신은 웹 서비스, 파일 기반의 시스템 사용으로 전환하기로 결정하는 경우 XML 또는 기타를 시스템의 숫자는 그것이 위의 코드에는 영향을 미치지 않습니다.

작업 구성

고려해야 할 다음 화면은 작업의 크기와 구성입니다. 직업 구성으로 연주함으로써 우리는 최고 속도 사이의 균형, 프로세스 복제 및 신뢰성을 공격할 수있다. 부부 소문이 시나리오를 가지고 :

  1. 잡스는 일일 각 실행 걸릴 : 이것은 근로자 (시간 2/3rds 위해 전력의 10 %를 기억) 각 작업을 처리하고 15 일 이내에해야한다는 것을 의미합니다. 이것은 분명히 현명한 구성이 아니라, 직장 크기가 너무 큽니다! 초기 노동자가 무단 (이것은 결과 플러스 재처리 시간을 반환하지 않은 픽업 시간) 가자 그것은 일을 진행하는데 이중 최소 시간이 걸릴 것입니다. 이상에서 당신은 첫 번째가 누락 가야 작업이 프로세스에 이틀은 더 걸릴 사건과 최악의 똑딱 작업을 계속 그런식으로, 쉽게 각각의 긴 유휴 기간 말까지 해제 적어도 하나의 전체 일을하고 있겠지.
  2. 잡스는 실행하는 데 1 분 걸릴 : 이것은 노동자가 각 작업을 실행하는 데 15 분 정도 걸릴 것을 의미합니다. 이것은 처음에는 이상하게 보일지 모르지만하는 동안, 당신이 점심 시간 동안 추가 작업 처리를 얻고, 커피 브레이크, 회의 등이 시나리오는 시스템의 다른 영역에 대한 부담을 내건 자체적으로 문제를 소개하고 있습니다. 예를 들어, 첫번째 설치 / 처리 시간의 비율은 따라서 시스템 효율을 잃고, 오른쪽 아래로 갈 수 있습니다. 네트워크 하루 작업에 대한 그들의 일 서울시가 다양한 노동자 좌절 직원에게 지속적으로 스트리밍 작업 정보가 될 것입니다. 당신은 또한 그것이 많이하고 정기적으로 작품의 작은 조각을 많이 손을 뗀다한다대로 작업 처리 서버에 많은 부담을 줄거야. 직장 서버가 다운되면 마지막으로,이 상황에서 당신의 작업 서버가 어려움을 겪고 있다고한지 모르고 처리를 계속있을 더 큰 일자리 반면 uncompleted 작품의 거대한 다시 로그를 만들거야.

현실에서는, 당신 그리드 설정을위한 아무 이상적인 구성은 없을 것입니다 많은 아주에서 사용 가능한 자원, 작업의 종류, 작업 처리 시간 요구 사항, 네트워크 기능, 그리고에 따라 달라집니다. 그러나 몇 가지 기준은 다음과 같습니다

  • 크기 작업이 때문에 각각의 근로자가 15 시간의 기간 (최장 가능성이 유휴 기간)에 적어도 3-4 작업을 통해 얻을 수있는
  • 그 설치 시간이 처리 시간 (마음 위 지점에서 베어링)에 비해 상당히 무의미한된다 있도록 직업의 크기로 재생합니다.
  • 작업이 당신이 그것이 완료 예상 시간을 더블 금액 (어쩌면 더 적은)에 완료되지 않으면 그것은 사라지고 무단 및 다른 작업자와 함께 작업을 시작해야 있다고 가정합니다. 이것은 그것이 (후속 작업이 실패한다면 아마도 이상) 작성하는 작업의 세 번 정상 길이까지 기다려야 할 수도 있습니다 의미한다. 이 시간을 단축하고 싶지만, 너무 많은 당신은 정기적으로 처리 작업을 중복 시작할 수 있으므로 그것을 감소하지 않도록주의 수도 있습니다.
  • 잡스는 외부의 요구 사항을 최대한 독립적이어야합니다. 작업 서버, 예를 들어서만 모든 작업의​​ 시작과 끝부분에 연락해야합니다.
  • 네트워크를 포화하지 마세요,이 두 가지 부정적인 영향을 가지게 될 것이며, 당신의 낮 직원 연결하면 그리드를 확장할로만 악화될 것입 문제를 타이밍과 함께 체험할 수 있습니다 네트워크가 좌절하고 문제를 사용하여 찾을 수 있습니다.
  • 확인 작업은 근로자를 실행할 수 있습니다. 작업이 너무 메모리가있다면 집중 리나 디스크 공간 집약적인 작업이 중단 시작하고 알 수있는 유일한 것은 별다른 이유는 함께 처리 작업의 개수의 하락이다.

직업의 제출 결과

작업의 결과를 제출하면 그 결과가 현재 노동자가 약간의 시간 동안 수면왔다 특히, 다른 작업자가 제출되지 않았는지도 확인하는 것이 중요합니다.

결과는 결과의 숫자가 직장 내에서 레코드의 번호와 일치되도록 제출하는 경우.

이전에 언급하고 강조 끝나진 않을 수 있듯이, 취업 검색 및 결과 제출에 결함 허용 기능을 빌드합니다. 노동자는 시대의 가장 불편한에서 일시 중단 모드로 진입 (것이며 가능성이 가장 높은) 수 있으며, 이것을 위해 음식을 제공 했었죠해야합니다. 또한 다시 한번 결과 제출 멀리 추출하면 작업 제어 시스템을 다루기 훨씬 더 쉽게 향후 변화를 수용하는 데 도움이됩니다.

개요

이 section 우리는 어떤 작업 제어 서버가 할 필요가 방법과 매우 기본적인 시스템을 설정하는 것이 바라 보았다있다. 우리는 제어 시스템에서 작업하는 방법과 최상의 가장 저희 사무실 그리드 시스템을 위해 작업을 구성하는 방법을 검색하는 방법을 논의했다. 완료하려면 작업 제어 서버로 결과를 다시 제출에 단락이나 두 만납니다.

  • 작업 제어 서버는 작업을 관리하고 모든 작업 단위가 완료되는 보장
  • 선택 / 결과 제출 직장을 추출함으로써 우리는 많은 문제없이 제어 서버의 기술을 변경할 수 있습니다
  • 그들이 당신의 네트워크 인프라에 너무 많은 압력을 가하고없이 신속하고 효율적으로 실행되는 것을 보장하기 위해 귀하의 작업을 구성하고 정기적으로 처리 작업을 중복하지 않고.
  • 당신의 루틴에 결함 허용 및 오류 checkingÂ를 구축할 수 있는지 확인, 근로자가 일시 중지 및 재개와 시간의 가장 불편한하실 수 있습니다. 결과가 이미 다른 작업자에 의해 제출되어 있는지 확인하도록하십시오.

다음 번엔

에서는 제 3 부 우리는 가상 가공 기계를 만들고 유휴 시간 근로자가되기위한 윈도우 머신을 설정합니다.

가상 환경을 사용하여 Office 그리드 컴퓨팅 - 5 부

이용 금요일 2009년 12월 4일 오후 11시 3분

소개

우리는 여러 배치 작업이 데이터를 매일 기록의 수백만을 처리하고 난 몇 시간 동안 아무것도하지 않고 매일 주위에 앉아있는 모든 컴퓨터에 대해 최근에 생각해 봤는데 실행 어디 회사에서 일하셨어요. 우리 시스템의 처리 능력을 강화하기 위해 그 기계를 사용할 수있다면 좋지 않겠어요? 기사 일련의 필자는 사무실 고용의 잠재적인 혜택을 보는 거예요 그리드 virtualised 환경을 사용합니다.

에서는 4 부 우리는 얻은 결과는 항상 최신의 비즈니스 정보와 논리가있는 최신입니다 있도록 우리가 코드와 데이터 소스의 최신 버전을 실행하고 있는지 확인하기 위해 도구를 사용하여 바라 보았다.

사전 배포

당신이 할 한가지 혼자가있다면 여러분의 그리드 시스템을 배포하기 전에는 벤치 마크 현재 시스템이다! 여러분이 숫자가 보장 백업이 백업해야하지 않는 시스템이 할 일이 얼마나 많은 추가 작업에 대한 동료에게 무슨 일이 아무것도 없습니다. 그래서,

  • 현재 얼마나 많은 레코드를 처리할 수 있습니까? 주 당? 시간 당?
  • 얼마나 일반적으로 직업을 바꿀 걸립니까?
  • 얼마나 더 많은 용량을 가지고합니까?

추가 질문도있다 :

  • 귀하의 처리 서버 (또는 처리 서버 중 하나)은 어떻게 당신의 기능에 영향을줍니다 시키겠다면, 당신은 불구가 될 것인가?
  • 당신은 / 그리드 시스템에서 얻을수 있다고 기대 어떤 이점을 기대합니까?
  • 사무실 컴퓨터가 작업을 실행할 수 있습니까?
  • 귀하 (또는 작업이 변환될 수)은 실행이 스타일 wrok해야하는 건가요?

마지막으로 중요한 포인트는 이런 주요 변화에 시간이 걸릴 것입니다. 다시 새로운 방법론, 벤치 마크를 사용하여 작동하도록하여 처리 코드를 업데이 트합니다. 아마도, 가상 머신을 실행하도록 처리 서버를 설정 모든 처리 서버 후에 그냥 (상대적으로 단지 아주 강력한 하나) 다른 일꾼이 될 것입니다. 새로운 프로세스가 정착하도록 허용합니다.

전개

나의 제안은 사무실 어느 주말에 잠깐 들렀다 모든 설치와 설정을 수행하는 것입니다. 단 두달의 휴가 전에이 작업을 수행하고 결과에 ... 아마 안 다룰 젊은 있으므로 다른 가난한 떠나 ...

이런 시스템에 대한 배포가 느린 있어야합니다. 그것이이 시스템을 설정하는 비교적 간단한 임에도 불구하고 전체 오피스 인프라 (물론 디지털 하나)에 적용됩니다. 첫째로, 한 번에 기계의 부부 작업자 호스트가 매일 단위로 수행하는 방법을 모니터하여 네트워크 트래픽을 나와라. 당신의 결과에 대한 응답으로 귀하의 직업 구성을 변경해야 할 수도 있습니다.

시스템이 몇 가지 기계 (수있게 모든 사무 기기의 10 %, 즉 5 말) 모니터링 네트워크 트래픽 및 호스트 머신 다시 performance. 다음 벤치 마크를 유지 함께 해결되면, 이제 첫 번째 벤치 마크보다 33% 많은 작업을 처리한다. 이렇게 입어서입니다 체크, 또는 당신은이 야구장에 최소한 있다고. 그렇지 않을 경우에 이동하기 전에 어떻게 돌아가는지 조사. 당신이 행복하게 모든 사무 기기가 개별 컴퓨터의 성능을 살해하거나 정지하여 네트워크를 분쇄하지 않고 실행 때까지이주기를 반복합니다.

항상 모든 배포가 만들어진 후에도 벤치마킹 보관하십시오. 모든 노동자에보고하고 작업을 처리하고 확인, 새로운 코드 업데이 트가 시스템의 속도에 영향을 미치는 방법을 확인하십시오. 천천히 (아주 천천히) 직원 및 네트워크에서 최고를 얻으려면 작업 구성을 증가.

그만!

당신이 몇 시간에 실행에서 근로자를 중지하고 싶다면? 그들은 모두 거기가 재생을 실행하고, 굶주린 곤충과 같은 데이터를 처리하기 위해 최선을 노력하고 있습니다. 대답은 분명한 것처럼 보일 수 있지만 그 가치는 경우에 그 간과을 추가. 간단히 종료 (0)로 처리 스크립트를 편집하거나 죽는 () 또는 다른 진술이 처리 작업을 죽이고. 우리는 항상 어떤 실행하기 전에 최신 가공 스크립트로 업데이 트하려고하면 왜 중요한 이유!

데모 시스템

나는 기술과 방법론을 설명하는 매우 작은 격자를 만들어 짧은 기사의 세트를 작성하기 위해. 나는 기사, 튜토리얼 많이 읽고, 설정하고, 무슨 일이 있었는지 감시하는 다양한 도구를 사용했습니다. 의미없이 나는 나가서 트래픽과 않으며과는 별개 사무실 포화했습니다 저는 호스트 성능에 영향을 방식을 볼 정규 직원 PC에 접근할 수 있었다.

내 데모 시스템은 천성이 아주 겸손했습니다. 나는 작업 제어 서버로 설정 내 일반 데스크탑을 사용. 이번에 제가 설치했던 mySQL 데이터 서버가 복제에서 마스터로 설정 설치되어 PHP를 통해 연결, 그리고 SVN 아파치 (작업자 VM을 통해 액세스).

그때 나는 6 년 된 윈도우 XP 노트북에서 VirtualBox에 centOS 작업자 기계를 만들었습니다. 나는 그 기계에 VM을 복사 후 지정으로 예약된 작업을 설정하고 가자.

가상 머신은 PHP, 서브 버전, 그리고 MySQL과 연동하여 설정되었다. 내 작업 제어 서버 저장소에서 '노동자'라는 이름의 지점을 확인하고 그것이 'svn 업데이트'를 사용하여 업데이트 될 수 있는지했다. 하기 다음 나는 노예 설정 MySQL을 사용하고 데이터를 작업자 VM 아래로 작업 제어 서버에 MySQL에서 복제되었음을 확인 했어요. 이 후 나는 BASH 스크립트와 cron 작업을 설정.

내 처리 스크립트는 기본적으로이 라인 (아주 간단한 것들)을 따라 간 :

  • 이름 필드에 읽기
  • VM 개최 데이터 원본의 테이블에 유사한 이름의 수를 계산
  • 공백으로 위의하지만 분할 이름 (예 : forename, 중, 성 (姓))로 이름의 수를 계산
  • 이 프로세스에게 1,000 번 반복

각 작업이 실행하는 데 약 20 분 걸렸습니다. 어느 시점부터 저는 윈도우 노트북에 작업자 VM의 여러 복사본을 열어 작업이 작업자 IP 주소의 각으로 꺼져 체크 보았다. 이 시점에서 또 복제가 자동으로 다시 시작이 확인되었습니다.

작업 제어 서버에서 작업을 처리하는 시작하는 노동자 결과 연장할 수있는 노트북을 떠난다. 노트북 사용을 재개하면 30-60 초 정도의 지연이있을 때, 이것은 시간과 직원의 공정한 금액이 기계를 다시 방문했을 때 자신의 머신이 짧은 동안 일시 정지지도 모른다고 생각해야 할 것입니다. 최신 기계는이 정도의 일시 정지를하지 않을 수 있습니다. 유휴 기간 동안이 기계에 의해 수행 처리 금액의 이익을 더되는가 아침 자신의 컴퓨터에 도착에 짧은 기간 (1 분 말씀) 기다릴 필요 스탭보다 중요한 것 (제가 자주 더 이상 기다릴 해당 Windows Defender는이 ) 자리를 업데이 트들은 (아침에 커피라도 한 잔하는 유용한 시간을!)이 인식되었다 제공했습니다.

전반적으로 나는 이러한 시스템을 만드는 데 사용할 수있는 기술을 보여준 것으로 확신합니다. 나는 그런 시스템이 (아주) 작은 규모 및 일부 이상이 사무실의 컴퓨터의 자원을 활용하여 최대 크기를 조정 할 수있는 실험과 작업을 수행하는 것으로 나타났습니다. 내가이 일을의 지점에 도착하지 않을 경우 나도 알아 / 남들 눈에 띄기 상태를 볼 수 있도록 아주 재미있어합니다.

결론 / 평가

다음 명백한 단계는 실제로 현실 세계 예제를 얻고 사무실 환경에서 이와 같은 시스템을 배포하고 무슨 일이 일어 나는지 보는 시작하는 것이다. 기술과 효과가 좀 어려울 수 있습니다 증명할 오솔길 이글 기업없이 결정하고 사업을 요구. 그리드 / 분산 컴퓨팅은 매우 인기가하면 일부 서클이며 일부 대형 응용 프로그램을 (BIONC, SETI @ 홈, Folding @ home에 등)이 있습니다. 나는 그러나, 사무실 환경에서 굴러 수 내 검색에 이런 작은 규모 및 간단한 시스템을 찾지 못했습니다.

나는 거의 모든 사무실에서 사용 가능한 대부분의 오픈 소스 소프트웨어와 도구를 사용하여 기본적으로 무료로 시스템을 만들었습니다. 기술은 기본적으로 시연과 예상을 수행하고 작동하도록 표시했다. 다행스럽게도 필자는별로 없어 작품과 매우 간단한 설치로 여러분 모두를 동시에 강력하고 저렴하며 확장 사무실 그리드 컴퓨팅 시스템을 배포할 수있는 공연이 있습니다.

일단 시스템이 다 거기에 실행하는 것은 거의 정의하고 만들 수있는 개선 금액에 끝이 없다. 예를 들어 통계를 들어 / 벤치마킹 쉽게 매일 같은 시스템의 가치를 보여주는 추가할 수 있습니다. 새로운 기계를 쉽고 빠르게로 추가하고 기존 하드웨어 업그레이 드와 함께 도착했을 때 당신의 처리 능력을 강화 할 수 있습니다.

난 당신이 기사의이 시리즈를 읽었어요 있으며 당신에게 사무실 그리드 시스템에서 실행되는 생각을위한 음식을 제공하겠습니다. 여기에 제시된 솔루션은 반드시 모든 상황에서 작동하지 않습니다하지만 자신만의 솔루션을 사용하여 데이터 처리를 끝낼 수 있도록 적응해야합니다.

나에게 의견, 수정 또는 개선을 보내주시기와 일치하도록 업데이 트이 문서를 유지하기 위해 최선을 다하겠습니다 주시기 바랍니다.













하여 파노라마 테마 Themocracy

현재 온라인 다섯 방문자
4 인, 1 봇, 0 회원
최대 방문자 오늘 : 3시 40분시 11 세계 협정시 오전
이번 달 : 2012년 4월 4일 세계 협정시 오후 10시 27분시 26
올해 : 27-02-2012 9시 56분에서 69은 세계 협정시 오전
모든 시간 : 28-03-2011 세계 협정시 오후 10시 40분시 130