首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往
您找到你想要的搜索结果了吗?
是的
没有找到

上传文件服务与web服务分离

业务场景: 1. 后端服务为java web应用,使用tomcat容器,多实例集群化部署。 2. 前端使用nginx作为后端应用的反向代理。 业务需求: 现在需要在java web应用端上传文件,同时还要能支持文件下载。 设计方案: 1. 文件应该专门使用文件服务器进行存储,在数据库中存储文件下载链接即可。 2. tomcat容器本身不擅长做文件上传下载的事情,所以最好将文件上传下载的功能与web服务分离,比如使用nginx作为文件服务器。 具体实现: 通常,针对简单的应用,可以使用NFS,在web端上传文件后直接写到文件服务器;或者将文件上传到web应用之后,再将文件同步到文件服务器。 不论是通过NFS或者任何其他同步工具的方式,都存在文件中转的过程,必须先将文件通过web应用进行上传保存,再同步到文件服务器。中间可能存在同步出错或延时,也存在扩展性不好的问题。 所以,设计实现方案如下: 1. 使用http协议通过web表单方式上传文件。 2. 在文件服务器上部署web服务器,专门用于文件上传。 3. 通常在web应用中上传文件时,除了上传文件数据,还需要传递一些文字。文字保存在数据库中,文件保存在服务器上,同时将生成文件下载链接保存在数据库。 4. 通过MD5校验文件内容,避免相同文件因为文件名不同而被恶意上传导致大量垃圾文件占满磁盘空间。

01

推荐一款 在线+离线数据 同步框架 Dotmim.Sync

移动智能应用可以分为在线模式、纯离线模式与“在线+离线”混合模式。在线模式下系统数据一般存储在服务器端的大中型数据库(如 SQL Server、Oracle、MySQL 等),移动应用依赖于稳定可靠的网络连接;纯离线模式下系统数据一般存储在移动终端的轻量级数据库(如 SQLite等),移动应用不需要网络连接;“在线+离线”混合模式则比较复杂,通常情况下系统数据存储在服务器端,移动终端暂存部分数据,因而形成了分布式异构数据库。在移动应用运行过程中,当移动终端或服务器端执行数据更新操作后,为了保证数据的完整性和一致性,需要进行双向的数据同步。然而,由于移动网络本身具有复杂性、动态性、弱连接性以及通信延迟与带宽相对有限等特性,因而移动应用的数据同步技术备受考验。

03

架构训练营模块二作业

朋友圈复杂度分析: 业务复杂度:朋友圈的业务复杂度比较低,只有内容发布、查看和评论和点赞等内容。 质量复杂度:朋友圈的用户非常多,微信的用户数量都会有朋友圈功能,根据张小龙在“2021微信公开课PRO”中的演讲,每天有10.9亿用户打开微信,3.3亿用户进行了视频通话;有7.8亿用户进入朋友圈,1.2亿用户发表朋友圈,其中照片6.7亿张,短视频1亿条;有3.6亿用户读公众号文章,4亿用户使用小程序。 可知,微信朋友圈的PV每天约为7.8亿,绝大部分人都会在白天查看朋友圈,在0点-6点相对是朋友圈活跃度最低的时间段,这部分的PV忽略不计,按18小时计算。 可以得到平均的QPS为12000,考虑到在某些时间段如中午吃饭、上下班路上使用朋友圈的情况会相对集中,因此,可以考虑峰值是平均值的5倍,那么高峰期的QPS大约为60000/s。 再查看朋友圈的时候,基本上查看朋友的人都会点赞,那么点赞功能的TPS可能是查看QPS的百分之八十左右,约为50000/s 对评论朋友圈的情况,评论的概率会低于点赞,按缩减五倍计算,评论的TPS大概为10000/s 对于发布朋友圈的情况,会存在很多用户都是查看朋友圈,而不会发布朋友圈,因此与评论持平即可,TPS为10000/s

02

扫码

添加站长 进交流群

领取专属 10元无门槛券

手把手带您无忧上云

扫码加入开发者社群

相关资讯

热门标签

活动推荐

    运营活动

    活动名称
    广告关闭
    领券