Telnet 及 Dubbo(针对微服务)

一、相关概念和工作原理(Dubbo)(相当于一个中介)

 

二、Dubbo 接口测试

  1、RPC

    远程过程调用(Remote Procedure Call):像调用本地方法一样,调用远程方法

    常见的 RPC 框架有 Dubbo、Thrift、grpc

  2、Dubbo

       Dubbo 是一款高性能、轻量级、基于Java的开源RPC框架(最早由阿里开源,2018年贡献给Apache组织)。

    Dubb 接口的作用:远程调用 Java 写的方法,需要传参、获取返回值。

 

三、文档解析

  从中需要或取的信息

    服务名

    方法名

    参数类型、返回值类型

    补充:Java 方法定义的语法结构类型:返回值类型 方法名 (数据类型 形参1,数据类型 形参2)。void 代表该函数无返回值

  1、基于 Java 方法的接口测试

 

     void 定义的代表无返回值

 

 

四、Telnet 工具远程调用

  1、启用 Telnet(Windows是自带的,但是需要开启服务。二Mac 需要下载文件)(启动后重启电脑,打开终端输入:Telnet Client。查看是否成功)

 

  2、Telnet 调用 dubbo 接口(记住输入命令后要敲 两次回车键,)

 

 

   3、Telnet 查询dubbo对应服务(服务名为最后一个单词,点的后面。如:com.itheima.service.OrderService。OrderService为服务名,前面是包名)

    ls:进入第二步的dubbo后,通过Linux命令:ls 可以查看有多少个微服务

    ls -l 服务名:可以查看具体的服务名对应的信息(查看该服务名类下面的方法)

 

 

  4、Telnet 调用 dubbo接口(小括号里面的参数放实参)

 

 

五、Python 调用 dubbo 接口

  1、dubboclient 介绍

 

 

   2、实现步骤:

    案例 1 :(传递普通参数)(参数以 java. 开头的参数)

from dubboclient import DubboClient
#创建Dubboclient对象(指定IP 和 端口号)
dubbo_client = DubboClient("211.103.136.244",6502)

#调用服务接口(服务名,方法名,参数)
response = dubbo_client.invoke("MemberService","findByTelephone","13020210001")

#获取相应数据
print(response)

    

    案例 2 :(传递对象参数)(参数类型为:com.公司名.项目名.类名)此时就是对象参数

      自定义类 做 参数 ,根据接口文档,组织字典封死传参

      给字典加 键 k:“class”,值 v:指明 类 对应的 完整包名 和 类名(ls -l 服务名)

from dubboclient import DubboClient

#创建Dubboclient对象(指定IP 和 端口号)
dubbo_client = DubboClient("211.103.136.244",6502)

#准备add方法,所需要的数据
info = {"id":911,"name":"杜一","phoneNumber":"13049576891"}

#如果class已经存在,覆盖原有的class,如果不存在就新增一组元素到字典
info["class"] = "com.itheima.pojo.Member"

#调用服务接口(服务名,方法名,参数)
response = dubbo_client.invoke("MemberService","add",info)

#获取相应数据
print(response)

    

    案例 3 :传递列表参数

from dubboclient import DubboClient

#创建Dubboclient对象(指定IP 和 端口号)
dubbo_client = DubboClient("211.103.136.244",6502)

#准备列表数据
months = ["2021-3","2021-9"]

#调用服务接口(服务名,方法名,参数)
response = dubbo_client.invoke("MemberService","findMemberCountByMonths",months)

#获取相应数据
print(response)

    

    案例 4 :响应数据返回日期格式(日期格式很严格,注意要一定重视)

from dubboclient import DubboClient

#创建Dubboclient对象(指定IP 和 端口号)
dubbo_client = DubboClient("211.103.136.244",6502)

#准备列表数据
info = [{"orderDate":"2021-05-07 16:45:12","number":117}]        #日期格式相当严格,注意

#调用服务接口(服务名,方法名,参数)
response = dubbo_client.invoke("MemberService","add",info)

#获取相应数据
print(response)

    

    案例 5 :直接传字符串格式

from dubboclient import DubboClient

#创建Dubboclient对象(指定IP 和 端口号)
dubbo_client = DubboClient("211.103.136.244",6502)

#准备string数据
month = "2012-02"

#调用服务接口(服务名,方法名,参数)
response = dubbo_client.invoke("OrderSettingService","getOrderSettingByMonth",month)

#获取相应数据
print(response)

 

    案例 6 :修改设置数量

from dubboclient import DubboClient

#创建Dubboclient对象(指定IP 和 端口号)
dubbo_client = DubboClient("211.103.136.244",6502)

#准备数据(日期和数据)
date = {"orderDate":"2021-10-13","number":15,"class":"com.itheima.pojo.OrderSetting"}
#date["class"] = "com.itheima.pojo.OrderSetting"              #同上面的class

#调用服务接口(服务名,方法名,参数)
response = dubbo_client.invoke("OrderSettingService","editNumberByDate",date)

#获取相应数据
print(response)

 

  3、分析 bug 来源

    通过抓包工具,抓取响应解果,分析数据,查看是前端还是后端的bug


 

    

 

 

 

 

 

  

posted @ 2023-04-14 15:33  新入世界的小白  阅读(788)  评论(0编辑  收藏  举报