[Ur] Moving channel/client ID generation from the runtime into the database and/or compiler?

Gergely Buday gbuday at gmail.com
Sat Sep 24 15:26:16 EDT 2011


In the amazon cloud it is possible to run several servers to load
balance and to scale on demand.

- Gergely

2011/9/24, Adam Chlipala <adamc at impredicative.com>:
> austin seipp wrote:
>> The Ur/Web runtime system represents asynchronous channels for message
>> passing between clients with an ID that is generated by the when a new
>> channel is allocated, and uses this for example when you insert a
>> 'channel' into the database. Would it be possible to move this channel
>> generation into the database itself, perhaps with a sequence or
>> something similar?
>>
>
> Moving name generation into the database is easy, but there is other
> important state.  Fundamentally, we must manage TCP connections by
> clients, which sounds scary to do with SQL.  Each channel has a buffer,
> and there is locking to manage proper use of the buffers.  All this is
> done now with shared memory on a single host.
>
> I have contemplated supporting application distribution by changing
> [client] and [channel] representations to store server IDs as well, so
> that each server can easily manage its own name supply.  It would be a
> run-time error to access a channel associated with a different server.
> The Ur/Web runtime could be modified to set a cookie that a load
> balancer or proxy could use to detect requests to the appropriate
> servers, where the needed channels live.  The feasibility of this idea
> is based on the assumption that it's easy to group mutually
> communicating clients into cohorts that fit on single servers.  (Note
> that "client" here refers to a single page view, not a single browsing
> session, making the problem easier.)
>
>
> HOWEVER... I'm wondering whether it really is important to support
> application distribution.  I can understand having back-up servers that
> you switch to if the primary server encounters a problem.  That model is
> already supported very well with Ur/Web.  You can use hot-swap support
> in the DBMS, and the only remaining server-side state is the clients and
> channels, which aren't especially persistent anyway.  If all Comet
> interaction is reset on the occasional server failure, that doesn't seem
> so awful to me.  Again, here we are only talking about failures of a
> single primary server, so we don't have the usual problem of "rare
> failure + many servers = frequent failure."
>
> I know it's in vogue today to care about having many servers in
> production at once, serving the same application.  Still, I'm deeply
> skeptical that this capability matters for more than a handful of web
> applications that have ever existed.  I lean towards using a single very
> powerful server, with reasonable performance for shared memory across cores.
>
> I'm very interested in arguments to support the claim that it is common
> for web applications to be deployed best in ways that have multiple
> servers running application logic simultaneously.
>
> _______________________________________________
> Ur mailing list
> Ur at impredicative.com
> http://www.impredicative.com/cgi-bin/mailman/listinfo/ur
>

-- 
Mobilkészülékről küldve



More information about the Ur mailing list