zoukankan      html  css  js  c++  java
  • python hessian dubbo测试

     Dubbo本身支持多种远程调用方式,例如Dubbo RPC(二进制序列化 + tcp协议)、http invoker(二进制序列化 + http协议)、hessian(二进制序列化 + http协议)、WebServices (文本序列化 + http协议)等。
        Dubbo是支持hessian+http协议调用的,hessian是一种二进制序列化的方式。咱们用python调用的dubbo的时候,就是用hessian+http的方式调用,所以dubbo项目要配置使用hessian方式序列化,如果小伙伴要用python调用的时候,注意要找开发小哥哥在项目里面改成hessian方式的序列化,也就是改个配置文件的事,不影响原来的项目,如下图:

    接口说明


    既然做接口测试,那接口的说明是必须的,问开发GG要,不要问从哪里来。。。。大致包括如下内容:

    接口地址

    http://192.168.133.129:20880/com.unj.dubbotest.provider.DemoService

    接口名

    com.unj.dubbotest.provider.DemoService 

    方法

    sayHello,getUsers 

    参数

    name

     

    python调用环境


    1、让开发GG把项目里的dubbo加上hessian方式,绿色公害无污染

    2、下载python-hessian-master,地址:https://github.com/theatlantic/python-hessian

    3、安装,解压后进入该目录,运行python setup.py install

    到这里我们python的调用环境就ok了

    #引入相关包
    from pyhessian.client import HessianProxy
    
    url = 'http://192.168.133.129:20880/'  #接口地址
    interface = 'com.unj.dubbotest.provider.DemoService' #接口名
    full_url=url+interface
    params='xiaoqiang'#参数
    
    service = HessianProxy(full_url)
    res = service.sayHello(params) #sayHello是接口里的方法
    print(res)


    ==============================================================

    Dubbo python client

    github :https://github.com/apache/dubbo-python
    github中安装方法,就不再介绍,也可以直接在 pycharm 里面搜索 dubbo-client,安装 作者是Joe Cao的那个

    python 代码

    # -*- coding: utf-8 -*-
    
    from dubbo_client import ApplicationConfig, ZookeeperRegistry, DubboClient, DubboClientError
    
    service_interface = 'com.truthso.monitor.service.CompareService'
    registry = ZookeeperRegistry('127.0.0.1:2181')
    compare_provider = DubboClient(service_interface, registry, version='1.0.0', group='gaopin')
    
    print compare_provider .compare({
        u'width': 650,
        u'height': 433,
        u'phash': u'1011100001101000101100001101110101101100101001010101111001001010',
        u'sum': 5429,
        u'ave': 5.0,
        u'dc': 4331,
        u'rSum': 144219,
        u'gSum': 142677,
        u'bSum': 136723,
        u'hash': 4064693128758910538,
    }):
    

      

    很好理解 service_interface 是我们调用的接口的名称
    ZookeeperRegistry 是 zookeeper 的地址
    DubboClient 中 version 是接口的版本,group 是想要调用的接口所在的group
    直接调用 compare_provider 的具体某一个方法
    注意
    group 无法指定为 * 会报错说找不到
    provider 提供的服务的形式 jsonrpc 也就是,protocol Name 的方式是 jsonrpc 不然无法python调用的时候会报错找不到,但是java可以
    但是 如果以前是 protocol 是 dubbo 的方式,现在是 jsonrpc ,可能在java中的处理会有不同,比如返回的原来是对象,现在可能是个json

    服务提供provider的改变
    因为我的项目是动态提供的服务,也就是服务的配置是从 mysql 中读取的,用的是编码的方式提供的

    ApplicationConfig applicationConfig = new ApplicationConfig();
    applicationConfig.setName(config.getApplicationName());
    
     RegistryConfig registryConfig = new RegistryConfig();
     registryConfig.setAddress(config.getRegistryAddress());
    
     ProtocolConfig protocol = new ProtocolConfig();
     protocol.setName(config.getProtocolName());
     protocol.setPort(config.getProtocolPort());
    
     CompareServiceImpl impl = new CompareServiceImpl();
    
     ServiceConfig<CompareService> service = new ServiceConfig<>();
     service.setApplication(applicationConfig);
     service.setRegistry(registryConfig);
     service.setProtocol(protocol);
     service.setInterface(CompareService.class);
     service.setRef(impl);
     service.setVersion(config.getVersion());
     service.setGroup(config.getGroup());
    
     service.export();
    

      

    ProtocolConfig 相关的配置都是在数据库里面所以,只需要把ProtocolName设置为 jsonrpc 就行

    注意
    需要添加 maven

    <dependency>
    <groupId>org.apache.dubbo</groupId>
    <artifactId>dubbo-rpc-jsonrpc</artifactId>
    <version>2.7.2</version>
    </dependency>
    总结:
    虽然能调通,但是感觉很多功能不全,比入group直接指定为 * 就不行
    如果想用 python client ,provider 必须是 jsonrpc

     
  • 相关阅读:
    Java在控制台运行IDE工具编写的程序
    mysql数据库执行存储过程问题
    Java之正则表达式在字符串中查找中文
    java之endwith()方法以及正则表达式匹配中文
    工具资源 Java并发编程:CountDownLatch、CyclicBarrier和 Semaphore
    5、概率图模型 Inference-Variable_Elimination
    4、概率图模型:Template Modles
    3、概率图模型:Local Structure in Markov Network
    2、概率图模型: Markov Random Fields
    1、概率图模型: Bayesian Networks
  • 原文地址:https://www.cnblogs.com/SunshineKimi/p/12721859.html
Copyright © 2011-2022 走看看