2010-03-06 5 views
12

우리는 쓰기 요청의 약 50 %로 데이터를 여러 데이터 저장소로 푸시하고 해당 데이터 저장소에 상당한 수의 레코드를 삽입 및 업데이트하는 웹 응용 프로그램을 개발하고 있습니다 . 응답 시간을 개선하기 위해 백그라운드에서 이러한 요청을 비동기 적으로 처리하려고합니다.Resque 또는 Gearman - 백그라운드 작업에 적합한 도구 선택

웹 응용 프로그램은 Ruby on Rails로 작성됩니다.

내가 향한 두 가지 해결책은 Resque와 Gearman입니다.

Resque : More information here : http://github.com/blog/542-introducing-resque Resque는 Ruby에 매우 적합하며 특히 백그라운드 작업 처리에 적합합니다. "백그라운드 작업은 수행하기 위해 응답하는 모든 Ruby 클래스 나 모듈이 될 수 있습니다. 기존 클래스를 백그라운드 작업으로 쉽게 변환하거나 작업을 수행 할 수 있도록 새로운 클래스를 만들 수 있습니다."

Gearman : 비동기 처리를위한 백그라운드 작업에만 특별히 의미가있는 것은 아니지만 확실히 할 수있는 작업입니다. 외관상으로는 더 튼튼 하, 또는 이렇게 보인다. Gearman의 또 다른 장점은 클라이언트 코드가 Ruby에있을 수 있지만 작업자 코드는 PHP라고 할 수 있습니다. 현재 우리는 완전히 Ruby on Rails 앱입니다. 미래에 우리가 현재 일하는 것에 따라 PHP 나 다른 것을 사용하고 싶어하는지 알고 있습니다.

무엇을 권하고 싶습니까? 둘 중 하나에 대한 경험이 있습니까? 두 가지 중 하나를 선택하는 동안 실제 생활에서 생산해야 할 과제는 무엇을 염두에 두어야합니까? 그리고 나는 사과와 사과를 비교하는 것인가?

+2

폐쇄 상태에 동의하지 않습니다. Q는 올바른 형식으로되어 있으며 적절한 대답을 제공하기에 충분한 세부 정보가 있습니다. 토론은 환영하며 솔루션에 대한 하나 이상의 견해를 제공해야합니다. – michaelbn

답변

2

저는 비동기를위한 워크로드 분배를 제공 할 수있는 분산 포크 (distributed forking) 메커니즘을 찾고있을 때 Gearman에 약간의 경험이 있습니다. 클러스터 된 환경에서 처리합니다.

비동기 처리가 2 대의 시스템 (각 시스템의 2 명의 작업자 = 4 명의 작업자)으로 파견되는 "시뮬레이트 된"경우에서 작동한다고 말할 수 있습니다. 실제 상황 시나리오가 아닙니다 (무엇이든지 당신에게 알려줍니다). 실제 사례 시나리오는 "시뮬레이션"이 유용한 정보를 제공 할 때 구현됩니다.

선택할 메커니즘은 작업 부하 분포에서 하나의 요소이므로 병렬로 작업하는 분산 된 "작업자"가 데이터 저장소에 쓰기 시작하면 손상되거나 잘못된 데이터로 끝나지 않도록하십시오 .

"시뮬레이션"접근 방법을 사용하고 어떤 것을 사용할 지 결정하기 전에 테스트를 수행 할 것을 제안합니다.

안부,

+0

감사합니다. Andreas. 나는 우리가 dev/simulation 환경에서 작업에 적용하기 전에 잠시 동안 작업 할 것이라고 동의한다. – Nishith

관련 문제