# dubbo-task **Repository Path**: lixing20080830/dubbo-task ## Basic Information - **Project Name**: dubbo-task - **Description**: 第三阶段 该阶段为分布式学习提供理论基础,如分布式一致性协议Paxos、远程过程调用RPC等,并对分布式中间件Dubbo和SpringCloud进行深入剖析。 模块三 高性能RPC框架Apache Dubbo 本模块对Apache的Dubbo框架进行深入讲解,涉及架构设计、SPI机制、高级使用及其源码分析等内容 - **Primary Language**: Unknown - **License**: Not specified - **Default Branch**: master - **Homepage**: None - **GVP Project**: No ## Statistics - **Stars**: 0 - **Forks**: 0 - **Created**: 2020-05-12 - **Last Updated**: 2020-12-17 ## Categories & Tags **Categories**: Uncategorized **Tags**: None ## README #### 编程题一:将Web请求IP透传到Dubbo服务中 #### 通过扩展Dubbo的Filter(TransportIPFilter),完成Web请求的真实IP透传到Dubbo服务当中,并在Dubbo服务中打印请求的IP #### 题目要求: #### 1. 构建一个Web项目(A),提供一个HTTP接口;构建2个Dubbo服务(B和C),各提供一个Dubbo接口,被Web项目调用(如下图所示) #### 2. 从Web项目获取请求的IP,通过TransportIPFilter完成把IP设置到RpcContext中 #### 3. 在两个Dubbo项目(B和C)中,从RpcContext获取IP并打印到控制台,B和C都应该正确打印IP #### 4. 注意:不可在业务方法调用Dubbo接口前采用硬编码的方式设置IP ##### 答: ##### 1)、运行 service-provider以及service-provider下的DubboPureMain类(前提是本地zk已经启动); ##### 2)、运动 dubbo-web下的Application类 ##### 3)、浏览器输入: http://127.0.0.1:8085/lagou/test?name=test 即可看到步骤1)中打印的请求ip地址 #### 编程题二:简易版Dubbo方法级性能监控 #### 在真实业务场景中,经常需要对各个业务接口的响应性能进行监控(常用指标为:TP90、TP99) #### 下面通过扩展Dubbo的Filter(TPMonitorFilter),完成简易版本 Dubbo 接口方法级性能监控,记录下TP90、TP99请求的耗时情况 #### 题目要求: #### 1. 编写一个Dubbo服务,提供3个方法(methodA、methodB、methodC),每方法都实现了随机休眠0-100ms #### 2. 编写一个消费端程序,不断调用Dubbo服务的3个方法(建议利用线程池进行并行调用,确保在1分钟内可以被调用2000次以上) #### 3. 利用TPMonitorFilter在消费端记录每个方法的请求耗时时间(异步调用不进行记录) #### 4. 每隔5s打印一次最近1分钟内每个方法的TP90、TP99的耗时情况 ##### 答: ##### 1)、运行 service-provider下的DubboPureMain类(前提是本地zk已经启动); ##### 2)、运行serice-consumer下的AnnotationConsumerMain类即可看到consumer端打印的日志信息