前面两篇反射,分别介绍了如何封装参数和定位方法,对于最终的反射调用,还缺少的是目标类的确定和方法执行;本篇博文将目标集中在这最后一块
链上上两篇文章地址
前面两篇反射,分别介绍了如何封装参数和定位方法,对于最终的反射调用,还缺少的是目标类的确定和方法执行;本篇博文将目标集中在这最后一块
链上上两篇文章地址
全程实录上篇,主要介绍了如何解析传入的String参数为我们目标方法的参数类型和对象,其中主要讲述的是基本类型、Class类型、泛型以及普通的POJO类型转换;我们这一篇,目的则放在如何找到需要执行的类和方法,这里需要借助前面的参数解析结果来确定目标方法
反射可以说是java中非常强大的一个特性了,而我们的quick-fix整个项目,也都是基于反射的基础实现任意目标方法的调用执行,对于fix项目而已,核心在于以下几点
简单来讲,就是封装参数为目标类型,定位目标,然后执行
如何实现应用内外交互,是Quick-Fix框架的核心之一,我们常见的应用有提供web服务的(如Spring应用),有进行大数据计算的(如Storm应用),有提供rpc的后台服务(如通过dubbo提供rpc的数据服务),有纯jar服务等;基本上我们可以划分为两类
针对上面这两种case,我们应该怎么来设计一套应用内外交互的方案,来实现接收外部请求,执行应用内部方法或访问应用内部数据,并返回结果的目的?
目前Quick-Fix框架提供了两种类型,三中不同场景下的Fixer,一种是以Jar方式启动的,一个是基于Spring生态体系玩法的,下面主要介绍这jar方式,如何使用QuickFix来实现应用内服务调用和数据订正
在我们的实际工作中,当我们遇到别人反馈代码出问题了吧,怎么返回的数据不对?
当应用持续跑了一段时间之后,这个时候我们的第一个反应基本是确认能复现么?如果能复现,那么调用的姿势是不是对的?如果确认姿势没问题,那么就是请求参数不对了!!! 如果请求参数还没有问题,卧槽,这下完了,真可能有bug了,这下怎么办?
接下来,一般的讨论是在测试环境复现一下,如果能复现,那么开启debug(或者远程debug),一行行调试,相信很快就能搞定了;
但是,最怕的就是但是,测试环境没法复现,至于线上环境才有问题,这下怎么搞?
另外一个场景就是为了提升服务性能,缓存基本上会被大量的使用在各个系统之间;有缓存,那么就会有缓存不一致的问题,如果缓存用的是外部的如(redis/memcache)之类的,那么缓存数据的查询和订正,就相对简单了;但是,如果我们使用了内存作为数据的缓存,比如(hashmap, guava),这种时候,我想知道这个内存中的数据怎么办?我想修改这个内存的中的数据怎么办?
上面两个场景,归纳一下主要是两个问题
Update your browser to view this website correctly. Update my browser now