<?xml version="1.0" encoding="UTF-8"?><rss version="2.0"
	xmlns:content="http://purl.org/rss/1.0/modules/content/"
	xmlns:dc="http://purl.org/dc/elements/1.1/"
	xmlns:atom="http://www.w3.org/2005/Atom"
	xmlns:sy="http://purl.org/rss/1.0/modules/syndication/"
		>
<channel>
	<title>Comments on: Elko III: Scale Differently</title>
	<atom:link href="http://habitatchronicles.com/2009/09/elko-iii-scale-differently/feed/" rel="self" type="application/rss+xml" />
	<link>http://habitatchronicles.com/2009/09/elko-iii-scale-differently/</link>
	<description>Cyberspace. Virtual communities. Online games. Distributed systems.   Opinion, history, advice, and silliness from two guys who&#039;ve been building this stuff for a long, long time.</description>
	<lastBuildDate>Tue, 07 Sep 2010 04:40:48 +0000</lastBuildDate>
	<generator>http://wordpress.org/?v=2.9.2</generator>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
		<item>
		<title>By: Chip</title>
		<link>http://habitatchronicles.com/2009/09/elko-iii-scale-differently/comment-page-1/#comment-560</link>
		<dc:creator>Chip</dc:creator>
		<pubDate>Tue, 07 Sep 2010 04:40:48 +0000</pubDate>
		<guid isPermaLink="false">http://habitatchronicles.com/?p=179#comment-560</guid>
		<description>Victor, that&#039;s a very reasonable question.  There is some similarity, and to the extent that one&#039;s application entails a single client&#039;s interaction with it&#039;s own autistic session state, they are basically the same thing.  However, there are a couple of points of differentiation that matter to a broader range of applications.  The most important is that multiple clients can be readily routed to a common session context containing shared state that is relevant to all of them.  The canonical example is a real-time, multiplayer game, but you might also consider auctions, shared graphical workspaces, or live online slide presentations -- anything where lively shared data that spans multiple client sessions would be of value.  Another notable differentiator, less profound but still useful pragmatically, is the shift in perspective that arises when you regard the client-server connection as a channel to a process rather than to a purely reactive object.  That&#039;s a little abstract, so let me dig into it a bit more: a conventional web server is designed to act by responding to each HTTP request as it is delivered.  Elko does that also, but since it decouples the HTTP request/response handshake from the application message protocol, it can also initiate communication to the client asynchronously.  Timers and other processes can run autonomously on the server and then send messages to the client when they feel the need to do so.  For example, an auction application might close bidding after the passage of sufficient time with no new bids submitted -- and then notify everyone participating in the auction that this has happened.  All of that can (and has been) done with a conventional web server also, but it cuts against the grain and requires jumping through a few hoops, whereas Elko does this natively.</description>
		<content:encoded><![CDATA[<p>Victor, that&#8217;s a very reasonable question.  There is some similarity, and to the extent that one&#8217;s application entails a single client&#8217;s interaction with it&#8217;s own autistic session state, they are basically the same thing.  However, there are a couple of points of differentiation that matter to a broader range of applications.  The most important is that multiple clients can be readily routed to a common session context containing shared state that is relevant to all of them.  The canonical example is a real-time, multiplayer game, but you might also consider auctions, shared graphical workspaces, or live online slide presentations &#8212; anything where lively shared data that spans multiple client sessions would be of value.  Another notable differentiator, less profound but still useful pragmatically, is the shift in perspective that arises when you regard the client-server connection as a channel to a process rather than to a purely reactive object.  That&#8217;s a little abstract, so let me dig into it a bit more: a conventional web server is designed to act by responding to each HTTP request as it is delivered.  Elko does that also, but since it decouples the HTTP request/response handshake from the application message protocol, it can also initiate communication to the client asynchronously.  Timers and other processes can run autonomously on the server and then send messages to the client when they feel the need to do so.  For example, an auction application might close bidding after the passage of sufficient time with no new bids submitted &#8212; and then notify everyone participating in the auction that this has happened.  All of that can (and has been) done with a conventional web server also, but it cuts against the grain and requires jumping through a few hoops, whereas Elko does this natively.</p>
]]></content:encoded>
	</item>
	<item>
		<title>By: JavaScript and HTTP</title>
		<link>http://habitatchronicles.com/2009/09/elko-iii-scale-differently/comment-page-1/#comment-559</link>
		<dc:creator>JavaScript and HTTP</dc:creator>
		<pubDate>Tue, 07 Sep 2010 02:42:32 +0000</pubDate>
		<guid isPermaLink="false">http://habitatchronicles.com/?p=179#comment-559</guid>
		<description>[...] client to a given server that maintains state in memory. In addition to Chip Morningstar&#8217;s post on Elko, see JSON Messaging Over HTTP that explains what happens at the HTTP level. The client [...]</description>
		<content:encoded><![CDATA[<p>[...] client to a given server that maintains state in memory. In addition to Chip Morningstar&#8217;s post on Elko, see JSON Messaging Over HTTP that explains what happens at the HTTP level. The client [...]</p>
]]></content:encoded>
	</item>
	<item>
		<title>By: Victor Doss</title>
		<link>http://habitatchronicles.com/2009/09/elko-iii-scale-differently/comment-page-1/#comment-558</link>
		<dc:creator>Victor Doss</dc:creator>
		<pubDate>Fri, 03 Sep 2010 19:35:30 +0000</pubDate>
		<guid isPermaLink="false">http://habitatchronicles.com/?p=179#comment-558</guid>
		<description>Maybe I am missing something completely (which is most likely), but what is the difference between this and a traditional web architectures with sticky session turned on ? When you say &quot;client&quot;, is that the browser client ? or both browser and server which are clients to this context framework ?

