Skip to content

just1not2/ttrpc

This branch is 5 commits behind containerd/ttrpc:main.

Folders and files

NameName
Last commit message
Last commit date
Feb 29, 2024
Feb 21, 2024
Mar 5, 2022
Feb 2, 2024
Aug 30, 2022
Jun 27, 2018
Feb 16, 2022
Jul 6, 2022
Feb 21, 2022
Mar 5, 2022
Mar 8, 2023
Nov 13, 2017
Mar 8, 2023
Apr 19, 2022
Jul 6, 2022
Feb 29, 2024
Aug 27, 2024
Aug 21, 2024
Jun 19, 2024
Feb 16, 2022
Feb 16, 2022
Aug 25, 2023
Mar 2, 2022
Aug 27, 2024
Jun 19, 2024
Jun 19, 2024
Jan 21, 2022
Apr 8, 2022
Aug 25, 2023
Jun 13, 2019
Jun 13, 2019
Aug 30, 2022
Feb 16, 2022
Sep 16, 2024
Feb 16, 2022
Sep 16, 2024
Feb 3, 2024
Aug 23, 2019
May 8, 2023
Apr 8, 2022
Apr 8, 2022
Apr 8, 2022
Jan 21, 2022

Repository files navigation

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.

About

GRPC for low-memory environments

Resources

License

Stars

Watchers

Forks

Packages

No packages published

Languages

  • Go 94.1%
  • Makefile 4.4%
  • Shell 1.5%