2016-11-03 5 views
0

App Engine 인스턴스가 Firebase 데이터베이스와 함께 어떻게 확장되는지 궁금합니다.Firebase로 App Engine 인스턴스 확장하기

는 데이터베이스에서 다음 개체의 구조와 가정하자 : 우리는 모든 새로운 아이가 tasksForServer에 추가 된 인스턴스 듣고 있다고

tasksForServer 
- taskID 
    - ... 
    - ... 
- taskID 
    - ... 
    - ... 

도 있습니다 가정 그래서 인스턴스는 모든 작업을 처리 할 수 ​​있습니다 들어온다.

매 초마다 들어오는 작업량은 북쪽이 10.000이며 처리가 빠르다. 따라서 모든 작업에 많은 작업을 수행하지 않아도 인스턴스 하나가 조만간 들어오는 작업 양을 처리 할 수 ​​없습니다.

App Engine에 더 많은 인스턴스를 추가 할 수 있다고 읽었지만 인스턴스가 새로운 작업을 수신하는 방식 때문에이 시나리오에서는 작동하지 않습니다.

제 첫 질문 : 위의 내용이 맞습니까? 그리고 그렇다면 해결책은 무엇입니까?

나는 분열이 같은 tasksForServer 개체를 ...에 대한 생각 ...

tasksForServer 
- worker0 
    - taskID 
    - ... 
    - taskID 
    - ... 
- worker1 
    - taskID 
    - ... 
    - taskID 
    - ... 

을 ... 필요 무작위로 다른 "노동자 큐"의 작업을 쓰기로 근로자를 추가.

+0

App Engine을 사용하는 한, 확장을 위해 app.yaml에 명시 적으로 정의하지 않는 한 자동으로 스케일링이 발생합니다. – topless

+0

App Engine과 함께 Firebase를 사용해 보셨습니까? 데이터는 예를 들어 'ref.on ("child_added", function (snapshot) {...});'App Engine이 어떤 인스턴스가 새로운 자식을 얻는지를 결정할 수 있기 때문에 자동 크기 조정이 불가능할 것입니다. – eLwoodianer

답변

0

새 인스턴스를 추가 할 수 있으며 enable auto-scaling in your app.yaml 인 경우 앱 엔진이이를 수행 할 수 있습니다. 귀하의 경우, 확장 성을 CPU 사용률에 의존하게 할 수 있습니다.

실행중인 모든 인스턴스가 동일한 작업을 처리하므로 아무 것도 달성되지 않습니다.

운좋게도이 정확한 문제를 해결하기 위해 Firebase-Queue이 제작되었습니다. 이를 통해 여러 대기열 작업자를 여러 시스템에서 초기화 할 수 있으며 Firebase-Queue는 한 번에 하나의 작업자 만 단일 대기열 작업을 처리하도록합니다. firebase-queue에 대한 자세한 내용은 guide에서 확인할 수 있습니다.

+0

이전에 Firebase-Queue를 사용해 봤지만 "다소 느린"것이었지만 우리 쪽에서 뭔가 잘못했을 수 있습니다. 그래서 우리는 곧 다시 시도 할 것입니다 ... 어쨌든, 내 접근 방식으로 돌아가십시오. 나는 내 자신을 더 분명하게하려고 노력한다. 왜냐하면 나는 우리가 여기에 오해가 있다고 믿기 때문이다. 인스턴스 1은 worker1-node, 인스턴스 2는 worker2-node에서만 수신하고 클라이언트는 무작위로 하나의 작업자 * -node에 쓰므로 작업은 하나의 인스턴스 만 처리됩니다. – eLwoodianer