On May 6, 2008, at 11:41 AM, Sean wrote:

I'm not suggesting that either ( I must have done bad job explaining my position ). What I'm advocating for high traffic sites is sticking with the shared nothing approach that HTTP provides as much as possible. There are of course some minimal things that need to be done via cookies, like user validation, but that list should be very, very short and the exception, not the rule.

Keeping session state in cookies isn't really much of option for variety of reasons (security, additional bandwidth, size limitations, etc). Doing session state on the server side is fine for smaller sites (will never grow beyond 1 web server), but is a pain for sites that have to scale out to handle lots of traffic/ page views. That basic reason that it is a pain is keeping all of that data in sync across all of the potential web servers and data centers that your user might hit to access your site. In many respects keeping user state in sync is much more important than keeping your application data in sync (replication lag and such), because of the potential security implications.

Avoiding session state for your high traffic site will make it easier to scale and reduce the number of things that you have to keep up and going and in (mostly) in sync. For high traffic sites they'll be plenty of other things to keep you busy :-)
You know that some major websites like Amazon use session, right? How do you propose to keep track of the current user without cookies???


I generally try not to quote myself, but this seems like a good time to do so (see first paragraph in the email of mine you responded to):

--------------
What I'm advocating for high traffic sites is sticking with the shared nothing approach that HTTP provides as much as possible. There are of course some minimal things that need to be done via cookies, like user validation, but that list should be very, very short and the exception, not the rule.
--------------

I'm not suggesting that you don't use cookies, only that they should be used sparingly.

I think part of the problem we are running into is confusion of terms. Server side session store refers to the general concept of setting a unique ID via a cookie and then tracking the current session state for that unique ID via some data store on the server (files, database, memcache, etc). This is what's happening when you use PHP's session functions (http://us2.php.net/manual/en/ book.session.php). This makes many things a lot easier, but generally breaks the shared nothing concept of HTTP.

Another technique is to set a cookie an encrypted cookie that uniquely identifies a specific user. Then on each request you check that the cookie and user are valid and lookup what ever details are needed for the specific request. The result of this is that there is some additional work managing the user info, but you don't have to worry about keeping all of the session state data in sync and this method is more in keeping with the shared nothing approach of HTTP.

In our case using the shared nothing approach is totally worth it, having to keep session state synced across 3 different data centers and hundreds of servers wouldn't be very much fun :-)

--
Joseph Scott
[EMAIL PROTECTED]
http://joseph.randomnetworks.com/





_______________________________________________

UPHPU mailing list
[email protected]
http://uphpu.org/mailman/listinfo/uphpu
IRC: #uphpu on irc.freenode.net

Reply via email to