All Projects โ†’ smallnest โ†’ Rpcx

smallnest / Rpcx

Licence: other
Best microservices framework in Go, like alibaba Dubbo, but with more features, Scale easily. Try it. Test it. If you feel it's better, use it! ๐‰๐š๐ฏ๐šๆœ‰๐๐ฎ๐›๐›๐จ, ๐†๐จ๐ฅ๐š๐ง๐ ๆœ‰๐ซ๐ฉ๐œ๐ฑ!

Programming Languages

go
31211 projects - #10 most used programming language

Projects that are alternatives of or similar to Rpcx

Go Micro Boilerplate
The boilerplate of the GoLang application with a clear microservices architecture.
Stars: โœญ 147 (-97.74%)
Mutual labels:  microservices, microservice, grpc, rpc
Joyrpc
high-performance, high-extensibility Java rpc framework.
Stars: โœญ 290 (-95.55%)
Mutual labels:  microservice, grpc, rpc, dubbo
Dubbo Go Pixiu
Based on the proxy gateway service of dubbo-go, it solves the problem that the external protocol calls the internal Dubbo cluster. At present, it supports HTTP and gRPC[developing].
Stars: โœญ 124 (-98.1%)
Mutual labels:  microservices, microservice, grpc, dubbo
Brpc Java
Java implementation for Baidu RPC, multi-protocol & high performance RPC.
Stars: โœญ 647 (-90.07%)
Mutual labels:  microservice, grpc, rpc, dubbo
Doge
Doge is a high-performance, Python based, open source RPC framework
Stars: โœญ 144 (-97.79%)
Mutual labels:  microservices, rpc, service-discovery
Whatsmars
Java็”Ÿๆ€็ ”็ฉถ(Spring Boot + Redis + Dubbo + RocketMQ + Elasticsearch)๐Ÿ”ฅ๐Ÿ”ฅ๐Ÿ”ฅ๐Ÿ”ฅ๐Ÿ”ฅ
Stars: โœญ 1,389 (-78.68%)
Mutual labels:  microservices, rpc, dubbo
Rpcx Gateway
http gateway for rpcx services. Clients in any programming languages can call them
Stars: โœญ 145 (-97.77%)
Mutual labels:  microservices, microservice, rpc
Express Gateway
A microservices API Gateway built on top of Express.js
Stars: โœญ 2,583 (-60.36%)
Mutual labels:  microservices, microservice, service-discovery
Jupiter
Jupiterๆ˜ฏไธ€ๆฌพๆ€ง่ƒฝ้žๅธธไธ้”™็š„, ่ฝป้‡็บง็š„ๅˆ†ๅธƒๅผๆœๅŠกๆก†ๆžถ
Stars: โœญ 1,372 (-78.94%)
Mutual labels:  microservice, rpc, service-discovery
Kratos
A modular-designed and easy-to-use microservices framework in Go.
Stars: โœญ 15,844 (+143.16%)
Mutual labels:  microservices, grpc, microservice
Rpc Benchmark
java rpc benchmark, ็ตๆ„Ÿๆบ่‡ช https://www.techempower.com/benchmarks/
Stars: โœญ 463 (-92.89%)
Mutual labels:  grpc, rpc, dubbo
Remit
RabbitMQ-backed microservices supporting RPC, pubsub, automatic service discovery and scaling with no code changes.
Stars: โœญ 24 (-99.63%)
Mutual labels:  microservices, microservice, rpc
Armeria
Your go-to microservice framework for any situation, from the creator of Netty et al. You can build any type of microservice leveraging your favorite technologies, including gRPC, Thrift, Kotlin, Retrofit, Reactive Streams, Spring Boot and Dropwizard.
Stars: โœญ 3,392 (-47.94%)
Mutual labels:  microservices, grpc, rpc
Nacos
an easy-to-use dynamic service discovery, configuration and service management platform for building cloud native applications.
Stars: โœญ 20,691 (+217.54%)
Mutual labels:  microservices, dubbo, service-discovery
Servicetalk
A networking framework that evolves with your application
Stars: โœญ 656 (-89.93%)
Mutual labels:  microservices, grpc, rpc
Grpc Go
The Go language implementation of gRPC. HTTP/2 based RPC
Stars: โœญ 15,042 (+130.85%)
Mutual labels:  microservices, grpc, rpc
Go Api Boilerplate
Go Server/API boilerplate using best practices DDD CQRS ES gRPC
Stars: โœญ 373 (-94.28%)
Mutual labels:  microservices, grpc, rpc
Rpcx Java
rpcx implementation in Java for server side and client side
Stars: โœญ 71 (-98.91%)
Mutual labels:  microservice, rpc, dubbo
Yarpc Go
A message passing platform for Go
Stars: โœญ 285 (-95.63%)
Mutual labels:  microservices, grpc, rpc
Spring Cloud Alibaba
Spring Cloud Alibaba provides a one-stop solution for application development for the distributed solutions of Alibaba middleware.
Stars: โœญ 20,934 (+221.27%)
Mutual labels:  microservices, dubbo, service-discovery
  • stable branch: v1.6.x
  • development branch: master

