Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Client can decide which url to connect to #26

Open
asmodehn opened this issue May 18, 2017 · 1 comment
Open

Client can decide which url to connect to #26

asmodehn opened this issue May 18, 2017 · 1 comment
Milestone

Comments

@asmodehn
Copy link
Member

Currently we use the 'name' as a unique id and discovery primitive.
And we rely on an external mechanism transmitting the name to another process, to be able to do discovery.

This is bad for few reasons :

  • naming a node tend to make people give "responsibilities" to one node / process, making the structure quite brittle (one process crash, then nothing relying on this feature works aymore...)
  • it introduce an intermediary, where we could directly use the ZMQ url (or any network uid primitive depending on our network implementation.
  • we do not have a clear API for the user to make it obvious how to discover a running system.

Before we can do complex things like auto discovery, we need to build a simple and obvious API for "manual discovery"

@asmodehn
Copy link
Member Author

So we should probably :

  • drop the "name" concept for a node, assigning uuids only.
  • when starting a node, it should return the socket address url that a client can use to later discover the services available on that node.
  • nodes url should be propagated up the startign tree : a node starting another node dynamically somehow needs to propagate the url to connect to the nodes he started.

As a result a node is supposed to manage his own children for start / stop / exception / error / etc.
Although the structure is also a tree, this does NOT match the loggers structures, as the loggers should be defined by functionalities (ie : my.special.algorithm) where the nodes should be entirely redundant and replaceable (ie: 123252.242342.33438)

=> This implies that our logging system (TODO) needs to weave multiple nodes output in the same log file, while dealing with concurrency issues.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Projects
None yet
Development

No branches or pull requests

1 participant