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


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

先去到 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 进行编码,并测试性能:
@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 接口。

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

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

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

创建 Dubbo 项目
Apifox 支持创建 Dubbo 项目,在创建项目时选择「 Dubbo 项目」。
Dubbo 项目管理目前处于测试阶段,敬请期待。

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

导入后即可在由 Apifox 提供的可视化页面设计或调试 Dubbo 接口。
发送一个 Dubbo 请求
接着我们到达运行页面,填入请求 body 的参数。点击发送运行,得到 Dubbo 服务返回的数据。

关于 Apifox
我将 Apifox 概括为三点,通过这三点,我们可以就可以知道 Apifox 真的是一款非常强大、多功能的 API 工具
- 集成了 API 文档、API 调试、API Mock、API 自动化测试 API 一体化协作平台
- 拥有更先进的 API 设计/开发/测试工具
- Apifox = Postman + Swagger + Mock + JMeter
欢迎体验一下,完全免费的哦:在线使用 Apifox

知识扩展: