As a framework for distributed system design, Featherweight
is equipped with the best messaging framework available
today for LabVIEW.
FTW Messaging Dictionary
a finite piece of data that contains at least
the presence of a control signal, and often additional data
we’ll call the payload
data carried along with the message
related to message payload, this is the set
of data associated
notion that other nodes in a network do not retain
memory or awareness of previous messages sent.
a conceptual hub into which messages
a physical (or virtual) entity that exists within a context
the collection of all nodes
a coherent subset of nodes on a network that interact
with one another to form an application or related set of applications
the coherent set of nodes that interact with
one another to
the physical (or virtual) space in which a finite,
bounded group of references exists.
the conceptual time and space in which all contexts (and
therefore all nodes) and all messages exist
ability of a sending endpoint to synchronously sense
that the recipient endpoint is currently unable to receive additional
messages because that remote endpoint’s receive buffer is full.
the relationship of entities with
respect to time. Entities are said to “temporally coexist”
for the period of time their lifetimes overlap
the period of time from which an entity exists to when
it is destroyed or self-destructs
the relationship of entities
with respect to physical (or virtual) context location.
Entities are said to “spatially coexist” if they reside
within the same context.
the conceptual object that exists within a socket to
which and from which messages flow.
another socket, local or remote
a string representing a UID within a context at which
an endpoint resides. No two endpoints may share the same address
Uniform Resource Identifier. A codified manner in which to
represent an address as per RFC xxxx.
Uniform Resource Locator.
the presence of a channel between one or more nodes
the process by which endpoints become aware of addresses
of other endpoints. There exists only four methods of discovery:
* receiving addresses synchronously at the spawning of one’s lifetime
* asking another node (a directory service) about the address of other nodes
* being told addresses by another node
* creating new endpoints (or nodes that are known to construct endpoints),
thus implicitly knowing the address before it exists
a central node that implements the ability be
aware of a set of addresses for other nodes/services
centralized message broker
ability of peer nodes to send and receive messages directly
without going through a single centralized broker
process by which an endpoint establishes
within the context of Featherweight, usage of
Transport Layer Security (TLS, [link to spec]) prior to establishing
process by which an endpoint declares itself as “listening”
on a local address (or set of addresses). Once listening for incoming
connection requests (from a remote
the ability to converse with a peer with minimal or no impact
from the physical or virtual location of the peer. A software
module designed such that it may reasonably be deployed on one
target or another (including, cross-platform and cross-architecture)
is said to be “location agnostic”, where peers are required to
do no more than update an address.
a command is a type of message that does not exist in
actor-oriented design! “Command” connotes the ability to control, and
an actor never is able to explicitly control
a message sent to an endpoint in expectation of a response.
A request/response pair
a special send/recv semantic where a request is sent to a peer
and a response is expected in return.
to send a message with no expectation of a response.
a message type (specifically, a request) that asks the
recipient node to destroy itself.
(synonymous with ‘reply’, the verb) a message sent to fulfill
a request transaction
(synonymous with ‘reply’, the noun)
process of resending a message that is lost (e.g., no confirmation
that the message was received by the remote endpoint)
space allocated at an endpoint capable of sending messages.
space allocated at an endpoint capable of receiving messages.
abbreviated “transport”, this is the physical and
virtual infrastructure used to actually perform the delivery of a
message from one endpoint to another. A message transport thus may have
many components, including send/recv buffers, intermediate brokers, transport
headers on a wire-level protocol, and so forth.
ability of a socket to send messages to more than one connected
endpoint. Nominally, the same message is sent to all connected sockets.
ability of a socket to receive messages from more than one connected
condition where a message resides within a portion
of the message queue where it cannot be rearranged with respect to other
messages resulting in a strict FIFO semantic.
the semantic applied to a socket that defines its
send/recv behavior and abilities
a socket type that sends messages on a channel and remains
unaware of the existence of [0, N) subscriber sockets connected to the channel.
Conceptually, messages flow as a stream and fan out to all subscribers, where
the loss of messages is tolerated.
a socket type capable of subscribing to a publisher
(or multiple unique publishers) in order to receive messages streamed from the
publisher. A subscriber should be able to tolerate lossiness.
a socket type that pushes messages into a message queue and
remains unaware of the existence of [0, N) consumer sockets consuming
the queue and [0, N) additional peer producer sockets pushing into the
a socket type that pulls messages from a message queue,
unaware of the existence of [0, N) producer sockets pushing
into the queue.
client (request) socket
server (reply) socket
conceptual ability of a publisher socket to produce independent
channels to which subscriber sockets can conditionally subscribe. This is
Priority and Urgency
Different messages have different semantic priorities.
Take the analogy of vehicles traveling on the same roadway.
A car with a family leisurely headed to an ice cream parlor has
less urgency and less priority than an ambulance rushing to the
Here, the vehicle represents the message, and the roadway represents
the message transport (recall, a #message-transport