[nanomsg] Re: RFC links

  • From: Paul Colomiets <paul@xxxxxxxxxxxxxx>
  • To: nanomsg@xxxxxxxxxxxxx
  • Date: Wed, 21 Aug 2013 21:49:10 +0300

Hi Alex,

On Wed, Aug 21, 2013 at 8:53 PM, Alex Elsayed <eternaleye@xxxxxxxxx> wrote:
> RPCBIND is really quite horrid

Does this impression come from real usage or the theoretical one? I
know a little bit only in theory, so the practical experience would be
much appreciated.

> It allocates the service ports dynamically (so
> you have to use portreserve or the like to prevent it from taking something
> important which is needed elsewhere)

That's not a big problem IMO. I can easily find an unused port range.

> AND adds a roundtrip on connect because
> it needs to ask the portmapper service what port the real service is running
> on.
>

This is not problem either. My use cases for zeromq/nanomsg use
persistent connections for ages, so less than millisecond roundtrip at
connection initiation is not an issue. Sure, if you allocate lots of
short-lived connections you should have an option to skip rpcbind.

> What I'd see for *local/internal* service listing is using
> Avahi/Zeroconf/MDNS. It's based on DNS, but it's sent out by every
> participating host. DNS for WAN, Zeroconf for LAN.
>

Maybe I'm paranoid. But Zeroconf looks too dangerous for production
stuff. Too easy to misuse (e.g. propagate development node with
production name or to forget disable mdns on failing node).

> For a public service, you'd really want a real DNS name anyway, just like
> (say) an MX record.
>

For public service yes. DNS is the best choice. But its much more
different problem space. For public service usually relatively few
gateway servers are allocated which:

1. Change very rarely, say once a day (in the real practice once a
year or so), comparing to hourly change of the number of computing
nodes (and subsecond changes in case of failover)

2. Implement failover by making client switch to lower priority
addresses, comparing to failover by removing and adding nodes for
in-data-center problems

So DNS matches this case well.

> If this is a local network, then each host is announcing its own services over
> Zeroconf, so just reconnecting to that host would fetch the updated  record.
>

If so, how would node know when to reconnect?

-- 
Paul

Other related posts: