码农知识堂 - 1000bd
  •   Python
  •   PHP
  •   JS/TS
  •   JAVA
  •   C/C++
  •   C#
  •   GO
  •   Kotlin
  •   Swift
  • 关于Dubbo传输协议与上传文件的坑


    关于Dubbo传输协议与上传文件的坑

    1.Dubbo传输协议
    • Dubbo协议
    • Hessian协议
    • HTTP协议
    • RMI协议
    • WebService协议
    • Thrift协议
    • Memcached协议
    • Redis协议
    2.主要说一下Dubbo协议和Hessian协议的适用情况

    Dubbo协议采用单一长连接和NIO异步通讯,适合于小数据量大并发的服务调用,以及服务消费者机器数远大于服务提供者机器数的情况

    Hessian协议用于集成Hessian的服务,Hessian底层采用Http通讯,采用Servlet暴露服务。适用场景:传入传出参数数据包较大,提供者比消费者个数多,提供者压力较大,可传文件。因此比较高效的做法是带上传下载文件的服务使用hessian协议,去普通的服务使用dubbo协议。

    3.上传文件时遇到的坑

    最近在做FastDFS图片服务器上传图片功能,遇到了如下的问题。

    com.alibaba.com.caucho.hessian.io.HessianProtocolException: ‘org.springframework.web.multipart.commons.CommonsMultipartFile’ could not be instantiated

    问题原因:通过Dubbo协议传输时,使用RPC协议传输,数据需要经过序列化和反序列化的过程,我们往往需要将传输对象进行序列化操作,而如果传输MultipartFile等File类型文件时,由于common-upload包装返回的是一个common的类,而这个类我们不可能去改源码序列化它,所以传输时会报出如下的错误提示。
    在这里插入图片描述
    在这里插入图片描述

    4.解决方法

    第一种解决方法,在Controller层里将MultipartFile file进行处理,将MultipartFile进行处理,改为byte[]数据传输到服务层。

    return picUploadService.picUpload(uploadFile.getBytes(),pic_type);//通过getBytes方法传输byte[]类型数据
    
    • 1

    第二种解决方法,使用Hessian协议,进行如下修改

    修改之前

    	
        
        
    
    • 1
    • 2
    • 3

    修改之后

    
        
        
    
    • 1
    • 2
    • 3
    5.如何选择

    可以详细了解一下两种协议的区别和使用的坑,根据自己业务情况选择。

  • 相关阅读:
    智源AI日报(2022-08-29): 2022谷歌博士奖学金名单公布:共61人获奖,新增推荐系统方向
    项目经理晋升为企业高管,需要杀死自己三次
    Windows编写批处理脚本.bat启动jar文件
    【滤波跟踪】基于matlab扩展卡尔曼滤波的无人机路径跟踪【含Matlab源码 2236期】
    PAM从入门到精通(一)
    如何在postman中实现自动化测试?
    Java 如何借助InputStream读取网络图片呢?
    【PHPWord】PHPOffice 套件之PHPWord快速入门
    13、化“危机”为“契机”
    【云原生之Docker实战】使用Docker部署Trilium个人笔记工具
  • 原文地址:https://blog.csdn.net/m0_67391401/article/details/126565052
  • 最新文章
  • 攻防演习之三天拿下官网站群
    数据安全治理学习——前期安全规划和安全管理体系建设
    企业安全 | 企业内一次钓鱼演练准备过程
    内网渗透测试 | Kerberos协议及其部分攻击手法
    0day的产生 | 不懂代码的"代码审计"
    安装scrcpy-client模块av模块异常,环境问题解决方案
    leetcode hot100【LeetCode 279. 完全平方数】java实现
    OpenWrt下安装Mosquitto
    AnatoMask论文汇总
    【AI日记】24.11.01 LangChain、openai api和github copilot
  • 热门文章
  • 十款代码表白小特效 一个比一个浪漫 赶紧收藏起来吧!!!
    奉劝各位学弟学妹们,该打造你的技术影响力了!
    五年了,我在 CSDN 的两个一百万。
    Java俄罗斯方块,老程序员花了一个周末,连接中学年代!
    面试官都震惊,你这网络基础可以啊!
    你真的会用百度吗?我不信 — 那些不为人知的搜索引擎语法
    心情不好的时候,用 Python 画棵樱花树送给自己吧
    通宵一晚做出来的一款类似CS的第一人称射击游戏Demo!原来做游戏也不是很难,连憨憨学妹都学会了!
    13 万字 C 语言从入门到精通保姆级教程2021 年版
    10行代码集2000张美女图,Python爬虫120例,再上征途
Copyright © 2022 侵权请联系2656653265@qq.com    京ICP备2022015340号-1
正则表达式工具 cron表达式工具 密码生成工具

京公网安备 11010502049817号