Skip to content

Instantly share code, notes, and snippets.

@leapar
Last active November 22, 2017 01:30
Show Gist options
  • Save leapar/efc018e2e63bf069a9372cfb8e70dd38 to your computer and use it in GitHub Desktop.
Save leapar/efc018e2e63bf069a9372cfb8e70dd38 to your computer and use it in GitHub Desktop.
gun
@leapar
Copy link
Author

leapar commented Oct 10, 2017

@leapar
Copy link
Author

leapar commented Oct 12, 2017

hdfs

  1. fuse http://tototo.blog.51cto.com/4567634/929060
    用户空间文件系统(Filesystem in Userspace,FUSE)允许一些文件系统整合为一个Unix文件系统在用户空间中执行。通过使用Hadoop的Fuse-DFS分类模块,任意一个Hadoop文件系统(不过一般为HDFS)都可以作为一个标准文件系统进行挂载。我们随后便可以使用Unix的工具(如ls和cat)与这个文件系统交互,还可以通过任意一种编程语言使用POSIX库来访问文件系统。
  2. webdav https://www.techbang.com/posts/9437-webdav-set-up-personal-dropbox
    https://www.qnap.com/zh-tw/how-to/tutorial/article/%E5%A6%82%E4%BD%95%E9%80%8F%E9%81%8E-webdav-%E9%81%A0%E7%AB%AF%E5%AD%98%E5%8F%96%E6%82%A8%E7%9A%84-nas
    WebDAV (Web-based Distributed Authoring and Versioning), 是一個HTTP(S)的延伸通訊協定, 讓你的網頁伺服器成為一個標準的網路磁碟. 在WebDAV的支援下, QNAP的NAS使用者將可以用HTTP(S)的協定來遠端讀寫網路磁碟.
    Windows XP/Vista, Mac OS X皆有原生支援WebDAV的連接. 你可以輕鬆的掛載一個NAS上的網路分享資料夾.
    WebDAV的伺服器享有在HTTP通訊協定下的幾個優點:
  3. WebHDFS HttpFS
    WebHDFS是HDFS内置的组件,已经运行于NameNode和DataNode中。对HDFS文件的读写,将会重定向到文件所在的DataNode,并且会完全利用HDFS的带宽。
    HttpFS是独立于HDFS的一个服务。对HDFS文件的读写,将会通过它进行中转,它能限制带宽占用。

@leapar
Copy link
Author

leapar commented Oct 12, 2017

upload

  1. libcurl libuv
    采用libuv的epoll方式实现的异步高性能libcurl发送数据的方法
    http://blog.csdn.net/lijinqi1987/article/details/53996129

@leapar
Copy link
Author

leapar commented Oct 13, 2017

大文件上传

问题:

如果有几百M,几G的文件上传,怎么做?同时还需要进行续传。

  1. 上传客户端进行文件分片,例如2g文件=2102410241024=2000 0001024拆分成1024个文件片
  2. 客户端进行多线程上传,同时记录已经完成的文件片
  3. 服务器支持/upload接口,保存每一个文件片uid_index.data
  4. 客户端发现所有文件片都已经上传完成,调用/over接口进行文件片合并,同时进行checksum文件校验
  5. 最后把上传完毕的文件同步到hdfs中

支持文件分片上传的js客户端有:

  1. jQuery-File-Upload https://blueimp.github.io/jQuery-File-Upload/
  2. webuploader http://fex.baidu.com/webuploader/
  3. fineuploader https://fineuploader.com/

服务端代码:

  1. https://github.com/peinhu/AetherUpload-Laravel
  2. https://github.com/pionl/laravel-chunk-upload
  3. https://github.com/FineUploader/fineuploader-go-server
  4. https://github.com/FineUploader/spring-boot-server

完整例子

  1. https://github.com/leapar/fineuploader

checksum

  1. https://github.com/satazor/js-spark-md5

@leapar
Copy link
Author

leapar commented Oct 13, 2017

fineuploader

  1. 浏览器最大连接数 http://www.cnblogs.com/xiaoxiapier/p/4505117.html
  2. 默认是3个 可以修改maxConnections 达到更多 https://docs.fineuploader.com/api/options.html#maxConnections
<script>
    // Some options to pass to the uploader are discussed on the next page
    var uploader = new qq.FineUploader({
        element: document.getElementById("uploader"),
        //element: document.getElementById("fineuploader-container"),
        request: {
            endpoint: "http://127.0.0.1:8080/upload"
        },
        deleteFile: {
            enabled: true,
            endpoint: "http://127.0.0.1:8080/upload"
        },
        maxConnections:5,
        chunking: {
            enabled: true,
            concurrent: {
                enabled: true
            },
            success: {
                endpoint: "http://127.0.0.1:8080/chunksdone"
            }
        },
        resume: {
            enabled: true
        },
        retry: {
            enableAuto: true,
            showButton: true
        }
    })
</script>

1

@leapar
Copy link
Author

leapar commented Oct 19, 2017

开启Threejs之旅 http://www.hewebgl.com/

@leapar
Copy link
Author

leapar commented Nov 22, 2017

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment