在SpringBoot网站需要上传Exce并且解析内容存入数据库的场景

孙大诚_SunRobin 2019-07-25 05:06:02
需求是用户上传Excel,解析然后把结果存入数据库。

以前是一个C#写的桌面应用,分为两部分,客户端与服务端,客户端为用户界面,用于上传文件,服务端接收文件并分析。之间通过TCP连接。用户上传文件后,客户端会一直等待,直到服务端处理完毕,TCP连接才关闭。

现在需要SpringBoot改写这个程序。

如果是使用类似的阻塞式,用户通过浏览器上传文件后,服务器一直处理,先别返回,一直等到文件处理完毕后,http再返回。这样做有什么弊端吗?

如果不用这种阻塞式的,该怎么设计呢?

...全文
522 6 打赏 收藏 转发到动态 举报
写回复
用AI写文章
6 条回复
切换为时间正序
请发表友善的回复…
发表回复
我爱娃哈哈 2019-07-29
  • 打赏
  • 举报
回复
引用 2 楼 孙大诚_SunRobin 的回复:
[quote=引用 1 楼 我爱娃哈哈 的回复:] 这种上传加写入肯定不能使用阻塞式的,可以在上传和处理时给前端返回一个“处理中”的标志,等处理完成后状态改为“处理完成”。处理中时用户可以做其他的事情,等标志为处理完成时,才可以继续后续的操作。
如果排除掉用户体验这块,用户可以等待服务器处理完成。从技术角度讲,这种阻塞式的模式有什么弊端吗?[/quote] 没弊端,开心就好
maradona1984 2019-07-26
  • 打赏
  • 举报
回复
引用 4 楼 孙大诚_SunRobin 的回复:
[quote=引用 3 楼 maradona1984 的回复:] [quote=引用 2 楼 孙大诚_SunRobin 的回复:] [quote=引用 1 楼 我爱娃哈哈 的回复:] 这种上传加写入肯定不能使用阻塞式的,可以在上传和处理时给前端返回一个“处理中”的标志,等处理完成后状态改为“处理完成”。处理中时用户可以做其他的事情,等标志为处理完成时,才可以继续后续的操作。
如果排除掉用户体验这块,用户可以等待服务器处理完成。从技术角度讲,这种阻塞式的模式有什么弊端吗?[/quote] 这个无非是占用大量资源罢了,如果多个人同时上传解析excel,内存第一个撑不住,其他的倒是无所谓,排队式的肯定安全一点 当然阻塞式的方式也是能做到排队,体验不好罢了,会导致用户重复提交,一样会加大服务器压力[/quote] http在keep-alive的情况下,如果TCP管道处于长时间的连接,但是没有内容传输,也没有心跳包什么的,会被服务器端或者浏览器端强行关闭吗? 我是在考虑如果一个Excel处理需要5分钟,而这5分钟的时候,http占用的TCP一直处于连接状态但没有内容传输,是不是有被关闭的风险[/quote] 这个跟客户端和服务端的配置有关,服务器配置依据你的架构决定,包括反向代理服务器/网关/微服务中的服务超时时间等等
孙大诚_SunRobin 2019-07-26
  • 打赏
  • 举报
回复
引用 3 楼 maradona1984 的回复:
[quote=引用 2 楼 孙大诚_SunRobin 的回复:] [quote=引用 1 楼 我爱娃哈哈 的回复:] 这种上传加写入肯定不能使用阻塞式的,可以在上传和处理时给前端返回一个“处理中”的标志,等处理完成后状态改为“处理完成”。处理中时用户可以做其他的事情,等标志为处理完成时,才可以继续后续的操作。
如果排除掉用户体验这块,用户可以等待服务器处理完成。从技术角度讲,这种阻塞式的模式有什么弊端吗?[/quote] 这个无非是占用大量资源罢了,如果多个人同时上传解析excel,内存第一个撑不住,其他的倒是无所谓,排队式的肯定安全一点 当然阻塞式的方式也是能做到排队,体验不好罢了,会导致用户重复提交,一样会加大服务器压力[/quote] http在keep-alive的情况下,如果TCP管道处于长时间的连接,但是没有内容传输,也没有心跳包什么的,会被服务器端或者浏览器端强行关闭吗? 我是在考虑如果一个Excel处理需要5分钟,而这5分钟的时候,http占用的TCP一直处于连接状态但没有内容传输,是不是有被关闭的风险
maradona1984 2019-07-26
  • 打赏
  • 举报
回复
引用 2 楼 孙大诚_SunRobin 的回复:
[quote=引用 1 楼 我爱娃哈哈 的回复:] 这种上传加写入肯定不能使用阻塞式的,可以在上传和处理时给前端返回一个“处理中”的标志,等处理完成后状态改为“处理完成”。处理中时用户可以做其他的事情,等标志为处理完成时,才可以继续后续的操作。
如果排除掉用户体验这块,用户可以等待服务器处理完成。从技术角度讲,这种阻塞式的模式有什么弊端吗?[/quote] 这个无非是占用大量资源罢了,如果多个人同时上传解析excel,内存第一个撑不住,其他的倒是无所谓,排队式的肯定安全一点 当然阻塞式的方式也是能做到排队,体验不好罢了,会导致用户重复提交,一样会加大服务器压力
孙大诚_SunRobin 2019-07-26
  • 打赏
  • 举报
回复
引用 1 楼 我爱娃哈哈 的回复:
这种上传加写入肯定不能使用阻塞式的,可以在上传和处理时给前端返回一个“处理中”的标志,等处理完成后状态改为“处理完成”。处理中时用户可以做其他的事情,等标志为处理完成时,才可以继续后续的操作。
如果排除掉用户体验这块,用户可以等待服务器处理完成。从技术角度讲,这种阻塞式的模式有什么弊端吗?
我爱娃哈哈 2019-07-25
  • 打赏
  • 举报
回复
这种上传加写入肯定不能使用阻塞式的,可以在上传和处理时给前端返回一个“处理中”的标志,等处理完成后状态改为“处理完成”。处理中时用户可以做其他的事情,等标志为处理完成时,才可以继续后续的操作。

67,513

社区成员

发帖
与我相关
我的任务
社区描述
J2EE只是Java企业应用。我们需要一个跨J2SE/WEB/EJB的微容器,保护我们的业务核心组件(中间件),以延续它的生命力,而不是依赖J2SE/J2EE版本。
社区管理员
  • Java EE
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