ensign

module
v0.4.0 Latest Latest
Warning

This package is not in the latest version of its module.

Go to latest
Published: Feb 14, 2023 License: BSD-3-Clause

README

Ensign

An eventing platform that is distributed in time and space.

Quick Start

Build the docker compose images:

$ ./containers/build.sh build

Then once the images are built run the docker containers:

$ ./containers/build.sh up

You can then run publishers and subscribers using the debug command to generate 30 events per second:

$ go run ./cmd/debug generate

And to create a subscriber to consume the events:

$ go run ./cmd/debug consume

Documentation

The primary Ensign documentation is published in this repo in the docs/ directory as a Hugo site using the hugo-book theme.

The API documentation will be online on pkg.go.dev when we make this repository open source. Until then you can view the API documentation locally using godoc.

Hugo Documentation

First, ensure you have hugo installed by following the hugo installation instructions for your operating system. On OS X the simplest way to do this is with homebrew:

$ brew install hugo

Change directories into the docs/ directory. Note all of the following commands assume that your current working directory is docs/.

To run the local hugo development server:

$ hugo serve -D

You should now be able to view the docs locally at http://localhost:1313. If you get something that looks like this error:

code: template for shortcode "hint" not found

try

$ git submodule update --init --recursive

To create a new documentation page:

$ hugo new path/to/page.md

This will create a new page with the documentation default template; open in a browser and edit in markdown; your changes should reload live in the browser! Our theme has many options and shortcodes; to see how these work, please viist the theme documentation. A couple of important quick links are below:

To help with generating and updating markdown tables, we recommend:

API Documentation

First, ensure you have godoc installed:

$ go install golang.org/x/tools/cmd/godoc@latest

You can then run the API documentation locally using:

$ godoc --http=:6060

The docs should be available shortly when you open your browser to http://localhost:6060/pkg/github.com/rotationalio/ensign/pkg/.

Directories

Path Synopsis
cmd
pkg
api
ensign
Package ensign implements the Ensign single node server.
Package ensign implements the Ensign single node server.
ensign/mock
Package mock implements an in-memory gRPC mock Ensign server that can be connected to using a bufconn.
Package mock implements an in-memory gRPC mock Ensign server that can be connected to using a bufconn.
ensign/o11y
Package o11y (a numeronym for "observability") exports server-specific metric collectors to Prometheus for monitoring of the service and Ensign nodes.
Package o11y (a numeronym for "observability") exports server-specific metric collectors to Prometheus for monitoring of the service and Ensign nodes.
ensign/store
Ensign maintains two separate storage locations on disk: the event store which is intended to be an append-only fast disk write for incoming events and a meta store which is used to persist operational metadata such as topic and placement information.
Ensign maintains two separate storage locations on disk: the event store which is intended to be an append-only fast disk write for incoming events and a meta store which is used to persist operational metadata such as topic and placement information.
quarterdeck/authtest
Package authtest provides helper functionality for testing authentication with Quarterdeck as simply as possible.
Package authtest provides helper functionality for testing authentication with Quarterdeck as simply as possible.
quarterdeck/db
Package db establishes a connection with a Raft replicated sqlite3 database.
Package db establishes a connection with a Raft replicated sqlite3 database.
quarterdeck/keygen
Package keygen provides functionality for generating API client IDs and secrets.
Package keygen provides functionality for generating API client IDs and secrets.
utils/mtls
Package mtls has helper functionality for organizing and maintaining key material on disk and establishing connections between servers and clients using mTLS cryptography.
Package mtls has helper functionality for organizing and maintaining key material on disk and establishing connections between servers and clients using mTLS cryptography.
utils/probez
Package probez provides a simple http server that implements Kubernetes readiness probes (e.g.
Package probez provides a simple http server that implements Kubernetes readiness probes (e.g.
utils/service
Package service unifies how our HTTP services run to deduplicate code between different microservices.
Package service unifies how our HTTP services run to deduplicate code between different microservices.
utils/ulid
Package ulid is a lightweight wrapper around the github.com/oklog/ulid package that provides some common functionality (like checking if a ULID is null or is zero) as well as a process-global, cryptographically random, monotonic, and thread-safe ulid generation mechanism that can be used from external packages.
Package ulid is a lightweight wrapper around the github.com/oklog/ulid package that provides some common functionality (like checking if a ULID is null or is zero) as well as a process-global, cryptographically random, monotonic, and thread-safe ulid generation mechanism that can be used from external packages.
sdks
go

Jump to

Keyboard shortcuts

? : This menu
/ : Search site
f or F : Jump to
y or Y : Canonical URL