카테고리 : 웹 프로그래밍

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

에 의해 2010 12시 13분 오전 수요일 1월 6일

/에 대한 직접적인 요청하기 위해서는 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);
     }
 }

사이트맵가 신속하고 간편하게 사용하여 생성할 수 있습니다 Zend_Navigation을 , 좋은 빠른 튜토리얼 (그리고 젠드 프레임 워크 튜토리얼 일반적으로 매우 유용)입니다 젠드은 기초가 - 동적 Sitemap 및 빵부스러기를 메뉴를 만들기 .

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

에 의해 , 금요일 2010년 1월 1일 오후 10시 40분

제가 적은 구성이 필요합니다이 게시물에 대한 follow-up을 만들었습니다, 참조하시기 바랍니다 젠드 프레임 워크 - 모듈 기반 레이아웃 .

사용할 때 젠드 프레임 워크를 사용자가 동일한 응용 프로그램에서 다양한 (하위) 사이트를 운영중인 경우는 반드시 같은 원하지 않는 모듈은 명백한와 레이아웃 스크립트 의 각 부분을. 필자의 경우는 다음 사이트 구조로 결정 :

  / 신청
     / 컨트롤러
         ...
     / 모델
     / 모듈
         / 기본
             / 컨트롤러
             / 레이아웃
                 / 스크립트
             / 전망
                 / 스크립트
         / 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
     / **
      * 당 모듈 단위로 레이아웃 경로를 설정합니다
      *
      * @ 작성자 로이드 왓킨 <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 예제로 패턴의 일부를 작성하기로 결정했습니다. I가 코드를 결정 하셨다니 첫 번째는 옵저버 패턴 . 옵저버 패턴의 공식적인 정의는 다음과 같습니다

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

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

읽기 '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
 

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

내 시범 설치, 난 정확히 위에서 않았다. Subversion을 내 작업 처리 서버에 설치하고 간단하게 'SVN 업데이 트를'사용 '노동자'지점에서 최신 코드를 뽑았습니다. 나는 또한 결과 반환의 일부로 데이터베이스에 반환되었다 내 처리 스크립트 버전 번호 태그를 추가했습니다. 이런식으로 내 코드가 나는 확실히 최근 처리 스크립트를 실행하는 작업자 지점 즉,로 내 트렁크를 복사 때마다 업데이 트되는 것을 볼 수 있습니다.

최신 데이터를 사용하여

귀하의 작업 처리는 다음 데이터 소스를 사용하게하는 경우 어느 시점이 너무 업데이 트가 될 수 있습니다. 당신은 즉시 당신의 직원이 정돈에 이르기까지 데려 게재를 시작으로 트래픽이 네트워크를 홍수거야 매우​​ 드문 기준으로 데이터 소스를 호출하지 않는 한. 내 솔루션을 위해 나는 나의 VMS와 함께 주변의 내 데이터 소스를 이동하고자하는 결심했다.

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

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

복제 귀하의 데이터 소스로 작업 제어 서버 업데이 트에 노예로 근로자의 각각을 설정하면 (이 거대한 데이터 업데이 트를 수행하고 모든 직원이 빨리 회복하지 않는 한 그것은 네트워크의 활동에 큰 증가없이 노동자 멋지게 내려 세류합니다 한 번에). 데이터베이스 업데이트,, 이것은 각 작업 전에 긴 정지를하지 않겠다는에는 rsync 이상의 장점이 MySQL의 처리가 계속 동안 근로자에 데몬이 계속 자사의 데이터를 업데이 트됩니다.

이것은 내가 데모 서버를 설정하는 방법입니다. 복제를 설정하려면 저는 MySQL 사이트에있는 가이드 (다음 복제를 설정을 ) 20 분 이내에 그 작업 제어 서버 세트를 복제 내 inital 노동자를했다. VM이 복사된 때 각 추가 노동자에 대한 복제 설정과 프로세스가 각 시간을 일했습니다.

개요

