Web 技术研究所

我一直坚信着,Web 将会成为未来应用程序的主流

业务不要强依赖部署方式

  最近有一个文件上传的需求,这个文件上传还不是一步到位的,第一步是先传到服务器,然后客户端发起一个最终的确定请求才会真正存下来。那么问题来了,第一步之后文件存在哪里?很多人可能会直接丢在内存,但如果考虑服务部署在一个分布式的集群上又应该怎么解决呢?
  其实就算是分布式,丢在内存里也不会有什么问题。只要在负载均衡的机器上做好 IP hash 即可。这样同一个用户的两次访问就可以被分配到同一台机器上。虽然这个方案可以解决问题,但我觉得这是风险极高的。这就依赖了部署方式来跑业务了。如果哪天 IP hash 的策略由于其它原因被去掉的话这个业务就会挂掉。
  这种场景的正确处理方式应该是使用一个文件存储服务来存储临时文件,让客户端发起的请求依然保持无状态的。如果不希望有冗余存储还可以在第一步上传成功时注册一个定时任务,如果一段时间内还没有被确认就自动在文件存储服务上删除掉。
  通过这个问题,我们可以延伸到整个队部署方式强依赖的场景。这个问题只是对 IP hash 有强依赖而已。有些业务还对系统时区有强依赖,如果系统时区不是北京时间就直接瘫痪掉。有些业务对文件以独占方式打开,导致单机只能开启单实例。
  我觉得作为业务就应该和部署方式隔离开来,对部署方式强依赖会造成后续的扩容等事情出问题。
网名:
50.16.97.*
电子邮箱:
仅用于接收通知
提交 悄悄的告诉你,Ctrl+Enter 可以提交哦
神奇海螺
[查看全部主题]
各类Web技术问题讨论区
发起新主题
本模块采用即时聊天邮件通知的模式
让钛合金F5成为历史吧!
次碳酸钴的技术博客,文章原创,转载请保留原文链接 ^_^