Dubbo 和 gRPC:国内哪个更流行?

本文比较了国内 Dubbo 和 grpc 的使用情况,为读者提供了选择适合自己业务的 RPC 框架的参考。

用 Apifox,节省研发团队的每一分钟

Dubbo 和 gRPC:国内哪个更流行?

免费使用 Apifox

相关推荐

最新文章

API

一体化协作平台

API 设计

API 文档

API 调试

自动化测试

API Mock

API Hub

立即体验 Apifox
目录

gRPCDubbo 是近几年来比较火的两款 RPC 的框架,很多人就在问了:在国内,是 Dubbo 用的多还是 gRPC 用的多呢?我们不妨先从性能测试这一点入手进行比较看下!

Dubbo 和 gRPC:国内哪个更流行
Dubbo
Dubbo 和 gRPC:国内哪个更流行
gRPC 

gRPC

gRPC 是一个由谷歌开发的现代开源高性能远程过程调用(RPC)框架,可以在多种开发环境中运行。它可以通过对负载平衡、跟踪、健康检查和身份验证的可插拔支持,有效地连接数据中心内和数据中心之间的服务。它也适用于分布式计算的最后一英里,将设备、移动应用程序和浏览器连接到后端服务。

Dubbo 和 gRPC:国内哪个更流行

先去到 github 克隆一个 gRPC 的项目下来并运行:

git clone https: //github.com/grpc/grpc-java

接着我们使用 maven 去启动项目,且循环 1000000 次。

mvn exec:java -Dexec.mainClass=io.grpc.examples.helloworld.HelloWorldServer
mvn exec:java -Dexec.mainClass=io.grpc.examples.helloworld.HelloWorldClient

测出来的时间大概为:

spend time: 126 can handle 7936 per second

Dubbo

Dubbo 是阿里巴巴出品的,是使用 Java 这种编程语言编写的,Dubbo 跟 RPC 的关系就是:Dubbo 是一种 RPC 的框架,一种分布式服务框架,体现在:

  • 高性能
  • 透明化

Dubbo 也是一种 SOA 服务的治理方案。

Dubbo 和 gRPC:国内哪个更流行

而我们对 Dubbo 进行编码,并测试性能:

@Service(version = "1.0.0")
public class HelloServiceImpl implements HelloService {

    @Override
    public String SayHello(String name) {
        return "Hello , "+name;
    }
}
@RestController

public class HelloController {

    private final Long testScale = 1000000L;

    @Reference(version = "1.0.0")
    HelloService helloService;

    @GetMapping("sayHello")
    public String sayHello( String name){
        name = " world";
        Long now = Instant.now().getEpochSecond();
        for(int idx = 0; idx < testScale; idx++){
           System.out.println( helloService.SayHello(String.format("%s:%d",name,idx)));
        }

        Long duration = Instant.now().getEpochSecond() - now;
        System.out.println(String.format("can handle %d per second", testScale/duration));
        return String.format("can handle %d per second", testScale/duration);
    }
}

运行结果

我们进行运行,并查看耗时结果:

can handle 12987 per second

结论

Dubbo 性能更好,更受欢迎!

我们可以看出,Dubbo 的性能更加的好,且 Dubbo 是阿里巴巴出品,属于国产 RPC 框架,对于国内的开发肯定是更加友好的。

但市面上能够同时针对这两种接口的展开测试的工具少之又少,而 Apifox 正是数不多可以针对这两个接口进行调试的接口管理工具。

创建 gRPC 项目

Apifox 支持基于 .proto 文件的 gRPC 调试,包括一元调用和流式调用。在创建项目时「选择 gRPC 项目」-->「导入 .proto 文件」,无需写代码即可直接调用 gRPC 接口。

Dubbo 和 gRPC:国内哪个更流行
创建 gRPC 项目

在调试 gRPC 接口之前,也需要先导入作为 API 定义的 .proto 文件。如果一个 .proto 文件依赖于其他 .proto 文件,那么需要手动添加依赖关系目录。

Dubbo 和 gRPC:国内哪个更流行
添加 .proto 文件

一元调用

只需要在地址栏填写 URL 后点击「调用」按钮,即可发起一元调用。

Dubbo 和 gRPC:国内哪个更流行
一元调用

流式调用

流式调用包含服务端流、客户端流、双向流

在发起调用之后,你可以在 Message 标签下撰写消息并发送。Apifox 提供了一个时间线视图,按照时间顺序集中展示调用状态、发送的消息、收到的消息。点击消息之后,可以非常方便地查看消息的详情。

Dubbo 和 gRPC:国内哪个更流行
流式调用

创建 Dubbo 项目

Apifox 支持创建 Dubbo 项目,在创建项目时选择「 Dubbo 项目」。

Dubbo 项目管理目前处于测试阶段,敬请期待。
Dubbo 和 gRPC:国内哪个更流行
创建 Dubbo 项目

导入阿里云 EDAS

在阿里云控制台中获取 EDAS 的相关信息,导入接口时填写相关信息。

Dubbo 和 gRPC:国内哪个更流行
导入阿里云 EDAS

导入后即可在由 Apifox 提供的可视化页面设计或调试 Dubbo 接口。

发送一个 Dubbo 请求

接着我们到达运行页面,填入请求 body 的参数。点击发送运行,得到 Dubbo 服务返回的数据。

Dubbo 和 gRPC:国内哪个更流行
发送 Dubbo 请求

关于 Apifox

官网:https://apifox.com/

我将 Apifox 概括为三点,通过这三点,我们可以就可以知道 Apifox 真的是一款非常强大、多功能的 API 工具

  • 集成了 API 文档、API 调试、API Mock、API 自动化测试 API 一体化协作平台
  • 拥有更先进的 API 设计/开发/测试工具
  • Apifox = Postman + Swagger + Mock + JMeter

欢迎体验一下,完全免费的哦:在线使用 Apifox

Apifox
Apifox

知识扩展: