• 设为首页
  • 点击收藏
  • 手机版
    手机扫一扫访问
    迪恩网络手机版
  • 关注官方公众号
    微信扫一扫关注
    迪恩网络公众号

    rpcx: rpcx是一个类似阿里巴巴 Dubbo 和微博 Motan 的分布式的RPC服务框架,基于Golan ...

    原作者: [db:作者] 来自: 网络 收藏 邀请

    开源软件名称:

    rpcx

    开源软件地址:

    https://gitee.com/mirrors/rpcx

    开源软件介绍:

    • stable branch: v1.7.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 quickcp registry, use those tags to go getgo 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)

    Contributors

    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


    鲜花

    握手

    雷人

    路过

    鸡蛋
    该文章已有0人参与评论

    请发表评论

    全部评论

    专题导读
    热门推荐
    阅读排行榜

    扫描微信二维码

    查看手机版网站

    随时了解更新最新资讯

    139-2527-9053

    在线客服(服务时间 9:00~18:00)

    在线QQ客服
    地址:深圳市南山区西丽大学城创智工业园
    电邮:jeky_zhao#qq.com
    移动电话:139-2527-9053

    Powered by 互联科技 X3.4© 2001-2213 极客世界.|Sitemap