• Stars
    star
    522
  • Rank 81,574 (Top 2 %)
  • Language
    Go
  • License
    Apache License 2.0
  • Created over 6 years ago
  • Updated 15 days ago

Reviews

There are no reviews yet. Be the first to send feedback to the community and the maintainers!

Repository Details

GRPC for low-memory environments

ttrpc

Build Status

GRPC for low-memory environments.

The existing grpc-go project requires a lot of memory overhead for importing packages and at runtime. While this is great for many services with low density requirements, this can be a problem when running a large number of services on a single machine or on a machine with a small amount of memory.

Using the same GRPC definitions, this project reduces the binary size and protocol overhead required. We do this by eliding the net/http, net/http2 and grpc package used by grpc replacing it with a lightweight framing protocol. The result are smaller binaries that use less resident memory with the same ease of use as GRPC.

Please note that while this project supports generating either end of the protocol, the generated service definitions will be incompatible with regular GRPC services, as they do not speak the same protocol.

Protocol

See the protocol specification.

Usage

Create a gogo vanity binary (see cmd/protoc-gen-gogottrpc/main.go for an example with the ttrpc plugin enabled.

It's recommended to use protobuild to build the protobufs for this project, but this will work with protoc directly, if required.

Differences from GRPC

  • The protocol stack has been replaced with a lighter protocol that doesn't require http, http2 and tls.
  • The client and server interface are identical whereas in GRPC there is a client and server interface that are different.
  • The Go stdlib context package is used instead.

Status

TODO:

  • Add testing under concurrent load to ensure
  • Verify connection error handling

Project details

ttrpc is a containerd sub-project, licensed under the Apache 2.0 license. As a containerd sub-project, you will find the:

information in our containerd/project repository.

More Repositories

1

containerd

An open and reliable container runtime
Go
15,092
star
2

nerdctl

contaiNERD CTL - Docker-compatible CLI for containerd, with support for Compose, Rootless, eStargz, OCIcrypt, IPFS, ...
Go
7,283
star
3

cgroups

cgroups package for Go
Go
1,025
star
4

runwasi

Facilitates running Wasm / WASI workloads managed by containerd
Rust
962
star
5

cri

Moved to https://github.com/containerd/containerd/tree/master/pkg/cri . If you wish to submit issues/PRs, please submit to https://github.com/containerd/containerd
Go
905
star
6

stargz-snapshotter

Fast container image distribution plugin with lazy pulling
Go
884
star
7

accelerated-container-image

A production-ready remote container image format (overlaybd) and snapshotter based on block-device.
Go
376
star
8

imgcrypt

OCI Image Encryption Package
Go
316
star
9

overlaybd

Overlaybd: a block based remote image format. The storage backend of containerd/accelerated-container-image.
C++
230
star
10

ttrpc-rust

Rust implementation of ttrpc (GRPC for low-memory environments)
Rust
191
star
11

console

console package for Go
Go
165
star
12

rust-extensions

Rust crates to extend containerd
Rust
153
star
13

go-runc

runc bindings for Go
Go
152
star
14

go-cni

A generic CNI library to provide APIs for CNI plugin interactions
Go
142
star
15

nydus-snapshotter

A containerd snapshotter with data deduplication and lazy loading in P2P fashion
Go
141
star
16

continuity

A transport-agnostic, filesystem metadata manifest system
Go
137
star
17

nri

Node Resource Interface
Go
128
star
18

protobuild

Build protobufs in Go, easily
Go
122
star
19

fifo

fifo pkg for Go
Go
85
star
20

project

Cross-project utilities, scripts, etc.
Shell
71
star
21

zfs

ZFS snapshotter plugin for containerd
Go
64
star
22

btrfs

Btrfs bindings for Go
Go
63
star
23

typeurl

Go package for managing marshaled types to protobuf.Any
Go
49
star
24

containerd.io

Website repo for https://containerd.io
JavaScript
38
star
25

release-tool

A release tool for generating detailed release notes
Go
32
star
26

fuse-overlayfs-snapshotter

fuse-overlayfs plugin for rootless containerd
Go
30
star
27

aufs

AUFS Snapshotter for containerd
Go
26
star
28

ltag

Prepends project files with given template.
Go
16
star
29

project-checks

This cross-project repository holds utilities, scripts, and common files used across the containerd master project and many sub-projects within the containerd organization
Shell
5
star