My thinking here was that a permanent service should extend beyond the scope of the client used to register it (either directly or via the rest service) - what is the definition of "permanent" otherwise, therefore details of the service would be lost (not in memory) when the client was restarted anyway.

To avoid two different modes (registering client verses later client) I decided that no client should keep a record of it.
The alternative would have been to have all clients (watch zookeeper and) load permanent registrations from Zookeeper.

From a design perspective I see this alternative as perfectly reasonable too, its just its a bunch more work and still represents a change in current functionality.

What are your thoughts?