ps: The build up was great in the part II, but this part was a total let down (atleast for thick heads like me)</description>
		<content:encoded><![CDATA[<p>Maybe I am missing something completely (which is most likely), but what is the difference between this and a traditional web architectures with sticky session turned on ? When you say &#8220;client&#8221;, is that the browser client ? or both browser and server which are clients to this context framework ?</p>
<p>ps: The build up was great in the part II, but this part was a total let down (atleast for thick heads like me)</p>
]]></content:encoded>
	</item>
	<item>
		<title>By: Chip</title>
		<link>http://habitatchronicles.com/2009/09/elko-iii-scale-differently/comment-page-1/#comment-237</link>
		<dc:creator>Chip</dc:creator>
		<pubDate>Fri, 11 Sep 2009 21:48:02 +0000</pubDate>
		<guid isPermaLink="false">http://habitatchronicles.com/?p=179#comment-237</guid>
		<description>All the Directors&#039; data structures are non-persistent.  When Context Servers come up they notify the Directors of their availability to provide services.  They then keep the Directors informed of their ongoing availability and load status.  In addition, there&#039;s a protocol whereby the Directors keep each other updated about their own statuses, so that they can also go up and down, and so that new Directors can be added to the cluster dynamically.

There&#039;s also a more complex configuration, not described in my post but covered in some of the docs in the release package (though I will confess that here things could benefit from more documentation love), where there&#039;s an additional kind of server called a Broker that keeps track of a heterogeneous collection of Elko servers and the various services they offer to other servers in the farm.  The Broker acts as a kind of configuration manager, so that each server only needs to know one point of contact to get wired up with everybody else.</description>
		<content:encoded><![CDATA[<p>All the Directors&#8217; data structures are non-persistent.  When Context Servers come up they notify the Directors of their availability to provide services.  They then keep the Directors informed of their ongoing availability and load status.  In addition, there&#8217;s a protocol whereby the Directors keep each other updated about their own statuses, so that they can also go up and down, and so that new Directors can be added to the cluster dynamically.</p>
<p>There&#8217;s also a more complex configuration, not described in my post but covered in some of the docs in the release package (though I will confess that here things could benefit from more documentation love), where there&#8217;s an additional kind of server called a Broker that keeps track of a heterogeneous collection of Elko servers and the various services they offer to other servers in the farm.  The Broker acts as a kind of configuration manager, so that each server only needs to know one point of contact to get wired up with everybody else.</p>
]]></content:encoded>
	</item>
	<item>
		<title>By: Chris Lauwers</title>
		<link>http://habitatchronicles.com/2009/09/elko-iii-scale-differently/comment-page-1/#comment-236</link>
		<dc:creator>Chris Lauwers</dc:creator>
		<pubDate>Fri, 11 Sep 2009 17:33:01 +0000</pubDate>
		<guid isPermaLink="false">http://habitatchronicles.com/?p=179#comment-236</guid>
		<description>Yes, I should have been more specific: my question has to do with replicating state between multiple Directors. Do you use a shared database for this?</description>
		<content:encoded><![CDATA[<p>Yes, I should have been more specific: my question has to do with replicating state between multiple Directors. Do you use a shared database for this?</p>
]]></content:encoded>
	</item>
	<item>
		<title>By: Chip Morningstar</title>
		<link>http://habitatchronicles.com/2009/09/elko-iii-scale-differently/comment-page-1/#comment-235</link>
		<dc:creator>Chip Morningstar</dc:creator>
		<pubDate>Fri, 11 Sep 2009 16:19:38 +0000</pubDate>
		<guid isPermaLink="false">http://habitatchronicles.com/?p=179#comment-235</guid>
		<description>Chris, I guess I implied the answer but I should have been clearer about that.  You make the Director fault tolerant through simple redundancy -- just set up multiple Directors. At State Software, our standard configuration was 2 Directors, and this was for fault tolerance rather than scaling.  You can have as many Directors as you like, though more than 2 or 3 is probably overkill.  Client traffic to the multiple Directors is then routed using rotating DNS or a VIP, just as you would with a regular web server cluster.</description>
		<content:encoded><![CDATA[<p>Chris, I guess I implied the answer but I should have been clearer about that.  You make the Director fault tolerant through simple redundancy &#8212; just set up multiple Directors. At State Software, our standard configuration was 2 Directors, and this was for fault tolerance rather than scaling.  You can have as many Directors as you like, though more than 2 or 3 is probably overkill.  Client traffic to the multiple Directors is then routed using rotating DNS or a VIP, just as you would with a regular web server cluster.</p>
]]></content:encoded>
	</item>
	<item>
		<title>By: Chris Lauwers</title>
		<link>http://habitatchronicles.com/2009/09/elko-iii-scale-differently/comment-page-1/#comment-234</link>
		<dc:creator>Chris Lauwers</dc:creator>
		<pubDate>Thu, 10 Sep 2009 21:04:28 +0000</pubDate>
		<guid isPermaLink="false">http://habitatchronicles.com/?p=179#comment-234</guid>
		<description>Chip,

in addition to scalability, the other argument often used for &quot;traditional&quot; web architectures is built-in redundancy and fault-tolerance. In the Elko architecture, how do you make the Director fault-tolerant?</description>
		<content:encoded><![CDATA[<p>Chip,</p>
<p>in addition to scalability, the other argument often used for &#8220;traditional&#8221; web architectures is built-in redundancy and fault-tolerance. In the Elko architecture, how do you make the Director fault-tolerant?</p>
]]></content:encoded>
	</item>
</channel>
</rss>