Official site: http://rpcx.io

License GoDoc travis Go Report Card coveralls QQ3็พค

Notice: etcd

etcd plugin has been moved to rpcx-etcd

Announce

A tcpdump-like tool added: rpcxdumpใ€‚ You can use it to debug communications between rpcx services and clients.

Cross-Languages

you can use other programming languages besides Go to access rpcx services.

  • rpcx-gateway: You can write clients in any programming languages to call rpcx services via rpcx-gateway
  • http invoke: you can use the same http requests to access rpcx gateway
  • Java Services/Clients: You can use rpcx-java to implement/access rpcx servies via raw protocol.

If you can write Go methods, you can also write rpc services. It is so easy to write rpc applications with rpcx.

Installation

install the basic features:

go get -v github.com/smallnest/rpcx/...

If you want to use quicใ€kcp registry, use those tags to go get ใ€ go build or go run. For example, if you want to use all features, you can:

go get -v -tags "quic kcp" github.com/smallnest/rpcx/...

tags:

  • quic: support quic transport
  • kcp: support kcp transport
  • ping: support network quality load balancing
  • utp: support utp transport

Which companies are using rpcx?

Features

rpcx is a RPC framework like Alibaba Dubbo and Weibo Motan.

rpcx is created for targets:

  1. Simple: easy to learn, easy to develop, easy to intergate and easy to deploy
  2. Performance: high perforamnce (>= grpc-go)
  3. Cross-platform: support raw slice of bytes, JSON, Protobuf and MessagePack. Theoretically it can be used with java, php, python, c/c++, node.js, c# and other platforms
  4. Service discovery and service governance: support zookeeper, etcd and consul.

It contains below features

  • Support raw Go functions. There's no need to define proto files.
  • Pluggable. Features can be extended such as service discovery, tracing.
  • Support TCP, HTTP, QUIC and KCP
  • Support multiple codecs such as JSON, Protobuf, MessagePack and raw bytes.
  • Service discovery. Support peer2peer, configured peers, zookeeper, etcd, consul and mDNS.
  • Fault tolerance๏ผšFailover, Failfast, Failtry.
  • Load banlancing๏ผšsupport Random, RoundRobin, Consistent hashing, Weighted, network quality and Geography.
  • Support Compression.
  • Support passing metadata.
  • Support Authorization.
  • Support heartbeat and one-way request.
  • Other features: metrics, log, timeout, alias, circuit breaker.
  • Support bidirectional communication.
  • Support access via HTTP so you can write clients in any programming languages.
  • Support API gateway.
  • Support backup request, forking and broadcast.

rpcx uses a binary protocol and platform-independent, which means you can develop services in other languages such as Java, python, nodejs, and you can use other prorgramming languages to invoke services developed in Go.

There is a UI manager: rpcx-ui.

Performance

Test results show rpcx has better performance than other rpc framework except standard rpc lib.

The benchmark code is at rpcx-benchmark.

Listen to others, but test by yourself.

Test Environment

  • CPU: Intel(R) Xeon(R) CPU E5-2630 v3 @ 2.40GHz, 32 cores
  • Memory: 32G
  • Go: 1.9.0
  • OS: CentOS 7 / 3.10.0-229.el7.x86_64

Use

  • protobuf
  • the client and the server on the same server
  • 581 bytes payload
  • 500/2000/5000 concurrent clients
  • mock processing time: 0ms, 10ms and 30ms

Test Result

mock 0ms process time

ThroughputsMean LatencyP99 Latency

mock 10ms process time

ThroughputsMean LatencyP99 Latency

mock 30ms process time

ThroughputsMean LatencyP99 Latency

Examples

You can find all examples at rpcxio/rpcx-examples.

The below is a simple example.

Server

    // define example.Arith
    โ€ฆโ€ฆ

    s := server.NewServer()
	s.RegisterName("Arith", new(example.Arith), "")
	s.Serve("tcp", addr)

Client

    // prepare requests
    โ€ฆโ€ฆ

    d, err := client.NewPeer2PeerDiscovery("tcp@"+addr, "")
	xclient := client.NewXClient("Arith", client.Failtry, client.RandomSelect, d, client.DefaultOption)
	defer xclient.Close()
	err = xclient.Call(context.Background(), "Mul", args, reply, nil)

Contribute

see contributors.

Welcome to contribute:

  • submit issues or requirements
  • send PRs
  • write projects to use rpcx
  • write tutorials or articles to introduce rpcx

License

Apache License, Version 2.0

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