[erlang-questions] Help with design of distributed fault-tolerant systems

Martin Karlsson martin@REDACTED
Thu Oct 8 09:21:00 CEST 2015


Hi Vance,

Thanks for your reply. And I agree that dealing with these things in the
client is more flexible.

> ...the clients are perfectly prepared to handle failures with retries and
> failover to other service instances
Unfortunately the client software is already out there so we are also tied
with a VirtualIP through Load-Balancer architecture.

High Availability from client requests are dealt with OK though as client
will retry on failure (albeit to the same VIP) and is routed to a server
which can handle it.

The problem is more internal gen_servers (lookup tables, global task
servers, mini message queues). Small state which is periodically updated
and needed to serve clients request (where data is largely same for every
client).

Some Examples:

A background task which periodically fetches some information from an
external system and keeps the data in its state, there can only be one task
running globally (leader election?, failover?).

A  gen_server router where various data sources can add themselves so that
requests get routed to the correct db-source. Either all nodes most connect
to a global gen_server which holds the info or ideally the info is shared
among multiple nodes. Again should I push state to database (then why use a
gen_server at all?) or what sort of architecture is needed to cater for
this?

Thanks again,
Martin
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://erlang.org/pipermail/erlang-questions/attachments/20151008/1cf4ed40/attachment.htm>


More information about the erlang-questions mailing list