How to share cache between multiple Google App Engine instances which each have multiple vCPUs?
SITUATION:
I am trying to implement caching for rate-limited third-party API requests my website needs to make.
Apparently, basic solutions such as:
https://www.npmjs.com/package/node-cache
won't even share cache between CPUs, much less between instances ?
Is that correct ?
And if it is, how can I share cache between instances so that I have one unified cache for my website across instances ?
After googling for a while, it seems Redis would be a solution. But from what I gathered, I would have to host Redis on it's own dedicated instance for the cache to be unique across my website VM instances ?
What if the instance hosting Redis is overloaded and also needs to be auto-scaled to multiple instances ?
QUESTION:
How can I implement shared cache between VM instances of my website ?
javascript node.js google-app-engine caching redis
add a comment |
SITUATION:
I am trying to implement caching for rate-limited third-party API requests my website needs to make.
Apparently, basic solutions such as:
https://www.npmjs.com/package/node-cache
won't even share cache between CPUs, much less between instances ?
Is that correct ?
And if it is, how can I share cache between instances so that I have one unified cache for my website across instances ?
After googling for a while, it seems Redis would be a solution. But from what I gathered, I would have to host Redis on it's own dedicated instance for the cache to be unique across my website VM instances ?
What if the instance hosting Redis is overloaded and also needs to be auto-scaled to multiple instances ?
QUESTION:
How can I implement shared cache between VM instances of my website ?
javascript node.js google-app-engine caching redis
add a comment |
SITUATION:
I am trying to implement caching for rate-limited third-party API requests my website needs to make.
Apparently, basic solutions such as:
https://www.npmjs.com/package/node-cache
won't even share cache between CPUs, much less between instances ?
Is that correct ?
And if it is, how can I share cache between instances so that I have one unified cache for my website across instances ?
After googling for a while, it seems Redis would be a solution. But from what I gathered, I would have to host Redis on it's own dedicated instance for the cache to be unique across my website VM instances ?
What if the instance hosting Redis is overloaded and also needs to be auto-scaled to multiple instances ?
QUESTION:
How can I implement shared cache between VM instances of my website ?
javascript node.js google-app-engine caching redis
SITUATION:
I am trying to implement caching for rate-limited third-party API requests my website needs to make.
Apparently, basic solutions such as:
https://www.npmjs.com/package/node-cache
won't even share cache between CPUs, much less between instances ?
Is that correct ?
And if it is, how can I share cache between instances so that I have one unified cache for my website across instances ?
After googling for a while, it seems Redis would be a solution. But from what I gathered, I would have to host Redis on it's own dedicated instance for the cache to be unique across my website VM instances ?
What if the instance hosting Redis is overloaded and also needs to be auto-scaled to multiple instances ?
QUESTION:
How can I implement shared cache between VM instances of my website ?
javascript node.js google-app-engine caching redis
javascript node.js google-app-engine caching redis
asked Nov 10 '18 at 13:39
TheProgrammerTheProgrammer
314119
314119
add a comment |
add a comment |
1 Answer
1
active
oldest
votes
You could add to your GAE application a 1st generation standard environment service which would:
- act as a caching service for your node.js (or other 2nd generation standard environment or flexible environment) service(s) and, under the hood, use itself the GAE memcache service, only available in those 1st gen standard environments.
- maybe even make itself those rate-limited 3rd party API calls, it will probably be simpler to properly coordinate the cached results that way
- be configured for auto scaling to address the scalability concern
add a comment |
Your Answer
StackExchange.ifUsing("editor", function ()
StackExchange.using("externalEditor", function ()
StackExchange.using("snippets", function ()
StackExchange.snippets.init();
);
);
, "code-snippets");
StackExchange.ready(function()
var channelOptions =
tags: "".split(" "),
id: "1"
;
initTagRenderer("".split(" "), "".split(" "), channelOptions);
StackExchange.using("externalEditor", function()
// Have to fire editor after snippets, if snippets enabled
if (StackExchange.settings.snippets.snippetsEnabled)
StackExchange.using("snippets", function()
createEditor();
);
else
createEditor();
);
function createEditor()
StackExchange.prepareEditor(
heartbeatType: 'answer',
autoActivateHeartbeat: false,
convertImagesToLinks: true,
noModals: true,
showLowRepImageUploadWarning: true,
reputationToPostImages: 10,
bindNavPrevention: true,
postfix: "",
imageUploader:
brandingHtml: "Powered by u003ca class="icon-imgur-white" href="https://imgur.com/"u003eu003c/au003e",
contentPolicyHtml: "User contributions licensed under u003ca href="https://creativecommons.org/licenses/by-sa/3.0/"u003ecc by-sa 3.0 with attribution requiredu003c/au003e u003ca href="https://stackoverflow.com/legal/content-policy"u003e(content policy)u003c/au003e",
allowUrls: true
,
onDemand: true,
discardSelector: ".discard-answer"
,immediatelyShowMarkdownHelp:true
);
);
Sign up or log in
StackExchange.ready(function ()
StackExchange.helpers.onClickDraftSave('#login-link');
);
Sign up using Google
Sign up using Facebook
Sign up using Email and Password
Post as a guest
Required, but never shown
StackExchange.ready(
function ()
StackExchange.openid.initPostLogin('.new-post-login', 'https%3a%2f%2fstackoverflow.com%2fquestions%2f53239542%2fhow-to-share-cache-between-multiple-google-app-engine-instances-which-each-have%23new-answer', 'question_page');
);
Post as a guest
Required, but never shown
1 Answer
1
active
oldest
votes
1 Answer
1
active
oldest
votes
active
oldest
votes
active
oldest
votes
You could add to your GAE application a 1st generation standard environment service which would:
- act as a caching service for your node.js (or other 2nd generation standard environment or flexible environment) service(s) and, under the hood, use itself the GAE memcache service, only available in those 1st gen standard environments.
- maybe even make itself those rate-limited 3rd party API calls, it will probably be simpler to properly coordinate the cached results that way
- be configured for auto scaling to address the scalability concern
add a comment |
You could add to your GAE application a 1st generation standard environment service which would:
- act as a caching service for your node.js (or other 2nd generation standard environment or flexible environment) service(s) and, under the hood, use itself the GAE memcache service, only available in those 1st gen standard environments.
- maybe even make itself those rate-limited 3rd party API calls, it will probably be simpler to properly coordinate the cached results that way
- be configured for auto scaling to address the scalability concern
add a comment |
You could add to your GAE application a 1st generation standard environment service which would:
- act as a caching service for your node.js (or other 2nd generation standard environment or flexible environment) service(s) and, under the hood, use itself the GAE memcache service, only available in those 1st gen standard environments.
- maybe even make itself those rate-limited 3rd party API calls, it will probably be simpler to properly coordinate the cached results that way
- be configured for auto scaling to address the scalability concern
You could add to your GAE application a 1st generation standard environment service which would:
- act as a caching service for your node.js (or other 2nd generation standard environment or flexible environment) service(s) and, under the hood, use itself the GAE memcache service, only available in those 1st gen standard environments.
- maybe even make itself those rate-limited 3rd party API calls, it will probably be simpler to properly coordinate the cached results that way
- be configured for auto scaling to address the scalability concern
answered Nov 10 '18 at 21:29
Dan CornilescuDan Cornilescu
27.7k113162
27.7k113162
add a comment |
add a comment |
Thanks for contributing an answer to Stack Overflow!
- Please be sure to answer the question. Provide details and share your research!
But avoid …
- Asking for help, clarification, or responding to other answers.
- Making statements based on opinion; back them up with references or personal experience.
To learn more, see our tips on writing great answers.
Some of your past answers have not been well-received, and you're in danger of being blocked from answering.
Please pay close attention to the following guidance:
- Please be sure to answer the question. Provide details and share your research!
But avoid …
- Asking for help, clarification, or responding to other answers.
- Making statements based on opinion; back them up with references or personal experience.
To learn more, see our tips on writing great answers.
Sign up or log in
StackExchange.ready(function ()
StackExchange.helpers.onClickDraftSave('#login-link');
);
Sign up using Google
Sign up using Facebook
Sign up using Email and Password
Post as a guest
Required, but never shown
StackExchange.ready(
function ()
StackExchange.openid.initPostLogin('.new-post-login', 'https%3a%2f%2fstackoverflow.com%2fquestions%2f53239542%2fhow-to-share-cache-between-multiple-google-app-engine-instances-which-each-have%23new-answer', 'question_page');
);
Post as a guest
Required, but never shown
Sign up or log in
StackExchange.ready(function ()
StackExchange.helpers.onClickDraftSave('#login-link');
);
Sign up using Google
Sign up using Facebook
Sign up using Email and Password
Post as a guest
Required, but never shown
Sign up or log in
StackExchange.ready(function ()
StackExchange.helpers.onClickDraftSave('#login-link');
);
Sign up using Google
Sign up using Facebook
Sign up using Email and Password
Post as a guest
Required, but never shown
Sign up or log in
StackExchange.ready(function ()
StackExchange.helpers.onClickDraftSave('#login-link');
);
Sign up using Google
Sign up using Facebook
Sign up using Email and Password
Sign up using Google
Sign up using Facebook
Sign up using Email and Password
Post as a guest
Required, but never shown
Required, but never shown
Required, but never shown
Required, but never shown
Required, but never shown
Required, but never shown
Required, but never shown
Required, but never shown
Required, but never shown