一、开源项目简介

本项目是使用Java开发的一个分布式海量小文件存储系统,功能包括文件上传、文件下载、文件存储等,解决了海量小文件在存储和访问过程中遇到的各种性能问题。

二、功能概述

海量小文件存储: 几KB~几百MB之间的海量文件存储。

三、技术选型

  • Java
  • gRPC
  • Protobuf
  • Netty
  • Lombok

Java 是一门面向对象编程语言,不仅吸收了C++语言的各种优点,还摒弃了C++里难以理解的多继承、指针等概念,因此Java语言具有功能强大和简单易用两个特征。Java语言作为静态面向对象编程语言的代表,极好地实现了面向对象理论,允许程序员以优雅的思维方式进行复杂的编程 。

Java具有简单性、面向对象、分布式、健壮性、安全性、平台独立与可移植性、多线程、动态性等特点 。Java可以编写桌面应用程序、Web应用程序、分布式系统和嵌入式系统应用程序等 。

gRPC 是可以在任何环境中运行的现代开源高性能 RPC 框架。它可以通过可插拔的支持来有效地连接数据中心内和跨数据中心的服务,以实现负载平衡,跟踪,运行状况检查和身份验证。它也适用于分布式计算的最后一英里,以将设备,移动应用程序和浏览器连接到后端服务。

Protobuf 是一种语言无关、平台无关、可扩展的序列化结构数据的方法,它可用于(数据)通信协议、数据存储等。可类比 XML,但是比 XML 更小(3 ~ 10倍)、更快(20 ~ 100倍)、更为简单。

Netty 是一个高性能 事件驱动的异步的非堵塞的IO(NIO)框架,用于建立TCP等底层的连接,基于Netty可以建立高性能的Http服务器。

Lombok 项目是一个Java库,它会自动插入编辑器和构建工具中,Lombok提供了一组有用的注释,用来消除Java类中的大量样板代码。仅五个字符(@Data)就可以替换数百行代码从而产生干净,简洁且易于维护的Java类。

项目特性&设计

  • 网络升级
  • 核心逻辑优化
  • BackupNode+NameNode主备模式高可用架构
  • NameNode联邦架构

生产级技术架构

[开源]支持文件上传、下载、存储功能的分布式海量小文件存储系统插图

网络升级

[开源]支持文件上传、下载、存储功能的分布式海量小文件存储系统插图1

文件传输协议

[开源]支持文件上传、下载、存储功能的分布式海量小文件存储系统插图2

分块传输设计

[开源]支持文件上传、下载、存储功能的分布式海量小文件存储系统插图3

NameNode联邦架构

[开源]支持文件上传、下载、存储功能的分布式海量小文件存储系统插图4

四、界面展示

线上性能参数回放

[开源]支持文件上传、下载、存储功能的分布式海量小文件存储系统插图5
[开源]支持文件上传、下载、存储功能的分布式海量小文件存储系统插图6

五、开源协议

使用Apache2.0开源协议

声明:本站所有文章,如无特殊说明或标注,均为本站原创发布。任何个人或组织,在未征得本站同意时,禁止复制、盗用、采集、发布本站内容到任何网站、书籍等各类媒体平台。如若本站内容侵犯了原著者的合法权益,可联系我们进行处理。