W
Water Cooler v2
Machine A needs to send a message to machine B. Machine A has a static
IP but machine B does not.
One option I could think of to solve this problem is that machine B
opens a TCP connection to machine A and then machine A sends the data/
message to machine B. However, this solution has the following
limitations:
a) It is not scalable if there are many such machines as machine B to
whom/which the data has be sent. It might be a kill on the resources
of machine A.
b) It is machine A that needs to send the data when it wants. Machine
B does not know *when* there will be data for it. In the current
design, machine B will have to keep polling machine A repeatedly with
a TCP connection asking if it has any data for it or not. This can get
expensive if there are many machine B's.
Is there a less expensive way to solve this problem? The Observer
design pattern comes to mind. Machine B could subscribe to a
notification from machine A to inform it when data becomes available.
However, how does one implement the pattern in a distributed
environment when machine B does not have a static IP?
Observer aside, is there a way other than using raw sockets for
machine A to send that data to machine B, that would be less expensive?
IP but machine B does not.
One option I could think of to solve this problem is that machine B
opens a TCP connection to machine A and then machine A sends the data/
message to machine B. However, this solution has the following
limitations:
a) It is not scalable if there are many such machines as machine B to
whom/which the data has be sent. It might be a kill on the resources
of machine A.
b) It is machine A that needs to send the data when it wants. Machine
B does not know *when* there will be data for it. In the current
design, machine B will have to keep polling machine A repeatedly with
a TCP connection asking if it has any data for it or not. This can get
expensive if there are many machine B's.
Is there a less expensive way to solve this problem? The Observer
design pattern comes to mind. Machine B could subscribe to a
notification from machine A to inform it when data becomes available.
However, how does one implement the pattern in a distributed
environment when machine B does not have a static IP?
Observer aside, is there a way other than using raw sockets for
machine A to send that data to machine B, that would be less expensive?