程序员的自我救赎---11.4:FileSystem文件服务
《FileSystem文件服务》
前面写了很多Winner2.0的文章,基本我都是以"首先,开始,最后" 这样的格式体去写,今天换种写法从根本需求上来写。
FileSystem文件服务,我想很多稍成熟一点互联网公司都有这么一个服务,专门用于上传文件尤其是图片,最常见的就是干商城的。
我们从需求的角度上来说是一个循循渐进的过程:
第一阶段单项目开发:
首先,我们开发一个“用户中心”的,用户需要上传身份证图片,银行卡图片,头像,这里就要开发上传图片。
再来,我们开发了一个“线上商城”,商家需要上传产品图片,这里不但要上传图片还要形成缩略图。
继续,为了提高性能我们给“用户中心”所在的A服务器开了CDN加速,于此同时我们也给“线上商城”所在的B服务器也开CDN。
最后,问题来了。我再增加第三个、第四个项目在文件管理这一块是否这样继续下去?是否每个项目自己去做缩略图?
如果可以共用的文件是否每个项目自己去存储?比如Logo、JS!
从用户角度来说,用户压根不会在乎这个商城是怎么实现的。但是程序员,架构师就要考虑了。所以我们开发了FileSystem文件服务
这里文件服务,和文件服务器是两个相似但不同的概念。
文件服务器:Windows的服务器自身可以直接配置成“文件服务器”,等于单拿一台服务器来做存储,期间可以通过各种Windows账户配置权限。
文件服务:只是一个应用,应用的功能有需求来转换成功能,比如根据调用方传入的Size生成缩略图等等。
一个是有是从物理硬件服务器的角度出发,一个是单纯的软件部署。
这时我们就来到了第二阶段:
FileSystem文件服务诞生了,主要包含功能有:
1,存储文件;
2,生成缩略图;
3,后台管理文件;
4,权限控制;
基本功能就这四样,但是解决了我们每个项目去建一个UpLoad文件夹,到头来每个项目目录都很庞大。
另外我还见过直接以流的方式将文件存出数据库的做法,当然这本身没有什么问题。只是在做数据搬迁等操作的时候就痛苦了。
其实应该应该直接进入第三阶段:
采购阿里云的文件服务OSS,阿里云也有文件服务器NAS。这里推荐使用OSS。我们公司虽然没有买文件服务器,但实质来说
单独拿出了一台1TB硬盘的服务器来做文件存储,这台服务器上就只部署了FileSystem这一个项目,其实本质来说就是做了文件服务器。
从成本考虑,买一台阿里云ECS的服务器稍微好一点的配置再加个大硬,价格就在八九千一年了。
直接买OSS或者NAS价格也便宜的多,关键提供的服务也很多,比如:精细化的权限控制、防盗链、容灾安全性,其实都比自建要好。
贴一张我们FileSystem的项目解决方案图:
这个项目是2013年开发的,所以是用Asp.net做的。这个项目由于功能简单,我们就一直没有去重构它,四五年这么下来一直停好用的。
这个项目我就不提供源码了,里面也没有太多思想、技术方面可以讲的。
有时间如果再架构大型项目的话,我还是偏向于直接使用阿里云的OSS来做存储服务。
写到这里吧,有兴趣一起探讨Winner框架的可以加我们QQ群:261083244。或者扫描左侧二维码加群。
程序员的自我救赎---11.4:FileSystem文件服务的更多相关文章
- 程序员的自我救赎---11.3:WinService服务
<前言> (一) Winner2.0 框架基础分析 (二)PLSQL报表系统 (三)SSO单点登录 (四) 短信中心与消息中心 (五)钱包系统 (六)GPU支付中心 (七)权限系统 (八) ...
- 程序员的自我救赎---11.1:RPC接口使用规范
<前言> (一) Winner2.0 框架基础分析 (二)PLSQL报表系统 (三)SSO单点登录 (四) 短信中心与消息中心 (五)钱包系统 (六)GPU支付中心 (七)权限系统 (八) ...
- 程序员的自我救赎---1.4.2: 核心框架讲解(BLL&Tool)
<前言> <目录> (一) Winner2.0 框架基础分析 (二) 短信中心 (三)SSO单点登录 (四)PLSQL报表系统 (五)钱包系统 (六)GPU支付中心 (七)权限 ...
- 程序员的自我救赎---3.1:理解Oauth2.0
<前言> (一) Winner2.0 框架基础分析 (二)PLSQL报表系统 (三)SSO单点登录 (四) 短信中心与消息中心 (五)钱包系统 (六)GPU支付中心 (七)权限系统 (八) ...
- 程序员的自我救赎---1.4.1:核心框架讲解(DAL)
<前言> (一) Winner2.0 框架基础分析 (二)PLSQL报表系统 (三)SSO单点登录 (四) 短信中心与消息中心 (五)钱包系统 (六)GPU支付中心 (七)权限系统 (八) ...
- 程序员的自我救赎---12.2.3: 虚拟币交易平台(区块链) 下 【C#与以太坊通讯】
<前言> (一) Winner2.0 框架基础分析 (二)PLSQL报表系统 (三)SSO单点登录 (四) 短信中心与消息中心 (五)钱包系统 (六)GPU支付中心 (七)权限系统 (八) ...
- 程序员的自我救赎---3.2:SSO及应用案例
<前言> (一) Winner2.0 框架基础分析 (二)PLSQL报表系统 (三)SSO单点登录 (四) 短信中心与消息中心 (五)钱包系统 (六)GPU支付中心 (七)权限系统 (八) ...
- 程序员的自我救赎---1.4.3: 核心框架讲解(MVC)
<前言> (一) Winner2.0 框架基础分析 (二)PLSQL报表系统 (三)SSO单点登录 (四) 短信中心与消息中心 (五)钱包系统 (六)GPU支付中心 (七)权限系统 (八) ...
- 程序员的自我救赎---10.1:APP版本控制系统
<前言> (一) Winner2.0 框架基础分析 (二)PLSQL报表系统 (三)SSO单点登录 (四) 短信中心与消息中心 (五)钱包系统 (六)GPU支付中心 (七)权限系统 (八) ...
随机推荐
- 五、Hadoop学习笔记————调优之硬件选择
ResourceManageer服务器需要选择性能较好的 若有1TB数据,每天增量为10GB,则需要预留17.8TB,*3是因为有三分备份,*1.3是因为还需要预留出空间给操作系统等等 若集群在三十台 ...
- jQuery与别的js框架冲突
jQuery.noConflict()运行这个函数将变量$的控制权让渡给第一个实现它的那个库. 这有助于确保jQuery不会与其他库的$对象发生冲突. <script type="te ...
- 在azure中建立DDC集群
在Azure上建立DDC集群 建立3台虚拟机作为UCP集群,3台虚拟机作为DTR集群. 资源组:HYD-DockerDateCenter 虚拟机size:DS3 4核14G 系统:ubuntu14.0 ...
- 【转】千万不要在JS中使用连等赋值操作
原文链接 千万不要在JS中使用连等赋值操作 目录 前言 赋值顺序? 连续赋值能拆开写么? 后记 前言 文章标题这句话原本是在国外某JavaScript规范里看到的,当时并没有引起足够的重视,直到最 ...
- Handlebars 和 angularjs 之间的区别
handlebarsjs算不上框架,只是一种js模板引擎,是模板库,模板库的主要作用是:你想要生成某一大片有一定规律的界面,比如商品详情,不同商品之间差的只是名称,价格,图片,介绍这些,但是结构一样的 ...
- replicated mode vs global mode - 每天5分钟玩转 Docker 容器技术(105)
Swarm 可以在 service 创建或运行过程中灵活地通过 --replicas 调整容器副本的数量,内部调度器则会根据当前集群的资源使用状况在不同 node 上启停容器,这就是 service ...
- google guava cache缓存基本使用讲解
代码地址:https://github.com/vikde/demo-guava-cache 一.简介 guava cache是google guava中的一个内存缓存模块,用于将数据缓存到JVM内存 ...
- java学习笔记IO之File类
File类总结 p.p1 { margin: 0.0px 0.0px 0.0px 0.0px; font: 12.0px Times } p.p2 { margin: 0.0px 0.0px 0.0p ...
- 阿里云服务器部署php的laravel项目,在阿里云买ECS 搭建 Linux+Nginx+Mysql+PHP环境的
在阿里云买ECS的时候选择自己习惯的镜像系统,我一般都是使用Linux Ubuntu,所以,以下的配置都是在Ubuntu 14.04稳定支持版的环境中搭建Linux+Nginx+Mysql+PHP环境 ...
- HDFS对象存储--Ozone架构设计
前言 如今做云存储的公司非常多,举2个比較典型的AWS的S3和阿里云.他们都提供了一个叫做对象存储的服务,就是目标数据是从Object中进行读写的,然后能够通过key来获取相应的Object,就是所谓 ...