视频下载:jfinal-download.mp4
PPT下载:jfinal-download.pptx
JFinal Download 项目是 jfinal 俱乐部向会员提供视频下载的一个项目。俱乐部的同学在个人空间的俱乐部频道下点击下载按钮调用的就是这份代码。
由于俱乐部的视频体量很大,如果将视频放在与 jfinal.com 同一台服务器上,会占用带宽,严重影响社区的访问速度。
加大 jfinal.com 所在服务器的带宽不太划算,很自然的一个想法是将视频资源放在另一台最低配的 CPU,因为下载服务对 CPU 要求极低。
开发一个文件下载服务程序,该程序要有权限控制,只向 jfinal 俱乐部会员开放下载。常规的技术方案是在 jfinal.com 这一端首先验证权限,通过权限验证后生成一个授权 token,然后将下载请求带着这个 token 一起 redirect 到下载服务器进行下载。
而下载服务器这端仍然要对 token 进行权限验证,势必要与 jfinal.com 进行一次通信,这个过程很繁琐,代码写起来也麻烦。方案还未实施就给 pass 掉了。
有没有更简单的方案呢? 答案是肯定的。JFinal Download 提供了一个 jfinal-download-service、jfinal-download-client 两个 maven 项目,前者提供下载服务,后者是客户端。
jfinal-download-service 无需与 jfinal-download-client 通信即可对下载用户进行权限验证。
聪明如你一定想到,这个方案用于 jfinal-download 项目仅仅只是应用场景之一。
这个方案可以用于多个应用通信时的权限验证,可以单向也可以双向,加一个全局拦截器打完收工,保持业务代码安全、干净。
这个方案还可以让权限验证与任务执行分别放在不同机器上。
有同样需求的同学一杯咖啡拿走,写代码哪能没有咖啡加持 ^_^