How to share cache between multiple Google App Engine instances which each have multiple vCPUs?











up vote
0
down vote

favorite












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 ?










share|improve this question


























    up vote
    0
    down vote

    favorite












    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 ?










    share|improve this question
























      up vote
      0
      down vote

      favorite









      up vote
      0
      down vote

      favorite











      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 ?










      share|improve this question













      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






      share|improve this question













      share|improve this question











      share|improve this question




      share|improve this question










      asked Nov 10 at 13:39









      TheProgrammer

      308117




      308117
























          1 Answer
          1






          active

          oldest

          votes

















          up vote
          1
          down vote



          accepted










          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






          share|improve this answer





















            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',
            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
            });


            }
            });














             

            draft saved


            draft discarded


















            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
































            1 Answer
            1






            active

            oldest

            votes








            1 Answer
            1






            active

            oldest

            votes









            active

            oldest

            votes






            active

            oldest

            votes








            up vote
            1
            down vote



            accepted










            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






            share|improve this answer

























              up vote
              1
              down vote



              accepted










              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






              share|improve this answer























                up vote
                1
                down vote



                accepted







                up vote
                1
                down vote



                accepted






                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






                share|improve this answer












                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







                share|improve this answer












                share|improve this answer



                share|improve this answer










                answered Nov 10 at 21:29









                Dan Cornilescu

                26.3k113160




                26.3k113160






























                     

                    draft saved


                    draft discarded



















































                     


                    draft saved


                    draft discarded














                    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




















































































                    Popular posts from this blog

                    Florida Star v. B. J. F.

                    Danny Elfman

                    Retrieve a Users Dashboard in Tumblr with R and TumblR. Oauth Issues