Ticket #1557 (closed proposed-project: wontfix)
intelligent mobile Haskell code
| Reported by: | agocorona | Owned by: | |
|---|---|---|---|
| Priority: | not yet rated | Keywords: | mobile code |
| Cc: | Topic: | Networking | |
| Difficulty: | 1 person Summer | Mentor: | not-accepted |
Description (last modified by agocorona) (diff)
Dynamic optimization of CPU and bandwidth resources in a network of nodes. Components:
1 1st phase: remote install. 2nd phase: Remote eval, remote fork and optionally "moveTo" primitives.
2 service/node discovery
3 distribution & syncronization of data: "split", "clone" and "merge" primitives
4 information exchange over "intelligent" channels that memorize bandwith usage and bandwith limits so they can detect bottlenecks.
5 The presentation, processing and data storage exchange of data is made trough these intelligent channels
6 Configurable rules that relocate and/or clone process and storage depending on the CPU and bandwith usage of their channels.
This could solve a number of different system architecture problems that are related with the lack of knowledge of resources at design /installation time: The goal is to allow the application architecture to be defined at runtime:
- A Web/client-server application can become local
- Remote data access can become local + syncronized
- Dymamic relocation of the three tiers in a single node when in stand alone mode,
- Expansion when available nodes.
- Automatic optimization of processing and data clustering when new nodes available.
Haskell allow for definitions of type classes with default definitions for complex primitives like, for example, synchronization. At the same time it is flexible enough to define when syncronization scenarios are permitted or not, so that automatic or semiatomatic rules can be applied depending on the nature of the data and the application specification. It is also possible to define clear interfaces for stateless, data storage and stateful processes, the latter one considered as a stateless + a data storage process.
Some implementations of distributed haskell define some primitives that fill the specifications 1 and 2.
mHaskell is the most complete and may be a good start ( http://www.macs.hw.ac.uk/~dubois/mhaskell/)
