作者回复: 不要猜呀,这个抓个包分析下就能排除是不是网络的原因。如果确实是网络传输慢导致的,可以看下tcp窗口大小的是不是能打的足够开,另外看下重传啥的这些多不多。
作者回复: 语言都可以的,除了java、go还有很多c++、erlang的实现。掌握基本语法后,可以找找相关语言的例子边学边试就行。
作者回复: 建议先从发消息的链路上来分段排查,分析下各个环节的分步耗时,确定到有耗时问题的环节后再通过线程状态或者hot thread来具体分析当前环节具体耗时的代码。
作者回复: 也不是呀,有些还是需要业务层自己来优化,比如并发分片上传,断点续传,业务权限控制等。
作者回复: 抱歉这一块了解的不多
作者回复: 每个文件上传时会有一个唯一id来标识这一次上传,多个分片都会携带这个标识。另外,在上传的初始化阶段,会把分片数和文件hash值都告知服务端,用于识别分片是否缺少已经文件是否完整。
作者回复: 采用webP格式或者google最新的Guetzli格式来对图片进行编码可以有效降低图片大小。另外说的图片分配算法没太理解是啥?
作者回复: 嗯,我尽量在期末实战中有所体现哈,有些涉及的方案代码量比较大,更多的可能只能是实现上的关键点指引。
作者回复: 缩略图之类的小流量文件可以通过长连下推来优化。http和防盗链不是绑定的呀,不需要上cdn的话,上传的时候自己的文件存储服务就可以记录文件所有者权限,下载的时候就可以根据用户登录认证的信息来鉴权了。
作者回复: 看具体使用场景吧,如果是需要确保写入queue成功才能响应用户的最好是同步写,如果不需要就可以异步。
作者回复: 个人建议是直接http上传文件就可以啦,上传完就断开的,没必要再走个长连接。客户端同时开多个http连接并发上传就可以,性能没问题的。
作者回复: 嗯,长时间的暂存持久化到db应该是没问题的,只要恢复的时候能取出之前已下载完的分片信息就可以。不过类似迅雷这种的,不需要放到服务器端来吧,我理解分片信息暂存在下载的客户端本地就可以呀。