README.md
This commit is contained in:
parent
a9b4baa05a
commit
9090d28261
|
@ -0,0 +1,67 @@
|
||||||
|
# Syndicate/rs
|
||||||
|
|
||||||
|
A Rust implementation of:
|
||||||
|
|
||||||
|
- the Syndicate network protocol, including
|
||||||
|
- a high-speed Dataspace indexing structure (see
|
||||||
|
[HOWITWORKS.md](https://git.syndicate-lang.org/syndicate-lang/syndicate-rkt/src/commit/90c4c60699069b496491b81ee63b5a45ffd638cb/syndicate/HOWITWORKS.md)
|
||||||
|
from `syndicate-rkt`),
|
||||||
|
- a standalone Syndicate protocol *broker* service, and
|
||||||
|
- a handful of [examples](examples/).
|
||||||
|
|
||||||
|
![The Syndicate/rs server running.](syndicate-rs-server.png)
|
||||||
|
*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.
|
Binary file not shown.
After Width: | Height: | Size: 183 KiB |
Loading…
Reference in New Issue