All Projects → machinebox → Remoto

machinebox / Remoto

Licence: apache-2.0
Ultra-simple RPC ecosystem designed for right now.

Programming Languages

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

Projects that are alternatives of or similar to Remoto

Rpcx Gateway
http gateway for rpcx services. Clients in any programming languages can call them
Stars: ✭ 145 (-52.3%)
Mutual labels:  microservices, rpc
Product Microgateway
A cloud native, developer centric and decentralized API gateway for microservices
Stars: ✭ 194 (-36.18%)
Mutual labels:  microservices, apis
Go Micro Boilerplate
The boilerplate of the GoLang application with a clear microservices architecture.
Stars: ✭ 147 (-51.64%)
Mutual labels:  microservices, rpc
Nirum
Nirum: IDL compiler and RPC/distributed object framework for microservices
Stars: ✭ 119 (-60.86%)
Mutual labels:  microservices, rpc
Tarscpp
C++ language framework rpc source code implementation
Stars: ✭ 261 (-14.14%)
Mutual labels:  microservices, rpc
Raptor
拍拍贷微服务rpc框架
Stars: ✭ 139 (-54.28%)
Mutual labels:  microservices, rpc
Kuma
🐻 The Universal Service Mesh. CNCF Sandbox Project.
Stars: ✭ 2,516 (+727.63%)
Mutual labels:  microservices, apis
Remit
RabbitMQ-backed microservices supporting RPC, pubsub, automatic service discovery and scaling with no code changes.
Stars: ✭ 24 (-92.11%)
Mutual labels:  microservices, rpc
Tarsgo
Tarsgo is high performance RPC framework in Golang programing language using the tars protocol. Go has become popular for programming with the rise of containerization technology such as docker, k8s, and etcd. Go's goroutine concurrency mechanism means Go is very suitable for large-scale high-concurrency back-end server program development. The Go language has nearly C/C++ performance and near Python productivity. In Tencent, part of the existing C++ development team has gradually turned into Go developers. Tars, a widely used RPC framework, supports C++, Java, NodeJS, and PHP, and now Go. The combination with Go language has become a general trend. Therefore, in the voice of users, we launched Tarsgo, and we have applied to Tencent map application, YingYongbao application, Internet plus and other projects. Learn more about the whole Tars architecture and design at Introduction.
Stars: ✭ 2,931 (+864.14%)
Mutual labels:  microservices, rpc
Grpc Go
The Go language implementation of gRPC. HTTP/2 based RPC
Stars: ✭ 15,042 (+4848.03%)
Mutual labels:  microservices, rpc
Whatsmars
Java生态研究(Spring Boot + Redis + Dubbo + RocketMQ + Elasticsearch)🔥🔥🔥🔥🔥
Stars: ✭ 1,389 (+356.91%)
Mutual labels:  microservices, rpc
Go Micro
A pluggable Go framework for distributed systems development
Stars: ✭ 17,350 (+5607.24%)
Mutual labels:  microservices, rpc
Kubernetes Ingress Controller
🦍 Kong for Kubernetes: the official Ingress Controller for Kubernetes.
Stars: ✭ 1,347 (+343.09%)
Mutual labels:  microservices, apis
Doge
Doge is a high-performance, Python based, open source RPC framework
Stars: ✭ 144 (-52.63%)
Mutual labels:  microservices, rpc
Kong
🦍 The Cloud-Native API Gateway
Stars: ✭ 30,838 (+10044.08%)
Mutual labels:  microservices, apis
Reactive Ms Example
An educational project to learn reactive programming with Spring 5
Stars: ✭ 157 (-48.36%)
Mutual labels:  microservices, apis
Servicetalk
A networking framework that evolves with your application
Stars: ✭ 656 (+115.79%)
Mutual labels:  microservices, rpc
Nakadi
A distributed event bus that implements a RESTful API abstraction on top of Kafka-like queues
Stars: ✭ 734 (+141.45%)
Mutual labels:  microservices, apis
Xian
reactive风格的微服务框架
Stars: ✭ 196 (-35.53%)
Mutual labels:  microservices, rpc
Yarpc Go
A message passing platform for Go
Stars: ✭ 285 (-6.25%)
Mutual labels:  microservices, rpc

Remoto banner

Remoto

Ultra-simple, fast, complete RPC ecosystem designed for right now.

  • Simple service definitions written in Go (interfaces and structs)
  • Generates servers and clients that makes implementing/consuming easy
  • Generates human-readable code
  • Supports batch requests out of the box
  • Lots of templates to use today
  • Modify templates or write your own

In this document

Introduction

Remoto is an RPC ecosystem and code generation tool. A powerful set of templates and supporting code allows you to quickly spin up RPC services, and consume them with hand crafted client libraries by experts in each particular language.

Who is Remoto for?

Remoto is for teams who want to:

  • Deliver mobile and web RPC services
  • Automate SDK and client library generation
  • Stick with simple and familiar technology

Remoto definition files

Definition files are Go source with .remoto.go file extension.

An example definition looks like this:

package project

// Greeter provides greeting services.
type Greeter interface {
	// Greet generates a greeting.
	Greet(GreetRequest) GreetResponse
}

// GreetRequest is the request for Greeter.GreetRequest.
type GreetRequest struct {
	Name string
}

// GreetResponse is the response for Greeter.GreetRequest.
type GreetResponse struct {
	Greeting string
}
  • package project - package name can group services
  • type ServiceName interface - describes an RPC service
  • Greet(GreetRequest) GreetResponse - service method with request and response objects
  • type GreetRequest struct - describes the request data
  • type GreetResponse struct - describes the response data

Rules

  • Each service is an interface
  • Each method is an endpoint
  • Methods must take a request object as its only argument
  • Methods must return the response object as the result
  • Only a subset of Go types are supported: string, float64, int, bool, and struct types
  • Any arrays (slices) of the supported types are also allowed (e.g. []string, []bool, etc.)
  • Comments describe the services, methods and types
  • Do not import packages (apart from official Remoto ones), instead your definition files should be self contained

Special types

  • Learn more about specially handled types in remototypes.

Tips

  • Avoid importing common types - describe all the required types in a single .remoto.go file

Remoto command

The remoto command can be built into your development pipeline to generate source code from definition files.

usage:
	remoto sub-command

Generate

The generate command generates source code from a given template.

usage:
	remoto generate definition template -o output-file
  • definition - Path to the definition file
  • template - Path to the template to render
  • output-file - Where to save the output (folders will be created and files will be overwritten without warning)

remotohttp

As well as code generation, Remoto ships with a complete HTTP client/server implementation which you can generate from your definition files.

For more information, see the remotohttp documentation.

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].