记录一次初用dubbo服务之间用文件做参数经验教训总结

场景:项目有一个导出模板功能,将数据写入指定模板然后再将写好数据的模板导出,在开发时一切正常能将模板导出,但是一部署到服务器就就报错,错误类容大概是File类型的参数不能被序列化之类的。由于是第一次使用dubbo不知道是什么情况,所以花了一点时间查找资料解决问题后总结如下:   

Dubbo支持配置多种协议,包括Hessian协议,HTTP协议,WebService协议等。我们在使用dubbo构建我们的rpc服务时要根据通信的场景来选择合适的协议。在单体项目中Flie类型的参数是没有任何问题的,但是在dubbo中服务之间用File类型的参数时就会出现问题,因为dubbo自身是不支持File文件类型的参数,因为Flie是磁盘文件的抽象,不是具体数据,也就不能被序列化。

       针对Dubbo服务之间传输文件一般会有两种方式:

  1. 将文件转换成byte[]数据,使用默认缺省协议也就是dubbo协议。缺点:不适合大文件,除非并发量很小。

  2. 使用Hessian协议进行传输。Hessian是一种二进制编码协议,通过字节流传输文本内容,效率比较高。

最后的话:不积跬步无以至千里,不积小流无以成江海!

你可能感兴趣的:(点点滴滴)