|
3 weeks ago | |
---|---|---|
backend | 2 months ago | |
cmd | 3 weeks ago | |
coap | 2 months ago | |
eris | 2 months ago | |
http | 2 months ago | |
testdata | 3 months ago | |
.envrc | 3 months ago | |
.gitignore | 3 weeks ago | |
LICENSE | 2 years ago | |
README.md | 3 weeks ago | |
eris_test.go | 3 weeks ago | |
go.mod | 3 weeks ago | |
go.sum | 3 weeks ago | |
main.go | 3 weeks ago |
README.md
Eris
Go implementation of the Encoding for Robust Immutable Storage (ERIS).
Store Backends
- BadgerDB - badger.go
- Bolt - bolt.go
- CoAP+TCP - coap_client.go
Servers
- CoAP, CoAP+TCP - coap_server.go
- HTTP - http_server.go
Programs
Include an eris-go
utility that includes a server and clients for geting and
putting content.
Meshing
The eris-go server
program is simple but has enough features to build a
storage mesh.
Imagine the following the running on a highly-available file-server:
### file-server.host
eris-go server \
--coap "[::]:5683" \ # listen for any CoAP clients
--http "" \ # do not listen for HTTP
"bolt+file:///srv/eris.bolt?get&put" \
# allow GET and PUT to a file-backed database
On a laptop:
### laptop.host
eris-go server \
--coap "[::1]" \ # enable CoAP for node-local clients
--http "[::1]" \ # enable HTTP for node-local clients
--decode \ # decode ERIS URNs to HTTP streams
"coap+tcp://file-server.host:5683?get&put" \
# GET and PUT to the file-server
"bolt+file:///var/cache/eris.bolt?get&put?cache" \
# GET and PUT to local storage, cache any GET
In this configuration any content that is PUT to the CoAP server running on the laptop will be mirrored to the file-server and the local database. Any GET request this is satisfied but not by the local database (from the file-server) will be PUT into the database.
The drafting of the ERIS specification and this implementation was funded by the NGI Assure Fund, a fund established by NLnet with financial support from the European Commission's Next Generation Internet program.