Java sample--Dubbo协议

一、RPC原理介绍

    RPC(Remote Procedure Call Protocol)- 远程过程调用协议,一个通俗的描述是:客户端在不知道调用细节的情况下,调用存在于远程计算机上的某个对象,就像调用本地应用程序中的对象一样。比较正式的描述是:一种通过网络从远程计算机程序上请求服务,而不需要了解底层网络技术的协议。

    1、这个过程用一张图描述如上,调用方与服务方的处理步骤都是非常清晰的。 这个过程存在最大的问题是什么呢?

回答:调用方太麻烦了,每次都要关注很多底层细节
( 1 )入参到字节流的转化,即序列化应用层协议细节
( 2 ) socket 发送,即网络传输协议细节
( 3 ) socket 接受
( 4 )字节流到出参的转化,即反序列化应用层协议细节

    2、能不能调用层不关注这个细节呢?能不能降低各类复杂性?
RPC 框架要向调用方屏蔽各种复杂性,要向服务提供方也屏蔽各类复杂性 :
( 1 )调用方感觉就像调用本地函数一样
( 2 )服务提供方感觉就像实现一个本地函数一样来实现服务
所以整个 RPC 框架又分为 client 部分与 server 部分,负责把整个非( 1 )( 2 )的各类复杂性屏蔽,这些复杂性就是 RPC 框架的职责

再细化一些, client 端又包含:序列化、反序列化、连接池管理、负载均衡、故障转移、队列管理,超时管理、异步管理等等等等职责。
server 端包含:服务端组件、服务端收发包队列、 io 线程、工作线程、序列化反序列化、上下文管理器、超时管理、异步回调等等等等职责

 

二、Dubbo架构介绍

    Dubbo是一个分布式服务框架,致力于提供高性能和透明化的RPC远程服务调用方案,以及SOA服务治理方案
其核心部分包含:
1. 远程通讯: 提供对多种基于长连接的NIO框架抽象封装,包括多种线程模型,序列化,以及“请求-响应”模式的信息交换方式。
2. 集群容错: 提供基于接口方法的透明远程过程调用,包括多协议支持,以及软负载均衡,失败容错,地址路由,动态配置等集群支持。
3. 自动发现: 基于注册中心目录服务,使服务消费方能动态的查找服务提供方,使地址透明,使服务提供方可以平滑增加或减少机器
架构图:
                       
    节点角色说明
节点    角色说明
Provider    暴露服务的服务提供方
Consumer    调用远程服务的服务消费方
Registry    服务注册与发现的注册中心
Monitor    统计服务的调用次数和调用时间的监控中心
Container    服务运行容器

0、服务容器负责启动,加载,运行服务提供者。
1、服务提供者在启动时,向注册中心注册自己提供的服务。
2、服务消费者在启动时,向注册中心订阅自己所需的服务。
3、注册中心返回服务提供者地址列表给消费者,如果有变更,注册中心将基于长连接推送       变更数据给消费者。
4、服务消费者,从提供者地址列表中,基于软负载均衡算法,选一台提供者进行调用,如       果调用失败,再选另一台调用
5、服务消费者和提供者,在内存中累计调用次数和调用时间,定时每分钟发送一次统计数       据到监控中心

 

三、Java Sampler

核心步骤:
    public Arguments getDefaultParameters();设置可用参数及的默认值;
    public void setupTest(JavaSamplerContext arg0):每个线程测试前执行一次,做一些初始化工作;
    public SampleResult runTest(JavaSamplerContext arg0):开始测试,从arg0参数可以获得参数值,这是测试主体,runTest()方法返回一个SampleResult测试结果;
    public void teardownTest(JavaSamplerContext arg0):测试结束时调用
 

四、Java-dubbo sampler开发步骤

1、测试dubbo协议,就是要模拟消费端
2、拿到服务端的interface、method
3、java sampler脚本
    A、getDefaultParameters()    设置参数及默认值    
    B、setupTest()    dubbo连接初始化
    C、runTest()    发送请求,需要做Jmeter设置:起止时间、requestdata、responsedata,responsecode、responsemessage
    D、调试
4、打jar包java sampler,放到apache-jmeter-3.1\lib\ext下面
5、开始创建脚本

 

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章