博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
服务调用效率比较
阅读量:5791 次
发布时间:2019-06-18

本文共 2600 字,大约阅读时间需要 8 分钟。

在一些较大规模的软件项目上,如果对用户体验要求较高,那就有必要对服务调用效率作个比较。

关于服务调用,无外乎有两种:本地调用(项目内)和远程调用(项目间)。

本地调用,在其他因素相同的情况下,由于不需要对外通信,其效率肯定最高。但问题是,随着业务的发展,当一台服务器无法满足时,我们必须远程调用。

远程通讯可能有很多,现比较一下,local,rabbitmq RPC ,WebAPI的效率。

环境是:本地电脑,满足硬件环境一致的要求;

 分别启动 rabbitmq,WebAPI,使用同一算法,以保证所有的业务逻辑一致。为了最大限度的提高WebAPI的效率,不使用任何第三方框架。

如: 只实现Servlet接口

@Override public void service(ServletRequest servletRequest, ServletResponse servletResponse) throws ServletException, IOException {
String val = servletRequest.getParameter("num"); int fibVal = 0; try {
fibVal = fib(Integer.valueOf(val)); } catch (Exception ex) {
} servletResponse.setContentType("text/html"); servletResponse.setCharacterEncoding("utf-8"); PrintWriter writer = servletResponse.getWriter(); writer.println(fibVal); writer.flush(); writer.close(); } 。 请求端如下:
public static void main(String[] args) throws Exception {
String message = readStrFromConsole(); long start = System.currentTimeMillis(); int localVAl = fib(Integer.valueOf(message)); System.out.println("local:first:" + (System.currentTimeMillis() - start)); System.out.println(message + "'s Fibo is " + localVAl); start = System.currentTimeMillis(); RPCClient fiboRpc = new RPCClient(); String response = fiboRpc.call(message); fiboRpc.close(); System.out.println("RPC:Second:" + (System.currentTimeMillis() - start)); System.out.println(message + "'s Fibo is " + response); start = System.currentTimeMillis(); String http_response = RemoteRequest.Get("http://localhost:8080/TestWeb/test?num=" + message); System.out.println("HTTP:Second:" + (System.currentTimeMillis() - start)); System.out.println(message + "'s Fibo is " + http_response); } 计算fib(41)的值,测试结果如下:

Connected to the target VM, address: '127.0.0.1:55175', transport: 'socket'

41
local:first:1017
41's Fibo is 165580141
RPC:Second:1207
41's Fibo is 165580141
Disconnected from the target VM, address: '127.0.0.1:55175', transport: 'socket'
HTTP:Third:2106
41's Fibo is 165580141

第二次运行:

41

local:first:1017
41's Fibo is 165580141
RPC:Second:1227
41's Fibo is 165580141
HTTP:Third:1963
41's Fibo is 165580141

第三次:

41

local:first:1022
41's Fibo is 165580141
RPC:Second:1193
41's Fibo is 165580141
Disconnected from the target VM, address: '127.0.0.1:55203', transport: 'socket'
HTTP:Third:1969
41's Fibo is 165580141

。。。

经过更多次的调用,你会发现:

local , 在1000ms 左右;

rabbitmq RPC ,在 1200ms 左右;

WebAPI,在 2000ms 左右。

由此来看,在远程调用中,rabbitmq RPC的效率要比WebAPI高很多。

但有一点限制,rabbitmq RPC 只能用于同一网段,不过对于跨网段的还是可以解决的。

 

转载于:https://www.cnblogs.com/itdev/p/5656274.html

你可能感兴趣的文章
CTOR有助于BCH石墨烯技术更上一层楼
查看>>
被遗忘的CSS
查看>>
Webpack中的sourcemap以及如何在生产和开发环境中合理的设置sourcemap的类型
查看>>
做完小程序项目、老板给我加了6k薪资~
查看>>
java工程师linux命令,这篇文章就够了
查看>>
关于React生命周期的学习
查看>>
webpack雪碧图生成
查看>>
搭建智能合约开发环境Remix IDE及使用
查看>>
Spring Cloud构建微服务架构—服务消费基础
查看>>
RAC实践采坑指北
查看>>
runtime运行时 isa指针 SEL方法选择器 IMP函数指针 Method方法 runtime消息机制 runtime的使用...
查看>>
LeetCode36.有效的数独 JavaScript
查看>>
Scrapy基本用法
查看>>
PAT A1030 动态规划
查看>>
自制一个 elasticsearch-spring-boot-starter
查看>>
【人物志】美团前端通道主席洪磊:一位产品出身、爱焊电路板的工程师
查看>>
一份关于数据科学家应该具备的技能清单
查看>>
机器学习实战_一个完整的程序(一)
查看>>
Web框架的常用架构模式(JavaScript语言)
查看>>
如何用UPA优化性能?先读懂这份报告!
查看>>