All Projects → containerd → Ttrpc

containerd / Ttrpc

Licence: apache-2.0
GRPC for low-memory environments

Programming Languages

go
31211 projects - #10 most used programming language
golang
3204 projects

Projects that are alternatives of or similar to Ttrpc

metacom
RPC communication protocol for Metarhia stack 🔌
Stars: ✭ 42 (-82.2%)
Mutual labels:  stream, protocol, rpc
Jstp
Fast RPC for browser and Node.js based on TCP, WebSocket, and MDSF
Stars: ✭ 132 (-44.07%)
Mutual labels:  rpc, protocol
Go Grpc
A collection of gRPC and Go examples showcasing features of the framework
Stars: ✭ 127 (-46.19%)
Mutual labels:  grpc, rpc
Dop
JavaScript implementation for Distributed Object Protocol
Stars: ✭ 163 (-30.93%)
Mutual labels:  rpc, protocol
Pool
General Purpose Connection Pool for GRPC,RPC,TCP Sevice Cluster
Stars: ✭ 98 (-58.47%)
Mutual labels:  grpc, rpc
Rpc Framework Tutorials
Java分布式RPC服务框架教程,包括 Dubbo/Dubbox, Motan, gRPC.
Stars: ✭ 114 (-51.69%)
Mutual labels:  grpc, rpc
Ginrpc
gin auto binding,grpc, and annotated route,gin 注解路由, grpc,自动参数绑定工具
Stars: ✭ 157 (-33.47%)
Mutual labels:  grpc, rpc
Lnd Grpc Client
A python grpc client/async client for LND ⚡⚡⚡
Stars: ✭ 26 (-88.98%)
Mutual labels:  grpc, rpc
Evans
Evans: more expressive universal gRPC client
Stars: ✭ 2,710 (+1048.31%)
Mutual labels:  grpc, rpc
Go Grpc Examples
This repo contains examples and implementations of different types of GRPC services and APIs using Golang.
Stars: ✭ 180 (-23.73%)
Mutual labels:  grpc, rpc
Magiconion
Unified Realtime/API framework for .NET platform and Unity.
Stars: ✭ 2,505 (+961.44%)
Mutual labels:  grpc, rpc
Docker Cloud Platform
使用Docker构建云平台,Docker云平台系列共三讲,Docker基础、Docker进阶、基于Docker的云平台方案。OpenStack+Docker+RestAPI+OAuth/HMAC+RabbitMQ/ZMQ+OpenResty/HAProxy/Nginx/APIGateway+Bootstrap/AngularJS+Ansible+K8S/Mesos/Marathon构建/探索微服务最佳实践。
Stars: ✭ 86 (-63.56%)
Mutual labels:  grpc, rpc
Kubemq
KubeMQ is Enterprise-grade message broker native for Docker and Kubernetes
Stars: ✭ 58 (-75.42%)
Mutual labels:  grpc, rpc
Purerpc
Asynchronous pure Python gRPC client and server implementation supporting asyncio, uvloop, curio and trio
Stars: ✭ 125 (-47.03%)
Mutual labels:  grpc, rpc
Grpc
An Elixir implementation of gRPC
Stars: ✭ 858 (+263.56%)
Mutual labels:  grpc, rpc
Go Micro Boilerplate
The boilerplate of the GoLang application with a clear microservices architecture.
Stars: ✭ 147 (-37.71%)
Mutual labels:  grpc, rpc
Grpc Go
The Go language implementation of gRPC. HTTP/2 based RPC
Stars: ✭ 15,042 (+6273.73%)
Mutual labels:  grpc, rpc
Rpc Thunderdome
A comparison between Proteus RPC and other commonly used RPC frameworks
Stars: ✭ 22 (-90.68%)
Mutual labels:  grpc, rpc
Libra Sdk Go
Go SDK for the Libra cryptocurrency
Stars: ✭ 23 (-90.25%)
Mutual labels:  grpc, rpc
Quic.net
A .NET C# Implementation of QUIC protocol - Google's experimental transport layer.
Stars: ✭ 173 (-26.69%)
Mutual labels:  stream, protocol

ttrpc

Build Status codecov

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.

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.
  • No support for streams yet.

Status

Very new. YMMV.

TODO:

  • [X] Plumb error codes and GRPC status
  • [X] Remove use of any type and dependency on typeurl package
  • [X] Ensure that protocol can support streaming in the future
  • [ ] Document protocol layout
  • [ ] 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.

Note that the project description data, including the texts, logos, images, and/or trademarks, for each open source project belongs to its rightful owner. If you wish to add or remove any projects, please contact us at [email protected].