发表于: 2017-09-30 16:46:19

2 885


完成的:

收获:

aop里无法直接传递request,可使用全局spring容器提供的request

本来是用环绕通知切controller,加上异步处理后拦截器和controller异步进行,通知里没法先行获得controller的返回值,return为null。后来改成前置通知,加@async。

问题:

2.采用后置aop,用户每次操作后都会进行日志处理,会影响controller处理时间,降低接口性能。

可以将每次操作放入线程池,设置定时任务批处理记录日志的操作。

3. 如果只在一台服务器上做假分布式,会带来许多额外的问题。
在服务化之前,业务通常都是本地API调用,本地方法调用性能损耗较小。服务化之后,服务提供者和消费者之间采用远程网络通信,增加了额外的性能损耗。
1) 客户端需要对消息进行序列化,主要占用CPU计算资源。
2) 序列化时需要创建二进制数组,耗费JVM堆内存或者堆外内存
3) 客户端需要将序列化之后的二进制数组发送给服务端,占用网络带宽资源
4) 服务端读取到码流之后,需要将请求数据报反序列化成请求对象,占用CPU计算资源
5) 服务端通过反射的方式调用服务提供者实现类,反射本身对性能影响就比较大
6) 服务端将响应结果序列化,占用CPU计算资源
7) 服务端将应答码流发送给客户端,占用网络带宽资源
8) 客户端读取应答码流,反序列化成响应消息,占用CPU资源。

除此之外,分布式的事务管理配置起来也很有难度,首先DAL把数据源封装起来了,如果想要获取数据源,难度极大,怕是要看源码。另外就算取出了数据源,如何通过web端引用服务端的数据源也是个问题。



返回列表 返回列表
评论

    分享到