문서의이 섹션에서는 우리가 간단하고 고통이 작업을 수행하고 같은 time.Â에서 네트워크 트래픽을 줄이기 위해 rsync using 또는 subverion (SVN)에 의해 날짜에 처리 코드를 유지하는 것이 얼마나 봤어 우리는 또한 어떻게 논의 그것이 근로자의 각 다운 세류 수 있도록하여 데이터 소스 정보가 항상 최신 상태로 유지합니다. 따라서 우리 지역 우리 사무실 그리드 시스템의 비즈니스 로직 및 정보를 유지하도록하는. 이 분명 이러한 작업을 수행하기 위해 수많은 대안 수 있지만 여기에 해결책으로 올 것이 얼마나 쉬운지 보여 두 가지 간단한 예제했다됩니다.

다음번에

핌이라는이 시리즈의 마지막 부분에서 제 5 부 , 우리는이 시스템을 배포 다루겠습니다. 내가 만들고 관리 어떻게 알게되어 무엇 요약 알려드립니다.

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

에 의해 (금) 2009년 12월 4일 오후 11시 37분

소개

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

2 부 우리는 서버가 실행 작업을 검토한 결과, 어떻게 작업은 각 작업이 실패하지 않고 처리 있도록 반면 가공 가장 큰 금액을 달성하기 위해 구성해야합니다.

귀하의 노동자를 설정 - 서버 또는 미약

그 과정에서 다음 단계는 가상 노동자를 설정하는 것입니다. 이를 위해 저는 VirtualBox를 사용하여 centOS의 설치를 사용하는거야. 제가 설치하는거야 마이 SQLPHP를 또한 절름 (리튬의 nux, M ySQL, P HP) Server (I가 그 이름을 만들 수도 있습니다)로 알려진 서버에.

  • 귀하의 윈도우 머신에 VirtualBox를 설치 (링크를 클릭하십시오)
  • 만들어진 가상 머신 내에서 centOS (현재 버전 5.3) 다운로드 및 설치

아무 소용 내가이 것도 없습니다 1,000의 큰 자습서 거기서는 (좋아, 여기에 하나 : 아마있다 virtualbox 아래의 생성 및 Managing centOS 가상 머신 ). 제가 바라는 참고로 중요한 포인트는 내 가상 기계가 GridMachine라는 것입니다.

까지 가상화 클라이언트와 운영 체제의 내 선택 가고 각 선택에 대해 큰 매력 이유도없이이 없습니다. VirtualBox 내 집에서 컴퓨터에 사용하고 세 가지 주요 운영 체제에서 지원하는 무언가이다. 나는 그것의 좋은 안정적인 OS로 centOS를 선택하고 내 자신의 웹 서버에 사용합니다. 나는 (내가 신청 해요 있지만 여기에 정신 '당신을위한 빠르고 쉬운을 사용') 작업에 적합한 도구의 훌륭한 신자이다, 그래서 운영 체제 X는 빨리 코드를 실행하고있다면보다 효율적으로 그 대신에 사용)

중요한 것은 당신의 VM은 각각의 새로운 가상 머신에 대해 달리, DHCP를 사용하여 우리가 want.By 우리는 노동자 기계 개별적으로 네트워크 설정을 구성할 필요가 없습니다 DHCP를 사용하지 않는 뭔가있는 별도 구성할 필요가 있는지 확인, DHCP 손으로 것입니다 당신을 위해 아웃 IP를. 따라서 당신은 (이것은 확장성을 향상시키고 노동자 관리를 줄일 수) 각 설정에 대한 걱정없이 가상 머신 사무실에 대해 복사할 수 있습니다.

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

노동자의 채용을 실행하는 방법

이것은 흥미로운 지역이며, 노동자에 대한 작업을 처리하는 몇 가지 유효한 방법이 있습니다. 여기 난 그냥 두 분명한 논의주지

  • 끊임없이 스크립트를 실행 : 스크립트는, 그것 쉘 스크립트가 또는 PHP 스크립트가 노동자에 한 번 실행하고 무한 루프의 일부로 실행됩니다. 나는 스크립트 중 하나가 충돌로이 방법을 할인했습니다 잠재적으로 직원들은 개입하지 않고 일종의 실행 중단됩니다.
  • 크론 기반의 스크립트 실행 : 모든 X의 분 크론 데몬이이 일을 가야 스크립트로 전화를 나가 라고요. 몇 가지 체크없이는 노동자 스크립트 실행의 여러 많은 복사본을 초래할 수 있습니다.

