Key questions about the design - normenmueller/f-p GitHub Wiki

  1. Are we going to allow failures on the client side? If yes, how?
  2. Do we want the client node to be the centre of any communication in the network? Possibilities:
  • Nodes intercommunicate without intervention of the client
    • Less communication overhead and faster system as number of packets decreases. This requires any node to have a notion of the state or to know where to ask for it.
  • Nodes need to reply always to the client and don't know anything about the other ones
    • More traffic of packets and a possible bottleneck in the client. If client fails, system stops working. This implies that the client node will have a centralized global state and it must make sure that it's never lost.
  1. How do we want to achieve fault-tolerant persistence? For more information, check 'Other possible failures' here.
  2. Imagine there is only one backup node for a SiloRef and it fails. What should the client do? This gives some hints on a possible design decision: in addition to sending the transformation to the nodes, a client should persist it in a safe storage. In that case, what'd be such storage and the communication protocol?