Comments (3)
Hi David,
The core Cloud Haskell infrastructure (distributed-process
) does not provide any functionality for node discovery or node creation. You can spawn processes to, and monitor, nodes with arbitrary node IDs (NIDs). As such, distributed-process
certainly makes no assumptions about the dynamics of the network topology.
The origin of those node IDs is the province of Cloud Haskell backends. So it is conceivable that some backends might assume a static network topology, whereas others might work with dynamic network topologies. At the moment there is only a single backend available, called distributed-process-simplelocalnet
(and we are working on an Azure backend). This provides a findPeers
function which uses a UDP broadcast to discover peer nodes -- hence, it too does not assume that the network is static. I am therefore a bit surprised that you got the impression Cloud Haskell assumes a network topology. If you can tell me what part of the documentation gave you this impression, I'd appreciate it so that I can fix it.
A major reason for separating the Cloud Haskell core from the Cloud Haskell backend on one side and from the underlying network transport (as abstracted by network-transport
) is precisely so that it would be possible to design backends for specific infrastructures such as the one you sketch above.
So although Cloud Haskell as it stands doesn't provide specific functionality for the kind of things you enumerate, it won't get in your way either, and the architecture is expressly designed to support the design of such backends. I would suggest to have a look at the distributed-process-simplelocalnet
backend. It is only small, and it might serve as a good starting point. If you have questions, feel free to ask me -- here, at [email protected] or on #haskell.
from distributed-process.
Hi Edsko,
Thanks for the response. I think I was thrown off by the type signature
startMaster :: Backend -> ([NodeId] -> Process ()) -> IO ()
where the NodeId
list is determined once and for all just before starting the master process. This, combined with my recollections from reading the original Cloud Haskell paper, made me think that the set of slaves could not be added to during the running of the program.
After reading the source for distributed-process-simplelocalnet
, it's clear that this is not the case. startMaster
is not right for my purposes, but it looks like the more general features of distributed-process-simplelocalnet
are already pretty close to what I want. In particular, the list of slaves can grow at any time as the discoveryDaemon receives new messages. I guess I need to add some functionality for pruning the list of slaves when processes get killed or suspended. I think I can figure this out.
Thanks,
David
from distributed-process.
I see. I have added the following comment to 'startMaster':
-- If you start more slave nodes after having started the master node, you can
-- discover them with later calls to 'findSlaves', but be aware that you will
-- need to call 'redirectLogHere' to redirect their logs to the master node.
Hopefully that will avoid confusion. I'm glad that you think distributed-process-simplelocalnet
might be a good starting point; as I mentioned before, if you get stuck somewhere, feel free to ask me any questions you might have.
from distributed-process.
Related Issues (20)
- Could not deduce (MonadFail Process) arising from a use of ‘fail’ HOT 1
- whereisRemoteAsync does not work via LAN HOT 1
- maintainance issue w.r.t. STM dependency & GHC version compatibility
- broken link in repo description HOT 3
- Generalize call to take a `Closure (SerializableDict a)`
- Revamp/Update CI
- Revamp CI on distributed-process
- Evaluate CI providers HOT 3
- Would it be possible to send and receive CH messages from potentially untrusted sources HOT 1
- Support for distributed traces
- Revamp docs site on distributed process
- Establish support window & upgrade plan
- Address Intermittently failing tests HOT 1
- Remove rematch dependency in distributed-process-tests HOT 1
- Build failure with ghc-9.2.4 `Expecting one more argument to ‘TyVarBndr’` HOT 2
- Can’t build with GHC 9.2.5 HOT 1
- No instance for (binary-0.8.5.1:Data.Binary.Class.Binary Main.Message) HOT 1
- New release? HOT 5
- Add LaurentRDC to the hackage maintainers list HOT 3
- Add davidsd and LaurentRDC to hackage maintainers list for `distributed-process-tests` HOT 1
Recommend Projects
-
React
A declarative, efficient, and flexible JavaScript library for building user interfaces.
-
Vue.js
🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.
-
Typescript
TypeScript is a superset of JavaScript that compiles to clean JavaScript output.
-
TensorFlow
An Open Source Machine Learning Framework for Everyone
-
Django
The Web framework for perfectionists with deadlines.
-
Laravel
A PHP framework for web artisans
-
D3
Bring data to life with SVG, Canvas and HTML. 📊📈🎉
-
Recommend Topics
-
javascript
JavaScript (JS) is a lightweight interpreted programming language with first-class functions.
-
web
Some thing interesting about web. New door for the world.
-
server
A server is a program made to process requests and deliver data to clients.
-
Machine learning
Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.
-
Visualization
Some thing interesting about visualization, use data art
-
Game
Some thing interesting about game, make everyone happy.
Recommend Org
-
Facebook
We are working to build community through open source technology. NB: members must have two-factor auth.
-
Microsoft
Open source projects and samples from Microsoft.
-
Google
Google ❤️ Open Source for everyone.
-
Alibaba
Alibaba Open Source for everyone
-
D3
Data-Driven Documents codes.
-
Tencent
China tencent open source team.
from distributed-process.