new to erlang: need ideas for server software

Joe Armstrong (TN/EAB) joe.armstrong@REDACTED
Thu Aug 17 09:35:44 CEST 2006


Interesting - can somebody answer the following:

cometd looks to be a ideal application for Erlang. I have written this
try of application *many times*

<aside>
I have implemented a similar thing (many times). With the following
differences:

- instead of using JSON encoded message bodies I can send an
message with an arbitrary encoding, determined by the mime-type
of the message.

   In fact I use binary encoded Erlang terms (using
term-to_binary(Message))

   When I compared this with XML encoded terms, my version ran 16 times
faster

- the set of messages

      * handshake
	* connect
	* reconnect
	* disconnect
	* status
	* subscribe
	* unsubscribe
	* ping 

Was different 

- I use what I call "poly ports", poly ports understand
multiple-protocols
so even though I use port 80 and HTTP I can interleave non-http messages
on the port 80 channel (A kind of short form of the HTTP) instead of
sending GET .... or POST ... I just send "eBin...." meaning "here comes
an Erlang term encoded with term_to_binary. When I decode this term I
get
the parse tree of the HTTP GET/POST etc. request, again much faster

</aside>

Now I have some questions about cometd.

- Is this an "interesting" application - ie if implemented in an
efficient manner will
  anybody be interested and use the implementation?

- Just how high performance is desirable?

  How many message/sec should a single server handle?
  How many simultaneously open connections should a single server
handle?

Also
  How frozen is the protocol?

  A really large server would benefit from an addition message in the
protocol set,
for example:

	* redirect (client - server message)
	* hand-over (server - server message)
   
   redirect can move a connection to a new server, the server send
redirect to the client
with a new server IP. The client closes the connection and connects to
the new server.
  
   hand-over is used between server to negotiate a redirection before it
occurs.''

   This can be used for:

	- load balancing (a busy server can redirect connections to a
unloaded server)
      - taking a server out of service, without interrupting the service
	- scaling the capacity of the server.


/Joe


> -----Original Message-----
> From: owner-erlang-questions@REDACTED 
> [mailto:owner-erlang-questions@REDACTED] On Behalf Of Roberto Saccon
> Sent: den 17 augusti 2006 04:32
> To: erlang-questions@REDACTED
> Subject: Re: new to erlang: need ideas for server software
> 
> oh, this is exactly what I am working on right now.
> 
> > A cometd implementation:
> >
> > http://cometd.com/
> 
> --
> Roberto Saccon
> 



More information about the erlang-questions mailing list