나의 결정은 내 쉘 스크립트는 다음 작업을 수행합니다 매 10 minutes. 쉘 스크립트를 Cron의 재미와 함께 이동하는 것이었다 :

  1. 프로세스 목록을 구해서 'PHP'에 대한이 grep. 발견되지 않으면 다음 계속하십시오.
  2. 직업 코드를 호출, 내 경우에는이 기준 뭔가 PHP 것입니다
  3. 노동자 스크립트는 실행을 완료
  4. 다음 적절한 전화를 다시 갈 준비

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

  #! / 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을 킥오프 창문을 설정해야합니다. > 모든 프로그램 - -> 악세사리 -> 시스템 도구 -이 (Windows XP에서) 할하려면 시작을 가야하는 데 필요한 다음과 같이> 예약된 작업을 :

예약된 작업

다음 사용자 지정 프로그램을 추가로 이동하여 다음의 '예약 작업 추가'를 클릭합니다. 귀하의 VBoxManage 스크립트로 이동하고 확인을 누릅니다. 옵션 중 하나에 대한 작업을 예약할 (우리는 잠시이으로 변경) 및 계속합니다. 다음 화면을 빼먹는 후 Windows에서이 작업을 실행하려는 사람을 요청할 것입니다, 나는 '관리자'또는 새로운 사용자를 만드는 권한 중 하나를 제안 거라고. 우리가 언제든지 시스템에 표준 직원 계정을 방해하고 싶지 않아 기억하십시오. 다음을 클릭하고이 작업에 대한 고급 옵션보기를 확인하십시오.

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

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

시간표

그것은 윈도우 호스트 설치를위한 다음에요!

개요

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

다음번에

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

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

에 의해 (금) 2009년 12월 4일 오후 11시 23분

소개

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

으로 의 PHP 개발자 나는, 즉 하루에 리눅스 사용하는 도구를 사용하는거야 마이 SQL , PHP, VirtualBox와 Subversion을 (SVN)을. 그러나이 가이드는 단지뿐만 아니라 다른 언어와 기술에 적응 바랍니다.

제가 제공하는 솔루션은 매우 느슨하게 제가 단순 물건으로 변경하거나, 더 재미있는 사용 시나리오를 생산하는 등 우리가 전체 기사를 통해이 사실이되지 않을 수도 있습니다 그러나 달성해야 할 거라고 처리 유형에 따라 것입니다.

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

왜 오피스 컴퓨팅 그리드를 배포?

첫째로 당신이 생각 수, 왜 그냥 같은 클라우드 컴퓨팅 리소스를 사용하지 아마존의 EC2 플랫폼 ? 그럼 그 이유는 예를 들어, 여러 수 :

  • 당신은 클라우드 컴퓨팅 환경에 특정 데이터를 위탁하지 않습니다
  • 당신은 잠재적인 법적인 이유로, 예를 들어 NHS 기록에 대한 법적인 이유로 (예 : 데이터가이 나라를 떠나)을위한 클라우드 컴퓨팅 환경에 특정 데이터를 넣어 수 없습니다.
  • 귀하의 처리 장치도 하드웨어를 완벽하게 제어할 수 닫고 가지고 유지하려면
  • 당신은 구름 인스턴스를 실행하는 프로젝트 자금을 필요가 없습니다
  • 사무실에서 인터넷에 연결되어 있지 않으며 따라서 그것은 불가능 구름 리소스를 사용하는
  • 당신은 비가, 구름은 비를 제안, 따라서 잘 못오게 싫어

그 목록이 계속 갈 수있을거야,하지만 충분히 지금이라고 생각합니다.

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

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

그래서, 유휴 시간 1 기계 * 10 % * 전원 3분의 2 시간 = 0.067 즉, 한 바탕 처리는 하루 당 6 전체 작업을 처리 수 있습니다.

지금까지 이렇게 규모 경우 귀하의 기본 처리 서버와 마찬가지로 하루에 많은 작업을 처리 15 유휴 데스크탑 걸립니다.

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

