1.基于SOAP架構。基于XML規(guī)范?;赪ebService協議。特點:接口地址?wsdl結尾
2.基于RPC架構,基于dubbo協議,thrift協議。SpringCloud微服務。
3.基于RestFul架構,基于json規(guī)范?;趆ttp協議(我們常用的都是這種,cms平臺也是)
RestFul規(guī)則∶
接口地址:?http://127.0.0.1/user?,?get(查詢用戶)?,?post(新增用戶),put(修改用戶).delete?(刪除用戶)
???? Json數據格式:只有兩種數據類型:鍵值對:{key?:?value}
???? 數組:[arry1,arry2]
測試dubbo接口:大數據之高性能的分布式服務框架Dubbo
接口測試主要分HTTP和RPC兩類,RPC類型里面以Dubbo較為知名。
互聯網微服務架構,兩種接口都需要做接口測試的,不管是業(yè)務測試還是回歸測試;
Dubbo:Java棧的互聯網公司比如阿里、美團、58、滴滴、京東等等都是差不多的服務端架構,所以這些公司,兩類接口測試也是必不可少的工作部分;
Dubbo是一個分布式服務框架,致力于提供高性能和透明化的RPC遠程服務調用方案,以及SOA服務治理方案。簡單的說,dubbo就是個服務框架,如果沒有分布式的需求,其實是不需要用的,只有在分布式的時候,才有dubbo這樣的分布式服務框架的需求,并且本質上是個服務調用的東東,說白了就是個遠程服務調用的分布式框架(告別Web?Service模式中的WSdl,以服務者與消費者的方式在dubbo上注冊)
rpc?API?文檔如下
接口實體:?Object?restForRpc(RequestParams?requestParams);
請求URL:?http://10.118.60.177:8931/express/test/restForRpc
請求方式:POST
dubbo是什么
dubbo是阿里巴巴開源的一套rpc方案,以為理念很契合微服務,這幾年很火,用戶里面不凡京東,當當,去哪兒等大公司。
RPC場景
dubbo架構
官網也提供了一個很簡單實用的demo來演示dubbo協議的使用,用起來的確很簡單強大。dubbo?demo
可參考?http://dubbo.io/?首頁的例子已經很好了。
基于telnet的簡單調試接口
任何一個dubbo服務都支持一個簡單的telent交互。比如
telnet?localhost?20880
>ls?-l
>?ls?-l?DemoService
>?invoke?DemoSerivce.sayHello("seveniruby")
這種方式只能用來簡單驗證接口的可用
什么是RPC?PRC全稱是Remote?Procedure?Call,即遠程過程調用。比如我發(fā)送了一個?rpc?請求:POST?/getUser?user_id=123;相當于是我本地的電腦調用了遠在服務器的?getUser(user_id)?方法,這就叫遠程過程調用,這個遠不一定是跨網絡的調用,同一臺電腦的2個進程之間調用也可以稱為是RPC
?還有一點,RPC也是一種API設計風格,因為rpc只有GET?和?POST?請求,它不像restful風格那樣有多種請求:?DELETE、PUT、GET、POST
RPC?和?Dubbo
rpc和dubbo比起來,rpc更像是一種編程細想或者是通信方式(RPC不是協議),而dubbo是rpc的一種實現方式,就像接口和實現類一樣,rpc是接口,dubbo是實現類;我們常說Dubbo是阿里巴巴開源的RPC框架,就是這個道理。另外在說一下,dubbo是阿里巴巴在2011年開源,2018年2月后阿里巴巴將Dubbo開源項目捐給了?Apache基金會,從此以后,Dubbo正式進入Apache開源孵化器;Dubbo就不在屬于阿里巴巴,而是屬于社區(qū)的
還有一點需要說明的是,dubbo即是框架也是協議;只不過dubbo協議只能在dubbo框架上使用,這個協議是阿里巴巴自己實現的一種應用層協議,傳輸層還是TCP。所以Dubbo協議與HTTP、FTP,SMTP這些應用層協議是并列的概念。除了默認的Dubbo協議,Dubbo框架還支持RMI、Hessian、HTTP等協議。
dubbo協議和http協議
首先,dubbo?和http協議都是基于tcp開發(fā)出來的,而dubbo是高性能和透明化的RPC遠程服務調用方案,為什么叫高性能,就是因為它傳輸的信息更少,少就意味著更快,你提著一塊10斤重的石頭?和?提著一個一斤的石頭跑,你說哪個快??但是dubbo的協議是基于java的序列化開發(fā)而來的,雖然快,但是應用面比較窄,只能在dubbo框架上使用;但是http就不一樣了,http的應用非常廣泛,我用http協議可以和各種不同語言開發(fā)的服務器進行通訊,比如java調用python的服務肯定沒問題,?但是dubbo就不行了,因為dubbo不支持python;雖然http也是基于tcp開發(fā)的,但是和dubbo比起來就顯得重了很多;因為dubbo除了傳輸數據之外就沒別的東西了,而http除了數據之外還有一堆的請求頭(request)和響應頭(response),這無疑會加重傳輸的負擔;除此之外,如果是html的http請求,在發(fā)送請求和響應時會先將數據轉成json在序列化,相比dubbo之下增加了一重轉換,如下圖
所以,相同的數據量進行傳輸時,dubbo?比?http?快了將近一倍,只是在當今的計算機環(huán)境下,?這多一點開銷對公司來說不算什么,如果是需要特別快速的需求,像秒殺類的商品搶購,用dubbo是最合適的,其他場景用http?也夠用了安全性
從安全性來說,dubbo肯定沒有http安全,但是也不需要,因為dubbo從設計之初就是為了在內網使用,所以不需要考慮安全性dubbo?和?spring?cloud區(qū)別
1、dubbo由于是二進制的傳輸,占用帶寬會更少
2、springCloud是http協議傳輸,帶寬會比較多,同時使用http協議一般會使用JSON報文,消耗會更大
3、dubbo的開發(fā)難度較大,原因是dubbo的jar包依賴問題很多大型工程無法解決
4、springcloud的接口協議約定比較自由且松散,需要有強有力的行政措施來限制接口無序升級
5、dubbo的注冊中心可以選擇zk,redis等,springcloud的注冊中心用eureka或者Consul
6、spring?cloud?是基于spring?開發(fā),spring本身具有非常完整的生態(tài),與其他框架整合非常方便;易用性高;
7、dubbo沒有全家桶,dubbo社區(qū)也不如spring?cloud;
如果讓我選,我一定用?spring?cloud?,如果是你,你會怎么選呢?
本文轉載于:https://www.cnblogs.com/qtclm/p/16747764.html1.下載用于測試dubbo的spring?boot項目
參考文章:http://t.zoukankan.com/111testing-p-11297038.htmlhttps://zhuanlan.zhihu.com/p/539190478
dubbo介紹:https://www.cnblogs.com/liuyuelinfighting/p/14972958.htmlhttps://dubbo.apache.org/zh/docs3-v2/java-sdk/quick-start/spring-boot/https://www.cnblogs.com/111testing/p/11297038.html
jmeter測試dubbo接口插件下載:https://github.com/thubbo/jmeter-plugins-for-apache-dubbo/releases
git clone -b master https://github.com/apache/dubbo-samples.git
cd dubbo-samples/dubbo-samples-spring-boot
mvn clean package // 打包成jar
//啟動生產者服務
cd ./dubbo-samples-spring-boot-provider
java -jar ./target/dubbo-samples-spring-boot-provider-1.0-SNAPSHOT.jar
// 啟動消費者服務
java -jar ./target/dubbo-samples-spring-boot-consumer-1.0-SNAPSHOT.jar
示例核心流程
1. 定義服務接口
dubbo-samples-spring-boot-interface/DemoService.java
package org.apache.dubbo.samples.basic.api;
public interface DemoService {
String sayHello(String name);
}
2. 提供方實現接口并暴露服務
dubbo-samples-spring-boot-provider/DemoServiceImpl.java
@DubboService
public class DemoServiceImpl implements DemoService {
@Override
public String sayHello(String name) {
System.out.println("Hello " + name + ", request from consumer: " + RpcContext.getContext().getRemoteAddress());
return "Hello " + name;
}
}
3. 配置 application.yml 文件
dubbo-samples-spring-boot-provider/resources/application.yml
dubbo:
application:
name: dubbo-springboot-demo-provider
protocol:
name: dubbo
port: -1
registry:
id: zk-registry
address: zookeeper://127.0.0.1:2181
config-center:
address: zookeeper://127.0.0.1:2181
metadata-report:
address: zookeeper://127.0.0.1:2181
4. 定義 Spring Boot 主函數,其中,@EnableDubbo 必須配置。
dubbo-samples-spring-boot-provider/ProviderApplication.java
@SpringBootApplication
@EnableDubbo
public class ProviderApplication {
public static void main(String[] args) throws Exception {
new EmbeddedZooKeeper(2181, false).start();
SpringApplication.run(ProviderApplication.class, args);
System.out.println("dubbo service started");
new CountDownLatch(1).await();
}
}
5. 引用遠程服務
dubbo-samples-spring-boot-consumer/ConsumerApplication.java
public class ConsumerApplication {
@DubboReference
private DemoService demoService;
}
6. 定義 application.yml
dubbo-samples-spring-boot-consumer/application.yml
dubbo:
application:
name: dubbo-springboot-demo-consumer
protocol:
name: dubbo
port: -1
registry:
id: zk-registry
address: zookeeper://127.0.0.1:2181
config-center:
address: zookeeper://127.0.0.1:2181
metadata-report:
address: zookeeper://127.0.0.1:2181
7. 加載 Spring 配置,并調用遠程服務
dubbo-samples-spring-boot-consumer/ConsumerApplication.java
@SpringBootApplication
@Service
@EnableDubbo
public class ConsumerApplication {
@DubboReference
private DemoService demoService;
public static void main(String[] args) {
ConfigurableApplicationContext context = SpringApplication.run(ConsumerApplication.class, args);
ConsumerApplication application = context.getBean(ConsumerApplication.class);
String result = application.doSayHello("world");
System.out.println("result: " + result);
}
}
注意:
1.啟動生產者(provider)項目時會自動關聯啟動zookeeper,端口占用:2181
2.dubbo服務默認占用端口:20880
3.jmeter測試時可以使用jar啟動項目,也可以使用spring boot啟動項目(只啟動provider端即可)
2.下載jmeter測試dubbo所需要的插件,我使用的版本是2.7.8,將插件放到jmeter/lib/ext目錄下,然后打開jmeter搞事情了
地址:?https://github.com/thubbo/jmeter-plugins-for-apache-dubbo/releases
這里的sayGoodbye方法是自己手動添加的,用于加深對這塊的理解
?3.中途遇到的問題以及處理
1.dubbo請求失敗,這篇文章里有提到處理:https://blog.csdn.net/inlauallnoany/article/details/119237582,如果是在錯誤信息里面看到172.17.160.1,則說明iis服務有沖突,需要關閉iis服務,關閉iis服務:https://www.jb51.net/os/win11/812370.html
2.下載的dubbo項目,默認的interface包路徑是錯誤的,需要替換為具體的接口路徑文章來源:http://www.zghlxwxcb.cn/news/detail-635493.html
文章來源地址http://www.zghlxwxcb.cn/news/detail-635493.html
到了這里,關于jmeter測試rpc接口-使用dubbo框架調用【杭州多測師_王sir】的文章就介紹完了。如果您還想了解更多內容,請在右上角搜索TOY模板網以前的文章或繼續(xù)瀏覽下面的相關文章,希望大家以后多多支持TOY模板網!