zoukankan      html  css  js  c++  java
  • (转载)dubbo接口测试

     

    关于dubbo:

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

    官网介绍地址

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

    管理控制台的编译安装:

    • 新版管理控制台主要的作用:服务查询,服务治理(包括Dubbo2.7中新增的治理规则)以及服务测试、配置管理

    复制代码
    # 克隆项目到本地,并编译安装和启动(如果是Windows下,则在powershell进行)
    git clone https://github.com/apache/incubator-dubbo-ops.git

    # 切到项目根目录 cd incubator-dubbo-admin-develop

    # 编译构建 mvn clean package

    # 修改配置文件,指定注册中心地址
    dubbo-admin-server/src/main/resources/application-production.properties

     # 主要的配置有:

      admin.config-center=zookeeper://127.0.0.1:2181

      admin.registry.address=zookeeper://127.0.0.1:2181 

      admin.metadata-report.address=zookeeper://127.0.0.1:2181

    # 启动服务
    cd dubbo-distribution/target
    java -jar dubbo-admin-0.1.jar
    # 或以下命令启动服务
    mvn --projects dubbo-admin-server spring-boot:run
    启动完成后,直接访问http://localhost:8080
    复制代码

    如何测试dubbo接口:

    Python hessian+http的方式调用:

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

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

    官方配置多协议例子

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

    3、安装 python-hessian

    python -m pip install python-hessian

    4、编写Python脚本调用接口

    # coding=utf-8
    import pytest
    from pyhessian.client import HessianProxy


    class TestDubbo(object):
    url = "http://169.254.210.145:1234/"
    interface = "com.ymxdclass.user.service.UserService"
    full_url = url + interface
    # full_url = "http://169.254.210.145:8888/com.xdclass.user.service.FileService"
    def testsayHelloWithSpec(self):
    params = u"什么我调用成功了吗"
    # 创建连接对象
    service = HessianProxy(self.full_url)
    # 重载方法__call()__里发送二进制数据进行请求,调用方法
    res = service.sayHello(params)
    assert "什么我调用成功了吗" in res
    print(res)

    # @pytest.mark.skip()
    def testsayHelloWithInt(self):
    params = 123
    service = HessianProxy(self.full_url)
    res = service.sayHello(params)
    assert 123 in res
    print(res)

    if __name__ == "__main__":
    pytest.main(["-q","TestDubbo.py"])

    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 import static org.hamcrest.CoreMatchers.containsString;
      import static org.junit.Assert.assertThat;
     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 assertThat(hello,containsString("world"); 26 System.out.println(hello); 27 } 28 29 }
    复制代码
    已经认知自己的错误,就该去弥补,为了让之后的日子做到无怨无悔,我必须每天都奋斗!!!
  • 相关阅读:
    新建安卓项目后,manifest.xml中会出现大段的黄色警告
    TextView设置setCompoundDrawables不生效解决办法
    数据结构->队列->顺序循环队列ADT代码
    数据结构->栈->顺序栈ADT代码
    JAVA环境变量的配置
    计算机科学的范围-----18.12.08
    字符串复制
    扔鸡蛋问题和找零钱问题
    动态规划
    最小二乘法
  • 原文地址:https://www.cnblogs.com/LYLNICE/p/12024319.html
Copyright © 2011-2022 走看看