grpc框架_分布式RPC框架dubbo、motan、rpcx、gRPC、thrift简介与性能比较
Dubbo
Dubbo 是阿里巴巴公司開源的一個Java高性能優(yōu)秀的服務(wù)框架,使得應(yīng)用可通過高性能的 RPC 實現(xiàn)服務(wù)的輸出和輸入功能,可以和 Spring框架無縫集成。曾有一段時間放棄維護,不過當前已經(jīng)阿里已經(jīng)重啟對Dubbo的維護,并發(fā)布了多個更新版本。
Motan
Motan是新浪微博開源的一個Java 框架。它誕生的比較晚,起于2013年,2016年5月開源。Motan 在微博平臺中已經(jīng)廣泛應(yīng)用,每天為數(shù)百個服務(wù)完成近千億次的調(diào)用。
rpcx
rpcx是Go語言生態(tài)圈的Dubbo, 比Dubbo更輕量,實現(xiàn)了Dubbo的許多特性,借助于Go語言優(yōu)秀的并發(fā)特性和簡潔語法,可以使用較少的代碼實現(xiàn)分布式的RPC服務(wù)。
gRPC
gRPC是Google開發(fā)的高性能、通用的開源RPC框架,其由Google主要面向移動應(yīng)用開發(fā)并基于HTTP/2協(xié)議標準而設(shè)計,基于ProtoBuf(Protocol Buffers)序列化協(xié)議開發(fā),且支持眾多開發(fā)語言。本身它不是分布式的,所以要實現(xiàn)上面的框架的功能需要進一步的開發(fā)。
thrift
thrift是Apache的一個跨語言的高性能的服務(wù)框架,也得到了廣泛的應(yīng)用。
性能測試
測試是在兩臺機器上執(zhí)行的,一臺機器做服務(wù)器,一臺機器做客戶端。
兩臺機器的配置都是一樣的,比較老的服務(wù)器:
- CPU: Intel(R) Xeon(R) CPU E5-2620 v2 @ 2.10GHz, 24 cores
- Memory: 16G
- OS: Linux 2.6.32-358.el6.x86_64, CentOS 6.4
- Go: 1.7
- Java: 1.8
- Dubbo: 2.5.4-SNAPSHOT (2016-09-05)
- Motan: 0.2.2-SNAPSHOT (2016-09-05)
- gRPC: 1.0.0
- rpcx: 2016-09-05
- thrift: 0.9.3 (java)
分別在client并發(fā)數(shù)為100、500、1000、2000 和 5000的情況下測試,記錄吞吐率(每秒調(diào)用次數(shù), Throughput)、響應(yīng)時間(Latency) 、成功率。
吞吐率
首先看在四種并發(fā)下各RPC框架的吞吐率:
rpcx的性能遙遙領(lǐng)先,并且其它三種框架在并發(fā)client很大的情況下吞吐率會下降。
thrift比rpcx性能差一點,但是還不錯,遠好于gRPC,dubbo和motan,但是隨著client的增多,性能也下降的很厲害,在client較少的情況下吞吐率挺好。
平均響應(yīng)時間
在這四種并發(fā)的情況下平均響應(yīng):
這個和吞吐率的表現(xiàn)是一致的,還是rpcx最好,平均響應(yīng)時間小于30ms, Dubbo在并發(fā)client多的情況下響應(yīng)時間很長。
我們知道,在微服務(wù)流行的今天,一個單一的RPC的服務(wù)可能會被不同系統(tǒng)所調(diào)用,這些不同的系統(tǒng)會創(chuàng)建不同的client。如果調(diào)用的系統(tǒng)很多,就有可能創(chuàng)建很多的client。
這里統(tǒng)計的是這些client總的吞吐率和總的平均時間。
響應(yīng)時間中位數(shù)
平均響應(yīng)時間可能掩蓋一些真相,尤其是當響應(yīng)時間的分布不是那么平均,所以我們還可以關(guān)注另外一個指標,就是中位數(shù)。
這里的中位數(shù)指小于這個數(shù)值的測試數(shù)和大于這個數(shù)值的測試數(shù)相等。
gRPC框架的表現(xiàn)最好。
最大響應(yīng)時間
另外一個就是比較一下最長的響應(yīng)時間,看看極端情況下各框架的表現(xiàn):
rpcx的最大響應(yīng)時間都小于1秒,Motan的表現(xiàn)也不錯,都小于2秒,其它兩個框架表現(xiàn)不是太好。
總結(jié)
以上是生活随笔為你收集整理的grpc框架_分布式RPC框架dubbo、motan、rpcx、gRPC、thrift简介与性能比较的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: python django restfu
- 下一篇: git 分支合并_教你玩转Git-分支合