공지, 새로운 하드웨어에서없이 투자 회사는 4 번 그 배치 처리 용량을 증가! 잠재적으로 귀하의 전력 사용을 증가시킬거야하지만 난 기계했던 대부분의 사무실 환경에서 일반적으로 하룻밤 어쨌거나에 남아 있으며, 그래서 당신은 녹색 구상으로 볼 수 있습니다.

사무실 기계가 충분하여 귀하의 사무실 컴퓨터의 전원을 개선하는 등 사무실 그리드가 자동으로 더 강력한된다고하면 다른 장점은 또한 새로운에 투자 (또는 업데이트) 처리 서버가 지연될 수 있습니다 의미합니다.

기술

뭐가 필요 한가? (이상 정확히 내가 무엇을 사용했습니까) :

  • 이들 사무실 기계 (제 경우에 여분의 오래된 Windows XP의 노트북)
  • VirtualBox (또는 다른 가상화 클라이언트 소프트웨어)
  • OS 아래 상처를 실행하는 PHP, MySQL을 runningÂ와 가상 머신, 내가이 내 다리를 저는 서버를 부르 겠네 :)
  • 실행 채용
  • 작업 서버 (어딘가에 다른 가상 머신 수 있습니다)

일반 채용 정보

다음과 같이 시스템이 실행되도록 설계되는 작업의 유형은 다음과 같습니다 :

  • 시스템은 우리가 결과를 일치와 반환을 필요로하는시 데이터의 목록을받습니다
  • 검색은 검사 / 몇 가지 (상당히 정적) 데이터 소스를 검색을 포함
  • 데이터 소스의 결과가 결과에 대한 응답으로, 추가 데이터 소스의 검사를 병합, 추가 검증을 요구할 수 있습니다
  • 데이터는 완전히 확인 및 처리, 일치하는 레코드로 반환됩니다
  • 직장 내에서 각 레코드는 나머지 독립적

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

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

우리는 무엇을 얻을 수 있습니까?

이 기사의 마지막으로 나는 사무실 그리드를 배포하는 것은있을 방영 권 비용이나 시간이 소요되는 필요도없는 것을 보여줄 수 있도록 최선을 다하겠습니다. 나는 토론거야 :

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

나는 (OK 난 후, 내장이 쓴) Windows XP 및 내 'GridMachine'가상 머신을 사용하여 로컬 컴퓨터에있는 개념을 테스트하기 위해 예제 응용 프로그램을 구축됩니다. 내 작업 제어 서버가 실행 내 주요 기계 것입니다 페도 라 11 .

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

다음번에

에서 제 2 부 나는 그 일을 제어 시스템을보고 시작되며, 작업이 각 작업이 실패하지 않고 처리 있도록 반면 가공 최대 금액을 달성하기 위해 구성해야하는 방법에 대해 조사.

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

에 의해 (금) 2009년 12월 4일 오후 11시 23분

소개

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

제 1 부 나는뿐만 아니라 당신이 사무실 그리드를 만들려 왜 가능성이 이유의 일부를 논의로 사용 될 시스템 및 기술의 개요를했다.

작업 제어

이 작업을 실행하려고하는 경우 다음 그들을 관리하는 몇 가지 방법을 더 늘려야 할 것 같습니다. 귀하의 작업 제어 시스템 (직업 서버) 정말 잘 심지어 사무실 그리드를 실행하기 전에 밖으로 생각해야합니다. 그래서 첫째, 작업 제어 시스템에 대한 작업은 무엇입니까 :

  • 노동자의 요청에 따라 핸드 아웃 작업
  • 작업의 어떤 유형을 실행하는 근로자에​​게
  • 트랙 작업
  • 작업이 한 번만 실행됩니다 있는지 확인
  • 노동자에게 작업 데이터를 제공하거나, 이해를 어디에 적어도 그들에게 말해

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

작업 서버

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

