This repository was archived by the owner on Jul 16, 2024. It is now read-only.
-
Notifications
You must be signed in to change notification settings - Fork 87
ZeroMQ Island #157
Open
jdiez17
wants to merge
26
commits into
esa:master
Choose a base branch
from
jdiez17:zeromq
base: master
Could not load branches
Branch not found: {{ refName }}
Loading
Could not load tags
Nothing to show
Loading
Are you sure you want to change the base?
Some commits from the old base branch may be removed from the timeline,
and old review comments may become outdated.
Open
ZeroMQ Island #157
Conversation
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Also cleared some trailing whitespace and added a check to prevent zmq_island from sending solutions without having been initialised. trailing whitespace and
…lone zmq islands from archipelago on access
|
Is there any chance that this code can be merged into master, the addition of ZeroMQ would make this very applicable for clustered environments. |
Member
|
We are currently focussing our energies on an overhaul of PaGMO that should also solve its applicability to clustered environments. But it will take a while .... |
Sign up for free
to subscribe to this conversation on GitHub.
Already have an account?
Sign in.
Add this suggestion to a batch that can be applied as a single commit.
This suggestion is invalid because no changes were made to the code.
Suggestions cannot be applied while the pull request is closed.
Suggestions cannot be applied while viewing a subset of changes.
Only one suggestion per line can be applied in a batch.
Add this suggestion to a batch that can be applied as a single commit.
Applying suggestions on deleted lines is not supported.
You must change the existing code in this line in order to create a valid suggestion.
Outdated suggestions cannot be applied.
This suggestion has been applied or marked resolved.
Suggestions cannot be applied from pending reviews.
Suggestions cannot be applied on multi-line comments.
Suggestions cannot be applied while the pull request is queued to merge.
Suggestion cannot be applied right now. Please check back later.
At this point, the island is able to exchange solutions between peers, be embedded in archipelagos and act as a listener to monitor the status of a swarm of ZeroMQ islands. All of these capabilities are available in C++ (PaGMO) and Python (PyGMO).
Along with this code submission there is a set of static documents and IPython notebooks that describe the setup process, explain the island's API/user interface and intended use cases through examples, and show how to monitor the status of a ZeroMQ swarm. Additionally, there is language-specific documentation available for Python (in Sphinx) and C++ (in Doxygen).
The original project intended to use a brokerless approach for all network communications. We considered two approaches for brokerless operation: active, network-level broadcast messages (such as zeroconf), and passive port scanning. Due to the limitations of these techniques and the scope of cases in which islands can communicate, we chose to go with a centralised broker that is reachable by all nodes. An example of a situation in which active discovery or passive scanning is unsuitable: inter-datacenter communication.
The original intent was to write a custom broker in ZeroMQ/C++, but due to time constraints and other factors the current ZeroMQ island uses Redis as a broker. Replacing it would not be complicated, because the broker is only maintaining a map of channel tokens to a list of IP addresses and providing realtime communication. Both of these things are relatively simple uses of the different types of sockets that ZeroMQ provides.
Because we are using an external broker, some dependencies are added to the project. These dependencies are completely optional and will not affect users that choose to compile PaGMO without ZeroMQ support (this is the default behaviour).
A simple example: