Skip to content

Distributed Systems

Dan Bohus edited this page Feb 8, 2022 · 1 revision

A distributed \psi system may have many separate pipelines running in separate processes, on separate machines, publishing and subscribing to streams being conveyed using various protocols. The following pieces of infrastructure are available for building such systems with \psi:

  • Microsoft.Psi.Remoting contains the RemoteExporter and RemoteImporter components allowing streams to be serialized and transmitted between \psi processes and/or machines. This is the preferred means of conveying streams between \psi pipelines. RemoteClockExporter/RemoteClockImporter components may also be used to synchronize the pipeline clocks when \psi processes run on separate machines.
  • Microsoft.Psi.Interop components and classes facilitate bridging to other ecosystems over ZeroMQ, raw TCP sockets or via flat files, with JSON, MessagePack, CSV or custom serialization of \psi streams.
  • Microsoft.Psi.Interop.Rendezvous is a system for communicating information about the endpoints in a distributed \psi system. The rendezvous system allows many processes (\psi pipelines, Python, ...) to advertise their available streams and to discover those of other pipelines.
Clone this wiki locally