网盘至今已经发展多年,依稀记得从12年开始的网络上出现了大量的网盘服务,好比以115网盘为表明的各种网盘,那个时候能叫得上号的公司都开展本身的网盘服务,在互联网服务中刷刷存在感,后来又纷纷倒闭,想一想看,如今还存活的网盘服务还有哪些呢,百度网盘、华为云盘、腾讯微云等。这些大厂还在提供这些服务,那什么是网盘呢?这款产品真的离咱们这么远吗?那倒未必,且看咱们来详细体验网盘进化史。php
这玩意真的是一个网络大盘子?那倒不是,其实这个也是云服务中的一种,其原本的面目准确的说这个应该是一个网络存储系统,其名为即NAS,Network Area Storage。这么高大上的名词暂时搁置一边,咱们先将目光拉回来,思考一个问题,拍照以后咱们的手机怎么存一张照片?快门咔嚓一声以后,感光模块造成图像,手机的CPU会对图像进行处理,造成一份文件,以后从内存中读取出来,保存在手机存储空间中后缀为.jpg。
这个过程看起来挺简单的,使用到的功能是计算机软件系统组成中的一部分称为文件管理系统,这个系统在至今还是很是重要的存储管理工具,固然了这个工具和前面提到的NAS有着重要的借鉴意义,由于在这个将图片(文件)存到手机存储的过程,IT工程师们就起了个名字,本地存储。那么咱们当本地存储满了以后怎么办咧,只能清除旧图片呀,否则怎么继续存?可是小仙女们是很傲娇的,照片这么珍贵,每一张都是精品怎么能够说删就删?既然手机存不了那么多,那就换手机啊,换个更大的不就好了?换更大的过程,存储工程师,起名为纵向升级,开发工程师则是说迭代升级,这些其实都是说同一件事。嗯,就这一点我也以为IT人有点无聊了。那没钱怎么办呐,我还想各类升级啊!那我插存储卡行不行啊,一张卡8g、16g我买啊,嗯,在手机有拓展槽的前提下,确实能够这么作,在存储工程中,这个操做称为横向升级。可,问题又来了,如今有多少手机带扩展槽?不急不急,还有新的操做。java
云在哪?天上呀,那图片怎么上天呀,经过网络呀,咱们刚才看图会知道这个.jpg文件会从内存保存到本地上,如今会经过网络传输,再也不到本地啦,跑去天上了,其实就是网络服务商(Internet Service Provider,好比百度,腾讯)的电脑(其实就是服务器)上。从手机到云这个传输和存到人家设备上的过程就须要依靠一个简单的网络,网络工程师们对这个过程起了个名字,网络区域存储Network Area Storage。
现今云的概念愈来愈充实,你们均可以使用的叫作公有云,只有你和你的朋友才能够用的叫作私有云,固然了,你赞成部分空间分享给你们一块儿用就是叫作混合云啦。云一望无际,时而在东时而西,咱压根就不知道这些精美图片(文件)存放在哪。各位看官,你用起来放心嘛?
为什么不本身动手来搭建一个云盘呢?python
计算机网络发展数十年,仍然离不开TCP/IP协议栈,网盘亦然,手机和云之间的底层链接仍然是一个TCP的服务端和客户端的沟通,这个沟通的过程起名三次握手。
这简单的三句对话,就是握手的过程啦(是否是有种打嘴炮的感受~~),打过招呼以后固然就能够是发图(文件)啦,这在30年前确定是这么作的, 可是呢,这个过程真的烦。发送和接收方都要考虑不少事情,好比,发送的图片会不会太大,太大了是否是能够切小一些,若是切小了的话对方,收到了怎么拼回去呀,我怎么知道对方有没有收到图啊……这些问题在每一份文件的传输过程都要考虑,你说烦不烦,反正考虑多了,确定会秃的。因而网络工程师们通过多方努力,将这些交流过程所有打包,放在一个大盒子里面,称为http,好了,如今咱们知道了http说tcp的传输升级版,青出于蓝而胜于蓝,http能够更加方便的发送文件了,要不要切小文件,发送多快这些事情通通不用考虑了,这产品给你办好了。
接着影响世界进程的程序猿来了,他们用双手,指挥http自动的发送发送和接受各类各样不可描述的文件。程序猿一多确定会吵架,你看那个php不是最优秀的语言这个梗玩了多少年了,还不是在继续吵着,因而一群糟老头跳出来讲,别吵,咱们所有要遵照一个约定,你好,他好,你们好,才是真的好,约定名称为RESF,大家你要作的就是各自实现RESFful API,OK?
嘿,还别说交流规范一些,沟通成本低了,java、python、go……这些语言工具搭建的http服务端均可以好好说话了。然而,问题又来了,这群怪蜀黍,其余人怎么知道程序猿说的都是啥啊,呵,难怪说世界上只有10种人,一种懂二进制,一种不懂。咱们只用这个就能够完成数据的传输发送,但没办法啊,生存仍是要的,得把大家服务好了,才会心甘情愿给咱们发工资啊。大家才是老板好很差Orz
咱们经过终端,点击若干按钮就能够实现文件的远程上传和下载,然而面对非程序猿来讲,这样的操做真的有些无奈的。
因此为了让大家看的舒服,操做愉快,体验和免费同在,程序猿们把这个过程又从新包装了一下,说这个是大盘子,大家啥东西都能放进去,保证安全,随时取用,空间暂时给大家2T,要是充钱,还能戴上皇冠,上传更快和下载更强
这些都是最终的开发工程师们代码的劳动成果,也是产品经理们的设计结晶,更是服务商提供的给用户的良好体验的做品,那,若是咱们本身动手作一个是否是会很刺激呢?读到这里想必你们都会猜到了,其实所谓云盘对于应用开发来讲就是随时等待你访问的服务器,犹如一位资深管家,随时等待各位看官的召唤,咱们所要作的就是上网,登录账号剩下的操做,好比自动上传保存,文件持久化管理、重复文件的删除等操做,都由管家来完成。
好啦,网盘的进化史回顾大体就这样啦,说白了就是从本地磁盘到网络磁盘的过程的变迁,这个依赖于计算机网络的发展,设想一下,当5G时代的到来,在网络质量良好的前提下,咱们的手机统统不用再须要存储了,拍照的话以为喜欢直接就存到网盘上,想要回顾的话,就去网盘找,下载的应用直接就存网盘上啦,想要运行就去网盘上运行,这样的畅想其实就是所谓云桌面的应用啦,对于网速愈来愈快的,带宽愈来愈宽的畅想,嘻嘻,将来可期。安全
啰啰嗦嗦说了这么多,下篇文章分享简单代码实现服务器