1 unstable release
0.1.0 | Sep 7, 2020 |
---|
#9 in #dap
13KB
329 lines
𓃢 DARS
DARS is an asynchronous DAP/2 server written in Rust aimed at being fast and lightweight. It supports a subset of the OPeNDAP protocol. It aims to only serve the DAP
protocol, not common services like a catalog or a WMS.
See below for installation instructions.
OPeNDAP server implementation and file formats
Variable and hyperslab constraints, except strides, are implemented. File formats based on HDF5
are supported:
HDF5 is read through hidefix, which is an experimental HDF5 reader for concurrent reading.
Some simple benchmarks
It is difficult to do meaningful benchmarks. However, here is an attepmt to show a simple comparsion between Dars, Thredds and Hyrax. See comparsion/report.md and comparison/benchmarks.sh for more details. wrk is used to measure the maximum requests per second for a duration using 10 concurrent connections. For Thredds and the large dataset wrk2 was used with a limit on 2 request/sec to avoid too many Out-of-memory-errors. The servers were run one at the time using their default docker images. It would be interesting to show latency (hdr)histograms for the different tests, but the performance (acceptable latency at certain requests per second) between the servers is so different that it is difficult to make any meaningful plots. Still, they should be included in further analysis, but done individiually for each server.
It is also interesting to note that the server load was very different during these benchmarks:
Installation and basic usage
Set up rustup nightly.
Running from the repository:
$ cargo run --release
or install with:
$ cargo install --path dars
By default a simple catalog can be explored using a browser, if the catalog is
disabled a list of datasets and DAP URLs can be queried at:
http://localhost:8001/data/
(use curl -Haccept:application/json http://localhost:8001/data/
to get JSON). Use e.g. ncdump -h http://..
to
explore the datasets.
Docker
Use gauteh/dars or build yourself:
$ docker build -t dars .
$ docker run -it -p 8001:8001 dars
mount your data at /data
.
Dependencies
~20–32MB
~511K SLoC