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.

Reply via email to