카테고리 : 그리드 컴퓨팅

가상 환경을 사용하여 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 그리드 컴퓨팅 - 파트 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 부에서는 우리는 얻은 결과는 최신 비즈니스 정보와 논리와 최신 항상 있도록 우리는 코드와 데이터 소스의 최신 버전을 실행하는지 확인하는 도구를 이용하여 보았다.

사전 배포

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. So,

  • 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)으로 처리 스크립트를 편집하거나 다이 () 또는 다른 진술하여 처리 작업을 죽일 수 있습니다. 우리는 항상 어떤 실행하기 전에 최신 처리 스크립트를 업데이 트하려고하면 왜 중요한 이유!

데모 시스템

짧은 기사의 세트를 작성하기 위해 나는 기술과 방법을 설명하기 위해 매우 작은 격자를 만들었습니다. 나는 기사, 자습서 많이 읽고, 설치 및 일이 있었는지 모니터하는 다양한 도구를 사용합니다. 결코 제가 나가서 트래픽 전체 사무실을 포화 및하거나 제가 호스트 성능에 영향을 방식을 볼 수 있습니다 일반 직원의 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 @ 홈, @ 홈 등 접는) 있습니다. 나는 그러나, 사무실 환경에서 밖으로 압연 수 내 검색에 이런 작은 규모와 간단한 시스템을 찾지 못했습니다.

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

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

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

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













파노라마 테마로 Themocracy

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