2016-12-05 7 views
0

Google Cloud Platform에 변수를 저장하려면 어떻게해야합니까? 지금은 내 경로가 공유하는 전역 변수를 사용하고 있지만 요청이 경로에 요청 될 때마다 값은 꺼져 있습니다. 내 서버가 동일한 변수를 공유하는 여러 인스턴스를 실행하고 있기 때문이라고 생각합니다. 내 응용 프로그램에서 Node.js/Express를 사용하고 있습니다.Google Cloud Platform에 변수를 저장하는 방법

var new_posted_time = 0; 
app.post('/message', function (request, response) { 
    message = request.body.Body; 

    new_posted_time = new_posted_time + 1; 

    console.log("This is the new time from POST: " + new_posted_time); 
    response.send("<Response><Message>Heyyo!</Message></Response>"); 

}); 

내 GET 경로가 /message에 정의 new_posted_time에 대한 값을 가져옵니다

내 POST 경로가 /display-message가 사용하는 new_posted_time 변수를 설정합니다.

app.get('/display-message', function(req,res){ 

    var last_updated_time = req.query.last_updated; 

    function checkMessage() { 
     var new_time = new_posted_time; 
     console.log("Checking messaged with new time from GET: " + new_time); 

     if(!last_updated_time || last_updated_time < new_time) { 
      updateMessage(new_time); 
     } 
     else { 
      console.log("No new messages at this time"); 
      myTimeout = setTimeout(function(){ 
       checkMessage(res); 
      }, 1000 * 10); //10 seconds 
     } 
    } 

    function updateMessage() { 
     console.log("Updating message now"); 
     var output = { 
      success: 1, 
      data: message, 
      old_stamp: last_updated_time, 
      new_stamp: new_stamp 
     }; 

     return res.json(output); 
    } 

    checkMessage(); 

}); 

그래서 나는 인해 실행 많은 경우 (내 생각이다)에 값이 일치하지 않기 때문에 때마다 내 응용 프로그램이 실행 구글의 데이터베이스에 어딘가에 공유 변수 new_posted_time를 저장할 수 있어야합니다.

답변

0

Google Cloud Datastore과 같은 영구 저장소에 '상태'를 저장해야합니다. 여기에 implementing counters에 Google Cloud Datastore (AppEngine Datastore API의 기사가 있지만 동일한 원칙)가 있습니다.

인스턴스에 상태를 저장하는 것은 바람직하지 않습니다. 인스턴스간에 일관성 문제가있을뿐만 아니라 인스턴스가 AppEngine에 의해 자동으로 종료 될 때 데이터가 손실되기 때문입니다.

+0

변수를 데이터 저장소의 엔터티로 저장하는 경우 내 인스턴스에 상태를 저장하는 것과 동일한 작업이 수행됩니까? 그렇다면 공유 변수를 저장하는 가장 효과적이고 적절한 방법은 무엇입니까? –

+0

데이터 저장소를 사용하고 있지 않으면 '인스턴스에 상태 저장 중'과 다릅니다. 차이점은 언제나 사용할 수있는 서비스를 사용하여 데이터를 디스크에 쓰는 데이터 저장소를 사용할 때, 메모리에 데이터를 저장하는 공유 변수에 쓸 때, 자동 스캐너가 임의로 종료 할 수있는 시스템 인스턴스에있는 경우입니다. 덕분에 –

+0

! 내 코드에서 Google datastore를 구현하는 방법에 대해 약간 혼란 스럽습니다. Node.js에서이 작업을 수행 할 수있는 몇 가지 방법이 있지만 작동하지는 않습니다. –

관련 문제