Tony Garnock-Jones 4db9511b12 | ||
---|---|---|
benches | ||
examples | ||
protocols | ||
src | ||
.gitignore | ||
Cargo.lock | ||
Cargo.toml | ||
Makefile | ||
README.md | ||
build.rs | ||
rust-toolchain | ||
syndicate-rs-server.png |
README.md
Syndicate/rs
A Rust implementation of:
- the Syndicate network protocol, including
- a high-speed Dataspace indexing structure (see
HOWITWORKS.md
from
syndicate-rkt
), - a standalone Syndicate protocol broker service, and
- a handful of examples.
The Syndicate/rs server running.
Quickstart
git clone https://git.syndicate-lang.org/syndicate-lang/syndicate-rs
cd syndicate-rs
cargo build --release
./target/release/syndicate-server
Running the examples
In one window, start the server:
./target/release/syndicate-server
Then, choose one of the examples below.
Producer/Consumer (sending messages)
In a second window, run a "consumer" process:
./target/release/examples/consumer
Finally, in a third window, run a "producer" process:
./target/release/examples/producer
State producer/consumer (state replication)
Replace producer
with state-producer
and consumer
with
state-consumer
, respectively, in the instructions of the previous
subsection to demonstrate Syndicate state replication.
Pingpong example (latency)
In a second window, run
./target/release/examples/pingpong pong
and in a third window, run
./target/release/examples/pingpong ping
The order is important - the difference between ping
and pong
is
about who kicks off the pingpong session.
Performance note
You may find better performance by restricting the server to fewer cores than you have available. For example, for me, running
taskset -c 0,1 ./target/release/syndicate-server
roughly quadruples throughput for a single producer/consumer pair, on my 48-core AMD CPU.