6 ms·
I remember when tuple spaces were the new hotness and going to a presentation from GigaSpaces at my local JUG. And now I can't even remember the problem they s
by JackFr 4y ago
I remember when tuple spaces were the new hotness and going to a presentation from GigaSpaces at my local JUG.
And now I can't even remember the problem they solve or any potential use cases. Weird.
- Jtsummers 4y agoPrimary problem: Distribute work on heterogenous data across a cluster of heterogenous processes. Add new processes (either additional workers or additional capabilities) by attaching them to the existing shared tuple space. Add new data by wrapping it into a tuple and tossing it into the pile. Add a processor for the new data by having it search for a pattern that picks up the new tuple. Similar concept behind message queue based systems, service oriented architecture, and many, many others. Though more pull-based than push-based. You wouldn't explicitly launch a process, you have a process that sits around waiting to for a tuple to show up and then takes/copies it and does the work.
- cratermoon 4y ago> Add new data by wrapping it into a tuple and tossing it into the pile In David Gelernter's original work, it's not just data. In Linda, it's possible to put Objects in, which are little executable (`eval` in Linda terms) which a processor can manipulate through whatever interface the tuple type exposes.
- Jupe 4y agoThat does not sound very secure. Also, what's to stop another processor "finding" the Object before the intended recipient?
- cratermoon 4y ago1. Just bare like that, it's not. Unless, of course, the object requires a key to allow a processor to execute it. See for example Capability-Based Access Control 2. In TupleWorld, there's no concept of "the" intended recipient. The tuple's properties determine what kind of processor would match. If those properties happen to only match a single processor, you'd get that 1:1 mapping you want, but that's missing the point of tuple spaces.
- Jupe 4y agoJust coordinating the 1:1 mapping I might want is fraught with challenges. Network delays, out-of-order execution, stampeding herd situations, poison objects, processors crashing (or being rebooted) at random times... I'm not seeing the benefit of a "bag" of objects to be processed whenever by whoever or whatever. Perhaps this is attempting to solve a problem I've not come across. While it sounds interesting, I'm not sure I see the benefit? (Probably me just being short-sighted).
- cratermoon 4y agoIt's a way of doing massively parallel computations in a scatter/gather system. I suggest looking up the paper "Linda in Context. I'd provide a link but I'm on my phone.
- Jtsummers 4y agoHere you go (not on mobile): https://dl.acm.org/doi/10.1145/63334.63337 https://dl.acm.org/doi/10.1145/63334.63337 (free access)
- cratermoon 4y agoAlso worth reading are the "Linda Letters" from Communications of the ACM, October 1989, vol 32, no 10, p 1244. I found an excerpt at https://web.archive.org/web/20160901000000*/https://www.cypherpunks.to/erights/history/clp/linda-letters.pdf https://web.archive.org/web/20160901000000*/https://www.cyph..., starting on page 4 of the PDF
- infinite8s 4y agoSomehow this model works to build complex organisms in embryology...
- dllthomas 4y agoStill have a problem with viruses, though...
- infinite8s 4y agoThis exactly. Sadly the idea went through a low pass filter and just became a way to pass around dumb data objects.
- cratermoon 4y agoIt's not unlike the Blackboard system pattern (https://en.wikipedia.org/wiki/Blackboard_system#Metaphor https://en.wikipedia.org/wiki/Blackboard_system#Metaphor) in that respect, but Gelertner had something more ambitious in mind.
- brazzy 4y agoHonestly, I suspect the other, fancier parts of the idea were more like a solution in search of a problem.
- kqr 4y agoThe way I think about it is as the ultimate decoupling between producer and consumer. Bundling producer and consumer together into one unit spatially couples them. But even if the producer runs as a separate service that waits for requests from the consumer the interaction is still temporally coupled. By having the producer gradually update the responses to all possible queries to a tuple space, completely on its own schedule, there is not even temporal coupling between it and the consumer.