Dubbo接口测试学习笔记

关于dubbo:

  一个远程服务调用的分布式框架,调用协议通常包含传输协议和序列化协议。Dubbo本身支持多种远程调用方式,例如Dubbo RPC(二进制序列化 + tcp协议)、http invoker(二进制序列化 + http协议)、hessian(二进制序列化 + http协议)、WebServices (文本序列化 + http协议)等。

官网介绍地址

节点角色说明
节点 角色说明
Provider 暴露服务的服务提供方
Consumer 调用远程服务的服务消费方
Registry 服务注册与发现的注册中心
Monitor 统计服务的调用次数和调用时间的监控中心
Container 服务运行容器
调用关系说明
  1. 服务容器负责启动,加载,运行服务提供者。
  2. 服务提供者在启动时,向注册中心注册自己提供的服务。
  3. 服务消费者在启动时,向注册中心订阅自己所需的服务。
  4. 注册中心返回服务提供者地址列表给消费者,如果有变更,注册中心将基于长连接推送变更数据给消费者。
  5. 服务消费者,从提供者地址列表中,基于软负载均衡算法,选一台提供者进行调用,如果调用失败,再选另一台调用。
  6. 服务消费者和提供者,在内存中累计调用次数和调用时间,定时每分钟发送一次统计数据到监控中心。

如何测试dubbo接口:

Python hessian+http的方式调用:

1、dubbo项目中,增加hessian方式序列化,及相关依赖。下图为xml配置方式示例。

官方配置hessian协议及依赖例子

官方配置多协议例子

2、获取接口地址(可在监控管理中心查看)、方法及方法的入参。

3、安装 python-hessian

python -m pip install python-hessian

4、编写Python脚本调用接口

1  # coding=utf-8
2  from pyhessian.client import HessianProxy
3  url = "http://169.254.210.145:1234/com.ymxdclass.user.service.UserService" 
4  params = u"什么我调用成功了吗"
  # 创建连接对象 5 service = HessianProxy(full_url)
  # 调用方法(重载方法__main__()里发送二进制数据请求,进行调用)
6 res = service.sayHello(params) 7 print(res)

pyhessian官方调用例子

java调用脚本

 1 import com.ymxdclass.user.service.UserService;
 2 import org.junit.BeforeClass;
 3 import org.junit.Test;
 4 import org.springframework.context.support.ClassPathXmlApplicationContext;
 5 
 6 public class ConsumerTest {
 7     static ClassPathXmlApplicationContext context;
 8     static UserService userService;
 9     @BeforeClass
10     public static void beforeClass(){
11         if(context==null) {
12             // 默认从类路径中加载配置文件
13             context = new ClassPathXmlApplicationContext("consumer.xml");
14             System.out.println("load");
15             // 在Spring中还提供了Lifecycle接口,Lifecycle中包含start/stop方法,实现此接口后Spring保证在启动的时候调用其start方法开始生命周期,主要用于控制异步处理过程
16            context.start();
17 //            System.out.println("start");
18         }
       // 创建接口实例(定义接口的引用变量,再引用实现了该接口的实例)
19 userService=(UserService) context.getBean("userService"); 20 21 } 22 @Test 23 public void consumerTestCase1(){
       // 调用方法
24 String hello = userService.sayHello("world"); 25 System.out.println("result: " ); 26 System.out.println(userService.sayHello("yummy ")); 27 } 28 29 }

猜你喜欢

转载自www.cnblogs.com/minerrr/p/10932465.html