작업 서버 자체가 정말 (기본 시스템에 어쨌든) 복잡한 작업을하지 않는다, 그것은 작업 손을, 작업 목록을 저장할 결과를 수신하고, 이후 나중에 검색을 위해 그들을 저장하기 위해 필요합니다. 어떻게 이러한 부품 (예 : '작업 밖으로 손') 정의하는 것은 매우 기본적인 수 있습니다. 나중에 우리는 관리 인터페이스를 추가, 수정, 삭제, 작업을 일시 중지하지만, 본 운동 이상입니다를 포함하는 시스템을 확장할 수 있습니다.

무엇이든지 다음 작업 서버가 귀하의 기본 처리 서버 내에서 실행되고있는 가상 머신 수 없다 그것은 제공된 여기에서 너무 많은 자원을 유출하지 않는 이유가 없습니다. 당신이 처리의 전체 주말을 잃게 될거야 금요일 저녁에 다운된다면 작업 서버는하지만 잠재적으로 당신에게 처리 시간의 가치가 몇 주 (혼자 기본 처리 서버에 비교할 때) 비용, 높은 가용성을 필요합니까 . 당신은 높은 가용성을위한 분산 환경에서 작업 서버를 퍼팅하는 것이 좋습니다.

기본 설정

우리 일이 서버에 대한 기본 설정 내 미약 서버 중 하나를 (리튬의 nux, M ySql, P HP입니다)를 호출하는지 구성됩니다. 테아 근로자에​​서 실행되는 코드는 실제로 작업 제어 시스템 데이터베이스와 상호 작용하여 실행할 수있는 작업을 밖으로 작동합니다. 나중에 우리는 오히려 노동자는 노력 자체를 가지고보다 일을 밖으로 웹 서비스와 실제로 손을 만들 수 있지만, 지금 우리는 계속 사용 할게 키스 원리를 (바보, 간단하게!).

