如何编写一个 SendFile 服务器
2024-09-06 09:29:15
如何编写一个 SendFile 服务器
前言
之前讨论零拷贝的时候,我们知道,两台机器之间传输文件,最快的方式就是 send file,众所周知,在 Java 中,该技术对应的则是 FileChannel 类的 transferTo 和 transferFrom 方法。
在平时使用服务器的时候,比如 nginx ,tomcat ,都有 send file 的选项,利用此技术,可大大提高文件传输效能。
另外,可能也有人谈论 send file 的缺点,例如不能利用 gzip 压缩,不能加密。这里本文不做探讨。
纸上得来终觉浅,绝知此事要躬行。
那么,如何使用这两个 api 实现一个 send file 服务器和客户端呢?
想象一下,你写的 send file 服务器利用 send file 技术,利用万兆网卡,从各个 client 端 copy 海量文件,瞬间打爆你那 1TB 的磁盘和 48核的 CPU。并且,注意:只需很小的 JVM 内存就可以实现这样一台强悍的服务器。为什么?如果你知道 send file 的原理,就会知道,使用 send file 技术时, 在用户态中,是不需要多少内存的,数据都在内核态。
是不是很有成就感?什么?没有?那打扰了
最新文章
- 使用Event Message 对 Package 进行Troubleshoot
- xp
- airline 設定 安裝
- 14——小心copying行为
- jquery checkbox checked
- 防止IE7,8进入怪异模式
- Micro Python - Python for microcontrollers
- const对象默认是static的,而不是extern的
- 面试 | 商汤科技面试经历之Promise红绿灯的实现
- bzoj 1598: [Usaco2008 Mar]牛跑步 [k短路 A*] [学习笔记]
- css 文本设置
- Beta冲刺博客汇总(麻瓜制造者)
- php 7 新特性整理小结
- GEO数据下载分析(SRA、SRR、GEM、SRX、SAMN、SRS、SRP、PRJNA全面解析)
- Build Tool(构建工具)
- 拷贝某个区间(copy,copy_back)
- 窗体的构造函数和OnCreate事件
- Installation failed: Timeout was reached: Operation timed out after 10000 milliseconds with 0 out of 0 bytes received
- 个人作业2——APP案例分析
- LaTeX 制作表格