<?xml version='1.0' encoding='UTF-8'?><?xml-stylesheet href="http://www.blogger.com/styles/atom.css" type="text/css"?><feed xmlns='http://www.w3.org/2005/Atom' xmlns:openSearch='http://a9.com/-/spec/opensearchrss/1.0/' xmlns:georss='http://www.georss.org/georss'><id>tag:blogger.com,1999:blog-5484483847946012702</id><updated>2009-08-27T06:36:45.018-07:00</updated><title type='text'>TCP3 Blog</title><subtitle type='html'></subtitle><link rel='http://schemas.google.com/g/2005#feed' type='application/atom+xml' href='http://tcp3com.blogspot.com/feeds/posts/default'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5484483847946012702/posts/default'/><link rel='alternate' type='text/html' href='http://tcp3com.blogspot.com/'/><link rel='hub' href='http://pubsubhubbub.appspot.com/'/><author><name>Bryan Waters</name><uri>http://www.blogger.com/profile/08899383838928170725</uri><email>bryanw@abwaters.com</email></author><generator version='7.00' uri='http://www.blogger.com'>Blogger</generator><openSearch:totalResults>2</openSearch:totalResults><openSearch:startIndex>1</openSearch:startIndex><openSearch:itemsPerPage>25</openSearch:itemsPerPage><entry><id>tag:blogger.com,1999:blog-5484483847946012702.post-1769245415254705749</id><published>2008-09-21T13:13:00.000-07:00</published><updated>2008-09-21T13:20:33.849-07:00</updated><title type='text'>Sharded Counters Take Too Much Time</title><content type='html'>The purpose of sharded counters is to reduce contention for a single entity on serialized writes.  The concept is to create multiple sub-counters that are added together to create a single counter with the sub-counter that is incremented selected at random.  This seemed ideal for TCP3 since we need to count pretty much everything.  We count clicks, previews, clicks per day, previews per day, etc. &lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;The problem is that sharded counters take too long.  I'm still profiling, but i'm getting quota warnings on even the memcached sharded counter implementation suggested in one of the Google I/O briefings.  Updating the sharded counters takes 3.5 seconds in my application.  My problem is that i'm not sure if this is a performance problem for appengine or a bug in my code.&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;I'm going to have to consider an alternate implementation.  I'll post details as soon as I come up with something that works.&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/5484483847946012702-1769245415254705749?l=tcp3com.blogspot.com'/&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://tcp3com.blogspot.com/feeds/1769245415254705749/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='https://www.blogger.com/comment.g?blogID=5484483847946012702&amp;postID=1769245415254705749' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5484483847946012702/posts/default/1769245415254705749'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5484483847946012702/posts/default/1769245415254705749'/><link rel='alternate' type='text/html' href='http://tcp3com.blogspot.com/2008/09/sharded-counters-take-too-much-time.html' title='Sharded Counters Take Too Much Time'/><author><name>Bryan Waters</name><uri>http://www.blogger.com/profile/08899383838928170725</uri><email>bryanw@abwaters.com</email><gd:extendedProperty xmlns:gd='http://schemas.google.com/g/2005' name='OpenSocialUserId' value='05575257577516996417'/></author><thr:total xmlns:thr='http://purl.org/syndication/thread/1.0'>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-5484483847946012702.post-7781942938842552566</id><published>2008-09-10T19:09:00.001-07:00</published><updated>2008-09-10T19:17:43.196-07:00</updated><title type='text'>An AppEngine URL Shortener</title><content type='html'>Any application that needs to scale needs to designed to do so from the beginning.  Or at least that's what I used to think.  Even when Amazon introduced EC2 and S3 there were still design requirements that you needed to consider.  In fact, I actually started this project with S3 as the back-end.  The idea was to store the URLs on S3 which had very quick response times and use quick scalable hosting (I hadn't decided which hosting service at that time) with round-robin DNS to scale the front-end.  It was a simple architecture but it would have worked.  But...before I was able to go very far with the project, Google launched AppEngine.  AppEngine took an entirely different approach to scalability.  Use their SDK and platform and don't even bother with scalability.   So, I decided to switch over and give it a try.&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;This project is the ongoing development effort based on that decision.   I will describe and write about design decisions, feature plans and problems and roadblocks caused by the AppEngine platform.&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;Oh, and feel free to comment.  I will approve any and all constructive comments both postitive and negative.&lt;span class="Apple-tab-span" style="white-space:pre"&gt; &lt;/span&gt;&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/5484483847946012702-7781942938842552566?l=tcp3com.blogspot.com'/&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://tcp3com.blogspot.com/feeds/7781942938842552566/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='https://www.blogger.com/comment.g?blogID=5484483847946012702&amp;postID=7781942938842552566' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5484483847946012702/posts/default/7781942938842552566'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5484483847946012702/posts/default/7781942938842552566'/><link rel='alternate' type='text/html' href='http://tcp3com.blogspot.com/2008/09/appengine-url-shortener.html' title='An AppEngine URL Shortener'/><author><name>Bryan Waters</name><uri>http://www.blogger.com/profile/08899383838928170725</uri><email>bryanw@abwaters.com</email><gd:extendedProperty xmlns:gd='http://schemas.google.com/g/2005' name='OpenSocialUserId' value='05575257577516996417'/></author><thr:total xmlns:thr='http://purl.org/syndication/thread/1.0'>0</thr:total></entry></feed>