가 3 만들 수 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 주소 것입니다)를 재설정되지 않은 직업을 가지고 :
      UPDATE`작업`SET`상태`= 0 WHERE`상태`=`1`= started_by __ME__; 
  2. 우리의 직업 선택 기준을 사용하면, 직장을 선택하고 해당 근로자가 취급되는 제어 시스템을 말한다
      UPDATE`작업은`상태`= 1,`started_by`= __ME__,`started_at`= NOW () WHERE`상태`= 0 또는 SET
     (`상태`=`1`started_at> DATE_SUB (NOW (), 간격 X 시간))`ID`ASC 정렬; 

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

  3. 다음 기록 자체가 다음 작업 세부 정보를 잡아 :
      *를 SELECT`일자리`어디서`started_by`= __ME__ 제한할 1;
     `job_records`FROM *를 SELECT WHERE`ID`= __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 부에서는 우리는 얻은 결과는 최신 비즈니스 정보와 논리와 최신 항상 있도록 우리는 코드와 데이터 소스의 최신 버전을 실행하는지 확인하는 도구를 이용하여 보았다.

사전 배포

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

  • 현재 얼마나 많은 레코드를 처리할 수 있습니까? 주 당? 시간 당?
  • 일자리를 돌리 얼마나 일반적으로 걸립니까?
  • 얼마나 더 많은 용량을 필요합니까?

추가 질문도 있습니다 :

  • 귀하의 처리 서버 (또는 처리 서버 중 하나)이 방법이 당신의 기능에 영향을줍니다 시키겠다면, 당신은 불구가 될 것인가?
  • 어떤 장점 당신은 희망 / 그리드 시스템에서 들어갈 수 있겠소?
  • 사무실 기계 작업을 실행 할 수 있습니까?
  • 귀하 (또는 작업 변환할 수 있습니다)를 실행하는이 스타일에서 일하고 있습니까?

마지막 주요 지점은 다음과 같이 주요 변경에 시간이 걸릴 것입니다. 다시 새로운 방법론, 벤치 마크를 사용하여 작업에 처리 코드를 업데이 트합니다. 아마, 가상 머신을 실행하여 처리 서버를 설정 모든 처리 서버 이후 단지 (단지 상대적으로 매우 강력한 하나) 다른 노동자 것입니다. 새로운 프로세스가 정착하도록 허용합니다.

전개

나의 제안은 사무실 어느 주말에 팝업 모든 설치와 설정을 수행하는 것입니다. 그냥 보름의 휴가 전에이 작업을 수행하고 그 결과 ... 아닐 수도를 다루는 재주 때문에 다른 가난한를 떠나 ...

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

일단 시스템이 몇 가지 기계 네트워크 트래픽 및 호스트 머신 다시 performance. 다음 기준을 모니터링 유지 (모든 사무실 기계의 10 %, 즉 5 말할 수)에 살면서, 이제 첫 번째 벤치 마크보다 33 % 더 많은 작업을 처리한다. 이 그렇고 확인하거나 적어도이 야구장에 걸. 그렇지 않은 경우에 옮기기 전에 무슨 일이 일어 났는지 조사. 당신이 행복하게 모든 Office 기계는 개별 컴퓨터의 성능을 죽이지 않고 실행하거나 정돈하기 위해 네트워크를 분쇄 때까지이주기를 반복합니다.

항상 모든 배치가 만들어진 이후에도, 벤치마킹을 유지. 새 코드 업데이 트가 시스템의 속도를 영향을 미치는지 확인하십시오, 모든 근로자가보고 및 작업을 처리 중입니다 확인하십시오. 천천히 (아주 천천히) 직원 및 네트워크에서 최상을 위해 직업 구성을 증가.

그만 해요!

당신이 어떤 시간에 실행에서 노동자를 중지하려면 어떻게해야합니까? 그들은 모두 거기가 재생을 실행하고, 굶주린 벌레와 같은 데이터를 처리하기 위해 최선을 다하고 있습니다. 대답은 분명한 보일지도 모르지만, 그 가치가 만일의 경우에 대비해에게 자사의 전망을 추가할 수 있습니다. 간단히 출구 (0)으로 처리 스크립트를 편집하거나 다이 () 또는 다른 진술하여 처리 작업을 죽일 수 있습니다. 우리는 항상 어떤 실행하기 전에 최신 처리 스크립트를 업데이 트하려고하면 왜 중요한 이유!

데모 시스템

짧은 기사의 세트를 작성하기 위해 나는 기술과 방법을 설명하기 위해 매우 작은 격자를 만들었습니다. 나는 기사, 자습서 많이 읽고, 설치 및 일이 있었는지 모니터하는 다양한 도구를 사용합니다. 결코 제가 나가서 트래픽 전체 사무실을 포화 및하거나 제가 호스트 성능에 영향을 방식을 볼 수 있습니다 일반 직원의 PC에 접근할 수 있었있다.

내 데모 시스템은 참으로 매우 겸손했다. 나는 직장이 제어 서버로 설정 내 일반 데스크탑을 사용합니다. 여기에 제가 설치한 MySQL의 서버가 복제에 마스터로 설정 설치, PHP , 그리고 SVN은을 통해 연결된 아파치 (근로자 VM을 통해 액세스).

그때 6 살짜리 Windows 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 @ 홈, @ 홈 등 접는) 있습니다. 나는 그러나, 사무실 환경에서 밖으로 압연 수 내 검색에 이런 작은 규모와 간단한 시스템을 찾지 못했습니다.

나는 거의 모든 사무실에서 사용할 수있는 대부분의 오픈 소스 소프트웨어 및 도구를 사용하여 기본적으로 무료로 시스템을 만들었습니다. 기술은 기본적으로 시연과 예상을 수행하고 작업에 게재되었다. 다행스럽게도 필자는 얼마 안 작업과 매우 간단한 설치와 함께 강력한, 싸고, 그리고 동시에 확장하는 사무실 그리드 컴퓨팅 시스템을 배포할 수있는 쇼가있다.

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

당신이 기사의 시리즈를 읽었어요하고는 사무실 그리드 시스템을 실행에 생각에 대해 당신에게 음식을 주어 바랍니다. 여기에 제시 솔루션은 반드시 모든 상황에서 작동하지 않습니다하지만 당신은 자신의 솔루션을 사용하여 데이터 처리가 완료 얻을 수 있도록 적용할 수 있어야합니다.

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

젠드 프레임 워크 : 기본 - 검토

에 의해 , 토요일 2009년 11월 28일 오후 10시 42분

내 고용주는 최근 받아 우리 개발자 그룹에 대한 지불 젠드 프레임 워크 : 기본의 과정을, 내가 다른 사람을위한 코스에 내 생각과 의견을 요약합니다. 시간을 절약하고자하는 사람들을 위해, 여기 내 요약은 다음과 같습니다

볼 시간이 없었 개발자를위한 젠드 프레임 워크 의 핵심 지역을 소개하고 계속하기 위해 충분한 정보를 제공 프레임 워크의 좋은 전반적인 그림을 제공합니다 :이 코스 (기본 젠드 프레임 워크를.) 프레임 워크를보고 시간을 할애하고 하나 또는 두 개의 튜토리얼을 따라 사람들을 위해이 과정은 더 이상 제공하지 않습니다.

배경

나는 있었어 PHP 5-6 주변 년 동안 개발하고, 지난 6 개월 동안 구성 요소 기준으로 젠드 프레임 워크 작업을 시작했습니다. 제가 개발 및 / 또는 작은 젠드 프레임 워크의 커플에서 개발자가 있었 MVC 나는 솔직히 말하면 sites.Â, 난보기의 코딩 지점에서 다른 프레임 워크에 노출이 많은 없었지만, 몇 가지를 보냈어 시간은 프로젝트 웹사이트를 연구 them.Â에게 그것이 매우 흥미로운이며 어디가는에 큰 가능성이있을 것 프레임 워크와 젠드 프레임 워크를 둘러싼 지역 사회를 평가.

코스 소개

이 과정은 (중간에 10 분 휴식과) 9 이시간 웹엑스 세션을 통해 전달됩니다. 시간은 언제든지 토론과 젠드에서 제공하는 슬라이드 세트 겪고 소비됩니다. 당신은 강사 얘기를 마이크를 사용할 수 있지만, 나는 사람이 채팅 창에 이상의 아무것도를 사용하여 보지 못했어요 솔직히 말해서. 또한 VM웨어 우분투 머신은 그 예제 코드를 가지고 있으며 프로젝트는 젠드 스튜디오의 평가판을 설치 제공됩니다. 통합의 VoIP 솔루션을 통해, 또는 숫자에서 많은 세계적인 다이얼 중 하나를 사용하여 전화를 걸 수 중 참석자들에게 코스 리더 이야기합니다.

과정에서 물질이 샘플 응용 프로그램에 방명록 표제 전에 프레임 워크에 대한 간략한 개요 및 MVC 패턴으로 구성됩니다. 토론 부트 스트랩, Zend_Application, DB 테이블, 데이터베이스 액세스, 양식, 필터링, ACL은 기본적으로 당신이 당신에게 도구를 제공 실행되는 모든 시간을 최대 기본적인 사이트를 얻을 필요가있는 모든 주제를 다루는 등, 등, 확인 시연 가서 (이것은 당시의 많은 '웹사이트보기'를 금액했지만) 프레임 워크에 더 많은 고급하십시오.

시간은 몇 가지 예제를 코드하고있는 '방명록'간단 '위키'응용 프로그램을 개발하기 위해 주어집니다. 필자는 개인적으로 코드 또는 각 응용 프로그램을 제공하고 정말 좋은 학습 경험을 제공하지 않았 함께 본질적으로 복사했는지 개발하기 위해 우리를 요청하는 것을 느꼈습니다. 나는 유사한 응용 프로그램을 개발하기 위해 선호하지만 동일하지 않은 것입니다. 참조에 대한 안내를 갖는 혜택 예제 응용 프로그램. 또는 시위 운동자와 함께 처음부터 애플 리케이션을 구축하는 것은 가능한 모든 후 과정 후 내역을 찾아볼 수 있습니다, 따라서 프레임 워크의 이해를주는 이유와 방법에 대한 자세한 질문에 LED 것입니다.

마지막 강의는 강사의 도움 / 지침으로 위키 응용 프로그램에서 작업 구성되어. 과정의 피드백을 찍은 후, 그것은 사실에 분명히 과정 우리의 버전이 매우 새로운 되었음 젠드 매우 진지하게 의견 소요되는 과정을 통해 여러 번 강조했다. 회사의 다른 개발자 중 일부는 곧 따라서 이것이 일어 났는지 흥미로운 될 과정을 복용합니다.

물론 스타일은 참석자와 강사 간의 피드백과 협력 허용 비공식했다. 코스 리더 친절 했어, 가까이 (이메일 주소는 질문에 대해 공유했다), 그리고 슬라이드에서 자신의 프레 젠 테이션이 사그라 들자면 흔들리는 조금은 프레임 워크에 완전히 관할 듯했다. 그는 명확하게 오히려 과정을 가르치고 배운 것입니다 사람보다 정기적으로 프레임 워크를 사용하는 사람이되었다, 그 존중의 '현실'의 경험을 좋아했다.

전체 느낌

어떤 면에서 나는 과정을 시간의 낭비를 발견 다른 매우 편리한했습니다. 다행스럽게도 필자는 분명 전역 이유를하고, 어쩌면 생각 또는 의견을 유용한 몇 가지 음식을 (이 가능성은 거의 나를 알고!) 제공합니다.

자신을위한이 과정은 너무 낮은 수준을 목표로했다. 빠른 가이드를 통과하는 데, 액션의 롭 알렌의 젠드 프레임 워크를 읽고 조금은 정말 너무 아무것도 못 프레임 워크와 함께했습니다. 나는의 빠른의 마지막에서 픽업 및 추가 기술을 개발하는 과정을 좋아합니다.

했다 즉, 코스 제목은 명백히 "젠드 프레임 워크 : 기본"을 않는 그 관점의 과정은 그것이해야 할 설정 어떻게 실현하고 있습니다. 프레임 워크에보고 시간을 할애하지 않은 개발 팀의 다른 구성원들은 열정과 각 세션을 완료하고 실제로 봐서 반가웠어요 질문.

모든 이것은 프레임 워크의 기본적인 세부 사항을 확인하는 시간을 할애하고 100 % 아니었 분야에서 몇 가지 물어가는 좋았어요, 분실되지 않았습니다. ) : 제가 매일 앉아서, 나는의 (? 귀하의 회사가 그것에 동의 상상할 수) 달리 할 수​​ 없었던 것입니다 무언가를 프레임 워크와 미래의 프로젝트를 사용하여 코딩에 대해 생각하고있어 그 또한 시간이었다. 마지막으로 당신은 또한 과정을 (이메일이라도) 참석한 것을 말할 젠드에서 좋은 자격증을 취득.

젠드 프레임 워크 인증

이 과정 중에 마음에 나왔 대요 질문이 하나 있었고, 인증 절 준비시겠습니까? 빠르고 쉬운가 resounding 없음입니다. 코스 강사 인증 정말로 일 기준으로 하루에 프레임 워크를 사용하여 매우 편안하고는 사용 및 방법에 확신해야한다는 추가 조언을 거기에 매우 분명했습니다.

개요

제가 위에 쓴 모든 걸 감안할 때,이 두 쉽게 글머리 기호에 모든 요약주지

  • 젠드 프레임 워크 새 :이 과정은 정확히 기대하는지, 그것이 당신에게 프레임 워크에 대한 좋은 소개하고 구축할 수있는 기본에 좋은 접지를 제공 않습니다. 과정은 관심과 개발자 사이에서 프레임 워크에 대한 열의를 생성하는 것 같습니다.
  • 젠드 프레임 워크를 사용하여 : 그것은 물론 더 나은 다른 지출되었습니다 걸릴 수 난 시간과 노력을 느꼈다 아주 기본의 일부, 그리고 자금을 강화하기 위해 좋은 동안. 그것은 다음 단계로 개발자을 위해 새로운 높은 수준의 코스를 만들 see 젠드에 좋은 것입니다 -. 적어도 인증 이후의 기준으로 그 동안 나는 즉시 가입 것입니다.












파노라마 테마로 Themocracy

7 방문자 온라인 지금
4 인, 3 봇, 0 회원
최대 방문자 오늘 : 2시 46분에서 17 세계 협정시 오전
이번 달 : 24-08-2011 5시 40분에서 23 세계 협정시 오전
올해 : 28-03-2011 세계 협정시 오후 10시 40분시 130
모든 시간 : 28-03-2011 세계 협정시 오후 10시 40분시 130