New to Earlang

Sean Hinde <>
Mon Nov 25 19:19:08 CET 2002


Daniel,

I've considered (several times) making such a system. I believe Erlang would
be an excellent choice for such a scheme - in my case the only reason not to
do so was that we already had  a different system performing the same
function!

In our GSM network we have run mnesia nodes holding 1,000,000 rows
replicated across two machines for the past 3 years or so and have not had a
single outage of those systems other than for hardware or connectivity
reasons.

A few hints:

We use mnesia fragmented tables which ensures that a single internal table
rarely gets bigger than 100,000 rows (though I don't quite know why anymore
on reflection!).

The only tricky situation is when the replicated nodes lose contact with
each other - the dreaded partitioned networks scenario. With only two nodes
the solution is to restart one of the nodes once connection is restored, and
that node will rebuild itself from the other node.

This is quite straightforward but means that any updates on the restarted
node are lost - this may be unacceptable in a prepayment system (peoples
money at stake).

One solution which springs to mind is to simply have a master/slave concept
- route all updates through one node and set up the clients to only route
traffic to the second node when the primary is unavailable. It is possible
imagine situations where certain LAN failures result in a partition where
the nodes can't see each other and some clients can randomly see single
nodes.

Another solution (perhaps more useful) is to set things up again so that
mnesia replication is used and there is a Primary/Secondary node.

Normally traffic would go to the primary node which would update the
secondary as normal. If any traffic failed over to the standby node it would
try to apply the change remotely on the Primary (Easy in Erlang -
rpc:call/4). If this failed it could try locally (perhaps in a new local
only copy of that customers data), append the change to a log file and pass
this to the primary for application once the connection was back up.

This should be OK for a prepaid type application because it doesn't matter
too much which order money is added and removed so  long as it ends up with
the correct balance in the end (barring various bizarre stepped price plans
which can be covered by weasel words about the order of charging of events
in the end customer agreement).

Oh, and, sticky locks might be handy if you have one master receiving all
updates..

I'll be fascinated to see the outcome of your prototyping.

Best of luck,

Sean Hinde

Intelligent Network Design Manager
T-Mobile UK


-----Original Message-----
From: Inswitch Solutions - Erlang Evaluation
To: 
Sent: 1/4/02 3:39 PM
Subject: New to Earlang

Hi,
 
I am new to Earlang, trying to evaluate if Erlang is appropiate for
building a fault tolerance commercial telecom prepaid platform, based on
computer telephony modules, with a replicated or distributed database of
about 500.000 to 1 millon subscribers.
 
 Now,
 
1) Does anybody have a commercial good experience with Erlang? 
 
2) Is it possible to obtain commercial email-support? If so, does
anybody know how much it costs? 
 
Thanks!!
 
Regards,
 
daniel
Daniel Fernandez
Inswitch Solutions



NOTICE AND DISCLAIMER:
This email (including attachments) is confidential.  If you have received
this email in error please notify the sender immediately and delete this
email from your system without copying or disseminating it or placing any
reliance upon its contents.  We cannot accept liability for any breaches of
confidence arising through use of email.  Any opinions expressed in this
email (including attachments) are those of the author and do not necessarily
reflect our opinions.  We will not accept responsibility for any commitments
made by our employees outside the scope of our business.  We do not warrant
the accuracy or completeness of such information.




More information about the erlang-questions mailing list