[erlang-questions] OTP Design
Thu Aug 18 20:46:31 CEST 2011
I strongly recommend to read Erlang and OTP in Action.
It would be needed to have a concrete idea.
On Thu, Aug 18, 2011 at 9:01 PM, Anchise Inzaghi <erlang@REDACTED> wrote:
> I am quite new to erlang and now on the first step to my first application
> in our actual production environment. I surely want to make use of the OTP
> framework. I have played a bit with it, read the documentation and Joe
> Armstrong's book. I am still unsure about the design. I hope you can help me
> out and give me some precious input.
> The setup is the following:
> 1 DB-Server somewhere in the internet,
> 1 Comm-Server in our local LAN with static public IP and static LAN IP,
> n Comm-Slaves in our local LAN with static LAN IPs and each with a number of
> different devices attached.
> Comm-Server and Comm-Slaves suffer from frequent blackouts and power surges,
> so they fall down and reboot quite a lot.
> The LAN is stable, the internet connection (of our LAN, not of the
> DB-Server) is the worst connection you can possibly imagine.
> Each Comm-Salve has one process for each of its comm devices attached which
> receive data from these devices. When it receives data I want them to pass
> this data to the Comm-Server, the Comm-Server then writes them to the
> persistence layer (postgres), does some preprocessing and then sends it to
> the central DB-Server. If there is no internet connection, it should wait
> until he sees the DB-Server again and send the buffered data then.
> The DB-Server, Comm-Server and Comm-Salves I imagined would be of the
> behaviout gen_server. The Comm-Server starts up with an ini-File indicating
> which Node on which Slave controlles which devices, and start up the
> corresponding Comm-Slaves on the indicated nodes, passing them the
> information of which devices to controll.
> The Comm-Server will also have some interface for adding and removing
> devices (i.e. processes receiving data from devices).
> If a Comm-Slave process dies, I need to restart it one-on-one. I thought
> about a supervisor on the Comm-Server to supervise all the Salves and here
> comes my first problem:
> **As I read the documentation, there is no way to start_link a process on a
> different node, or am I missing something?**
> **What supervision strategy would you suggest?**
> I also dived a bit into distributed application docu, but I have the
> impression that it is more aimed at Takeover and Failover mechanisms. I
> fear, these won't help me much, as each slave can only run on the machine
> where its actual hardware device is connected.
> **Please prove me wrong and show me the way how to use ditributed app?**
> I will be thankful for any indications how to sensefully use OTP with this
> Thanks a lot in advance.
> Anchise Inzaghi
> erlang-questions mailing list
More information about the erlang-questions