It's hard to imagine this working without some sort of background thread in the frontend instances. Otherwise how do you get the frontend to commit its data to whatever datasource you want? You can't really hold open every connection for 2s... at max concurrency of 10, you'd need 100 instances. Maybe you could make some sort of latch whereby when a second request comes in, it releases the first request, but wow that would be complicated.
GAE can easily proxy 1000qps to another service; that's just a question of having enough instances. The question is whether the other service can handle 1000 submissions per second. If it all funnels to a redis (or some other in-memory store) instance, the answer is almost certainly yes. It wouldn't require moving 'the whole thing' out of GAE, just the queue. Ideally get the client to submit directly to that queue instead of proxying through GAE, but that might require a client update. In theory this should be the kind of thing that a backend is good for. Too bad it isn't. Jeff On Tue, Jul 31, 2012 at 10:10 PM, Richard Watson <[email protected]> wrote: > > Unless you move the whole thing out of GAE, I suspect 1000 TPS could well > suffer from variable performance whether you're using puts, tasks or URL > fetch. Before I built out some second external setup and spent time > integrating it, I'd look at reducing the transactions within GAE, again by > batching them. > > For example: > Each instance receives values, caches them in memory (maybe add memcache as > backup), submits them at the end of each second (or two, or whenever max > entity size is hit) as one blob-like entity, via whatever medium ends up > working best. The risk here is that the instance fails, but I'd get it > working now and then improve the resilience later, because this devil is > worse than the one Richard has now. > > This way, we're back to using e.g. put(), but hopefully changing 1000/sec > into 100, 50 or 10/sec. > > What sucks about this idea? -- You received this message because you are subscribed to the Google Groups "Google App Engine" group. To post to this group, send email to [email protected]. To unsubscribe from this group, send email to [email protected]. For more options, visit this group at http://groups.google.com/group/google-appengine?hl=en.
