Какое решение GCP следует использовать для бесконечного срока службы / длительного процесса? - PullRequest
1 голос
/ 14 апреля 2020

В настоящее время я работаю на Heroku, которая обрабатывает долго выполняющиеся процессы таким образом, что требуется явное изменение кода для помещения вещей в очередь заданий. Я не хочу делать явные изменения кода, такие как очередь заданий, поэтому я хочу переместить этот конкретный блок.

У меня работает Gmail.users.watch средство отслеживания электронной почты, и я хотел бы переместить это связано с GCP, потому что Heroku, похоже, сталкивается с R15 - Vastly exceeded memory quota ошибками в моем коде. Я полагаю, это потому, что для каждого запроса, который Heroku обрабатывает, он порождает новый экземпляр долгосрочного Gmail.users.watch процесса.

const beginWatcher = () => {
    gmail.users.watch(
        {
            auth: authClient,
            userId: "me",
            requestBody: {
                topicName: topicURL,
                labelIds: ["INBOX"]
            }
        },
        (error) => {
            if (error) {
                console.log(error)
                return
            }
        }
    )
}

beginWatcher()

У меня нет большого опыта GCP с нуля, я ' хотелось бы знать;

  1. Где длительный процесс, подобный описанному выше, подходит для GCP?
    • Похоже, что Google App Engine в основном Heroku, но я Я считаю, что один экземпляр сервера - это то, что мне нужно для чего-то, что будет работать вечно, как приведенный выше код.
    • Похоже, что Google Compute Engine представляет собой отдельную виртуальную машину, которая запускается, но также используется для больших вычислительных нагрузок, а не просто для просмотра электронной почты, поэтому это может быть излишним.
    • Google Kubernetes Кажется, что движок обрабатывает хостинг с учетом Docker, но для чего-то подобного это кажется слишком сложным, поскольку мне приходится указывать практически все.
  2. Должен ли я использовать другое решение GCP, которое не входит в число трех перечисленных выше?

Мой инстинкт подсказывает мне Google Compute Engine, но я просто хочу, чтобы кто-нибудь подтвердил мне; где, черт возьми, вы положили процесс бесконечной продолжительности жизни, подобный этому, в GCP .

1 Ответ

1 голос
/ 15 апреля 2020

Если вы выберете Google Compute Engine, вы, вероятно, столкнетесь с нежелательными издержками на управление собственной виртуальной машиной. Это не должно быть таким сложным для описанного вами варианта использования, но это может создать некоторые нежелательные сюрпризы.
Преимущество использования виртуальной машины состоит в том, что вы можете решить проблему утечки памяти, внедрив какой-либо сборщик мусора, который будет убирать мертвые процессы или даже перезапускать машину время от времени.

Сказав это, реальным решением вашей проблемы, вероятно, будет решение проблемы утечки памяти, которую вы испытываете. В большинстве случаев это потребует меньше усилий, чем перенос вашего приложения на новую платформу.

...