Idea on stateful server load sharing & fail over

Kaiduan Xie <>
Wed Apr 7 19:39:09 CEST 2010


Hi, all,

Consider the following case, a system consists of a farm of state-full
call servers, and needs to support massive number of users, and zero
down time or at least 5-9 availability. The number of servers are
dynamic, in other words, server can come up and go away. The server is
a state-full server, it stores information of the call, the state
should be able to survive server crash so that in-call feature can be
supported after crash. The system has two tiers architecture. At the
front, a dispatcher dispatches the incoming request to the back end
state-full servers, the dispatcher is stateless. So the following
questions comes,

1. How to dispatch the incoming request to back end servers? Please
note that the back-end server is a state-full server, for example, all
requests in a call should be dispatched to the same server. The call
is identified with a call id that is a random string. Also the back
end server can be added or removed dynamically.

2. How to replicate the call state information among back end servers?

3. How front end server detects a back end server is down? How back
end servers detects that one of their peer is down? Can we use
erlang's monitor in distribution to achieve that?

Thanks all for the pointers and thoughts,

Kaiduan


More information about the erlang-questions mailing list