marketplace-2014/marketplace/scribblings/concepts.scrbl

83 lines
2.7 KiB
Racket
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

#lang scribble/manual
@require[racket/include]
@include{prelude.inc}
@title{Concepts}
Marketplace integrates ideas from both distributed systems and
virtualized operating system designs to obtain an architecture of
nested @emph{virtual machines}. Each nested layer is equipped with its
own publish/subscribe network that also propagates @emph{presence}
information about the (dis)appearance of services.
The result suggests a @emph{marketplace} metaphor, where communicating
programs exist in a noisy, crowded, even chaotic context, rather than
in a quiet place systematically going through their inboxes.
@section{What is a process, what are event handlers?}
@deftech[#:key "process"]{Processes} are ...
@deftech{Process State} is ...
@deftech{Events} ...
@deftech{Actions} ...
@section{What is a VM?}
@deftech[#:key "vm"]{Virtual Machines (VMs)} are ...
@section{Endpoints: Subscription and Advertisement}
The Marketplace operating system's inter-process communication
facility is structured around @deftech[#:key
"pub/sub"]{publish/subscribe (pub/sub)} messaging.@note{For a survey
of pub/sub messaging, see
@hyperlink["http://www.cs.ru.nl/~pieter/oss/manyfaces.pdf"]{"The Many
Faces of Publish/Subscribe"}, ACM Computing Surveys, Vol. 35, No. 2,
June 2003, pp. 114131. There's also plenty out there on the Internet;
a good starting point is to google for
@hyperlink["https://www.google.com/search?q=pub/sub message-oriented middleware"]{pub/sub message-oriented middleware}.}
@deftech{Endpoints} are ...
A @deftech{role} describes the role some process is playing in a
conversation. Concretely, roles are represented by @racket[Role]
structures. A role can be used by the currently-running process to
describe some role it wishes to play, or can be carried in some
@racket[EndpointEvent] to describe the role some @emph{peer} process
is playing in a conversation.
Roles have three parts:
@itemlist[
@item{An @deftech{orientation} (type @racket[Orientation]) describes
whether this role is concerned primarily with @emph{producing} or
@emph{consuming} messages.}
@item{A @deftech{topic} is a @deftech{pattern} over messages. Topics
perform double duty: they both scope conversations and filter
incoming messages. More on topics below.}
@item{An @deftech{interest-type} (type @racket[InterestType])
determines whether the endpoint playing the given role is genuinely
a participant in matching conversations or is simply observing the
real participants. More on interest-types below.}
]
@deftech{Messages} are ...
@subsection{Topics}
As mentioned above, topics ...
@subsection{Interest Types}
...
@section{Presence}
@section{Nesting, relaying, and levels of discourse}