web 对接 platform

一个项目拆成web和platform,web不对接数据库,只调用各个platform,每个平台负责出一个httpclient的client-jar包,封装好curd方法给web端调用,入参和出参用jar包的d

 

web调用platform的方法是用走controller,现在重复走了很多遍层,现在把platform的controller删掉,接口抽象到client-jar包里面,那么web也可以直接调用

jar包上的接口的时候使用动态代理(代表不用一条条去写),带上方法的参数类型(防止重载情况,int, Number,Integer)拼接一条url,host/rpc/类名/方法名,通过httpclient发送请求,platform这边由于json带了参数类型,正常的controller接受不了

platform使用一个filter来匹配拦截rpc的路径,通过url上的类名,从spring容器里面获得bean,通过bean来getclass,和穿过来param类型获得方法,最好通过方法,对象,入参数据,获得返回数据,转成json传回去

 

 

把每个client-jar包的共有部分拆出来作为公司的common包,有HTTP client,proxy factory工厂,proxy的handler代理类,实现心跳检查(像zookeeper一样,维护一个path的节点)雨燕是自己扫瞄client,根据service名字和zk联系,我这里写得启动时候硬编码,沒有zk,迫不得以用一个Router传来传去

client-jar抽象成用来描述平台接口和入参出参的dto和枚举类

接下来就是全部封装好就是透明的方法对接方法,换言之,httpclient帮我们完成网络调用,动态代理帮我们动态编程,dubbo,spring could帮我们完成了上面两部,zk还是作为third party帮我们解耦注册中心(不用我们写一个host list)(Balanced load在调用方写)

 

 

demo2是为了实现多个服务,

 

 下面三个是web - client - platform版本

 

上面就是ins-deme-util  分解了ins-demo-common和ins-demo-client

posted on 2019-03-05 13:58  Kooing  阅读(286)  评论(0编辑  收藏  举报

导航