开源一周年

JuiceFS 开始于 2017 年,是一款云原生分布式文件系统,旨在帮助企业解决多云、跨云、混合云环境下所面临的诸多挑战:数据安全和保护、大数据架构升级、海量小文件访问、Kubernetes 标准存储等。 JuiceFS 完全兼容 POSIX、HDFS、S3 访问协议,并提供 Kubernetes CSI 驱动,在全球公有云上均有全托管服务。为了更好的打造让开发者爱不释手的软件,我们于 2021 年 1 月 11 日在 GitHub 上开源了 JuiceFS。

今天, JuiceFS 已经开源一周年了!

一年前的今天,我们将 JuiceFS 在 GitHub 上开源,初心其实很简单:希望通过开源让 JuiceFS 被更多的开发者知道、了解、并使用。毕竟软件最大的价值还是被使用。开源后的 JuiceFS 让用户不再担心黑盒的云服务,用户可以自行下载代码,探索 JuiceFS 的无限可能;开发者可以查阅 JuiceFS 的代码,从最底层了解、熟悉、信任他,甚至可以参与到 JuiceFS 的打造中。我们希望营造一个互相尊重的社区文化,身处其中不仅可以使用 JuiceFS,也可以在这交流新场景、新玩法,还可以讨论 JuiceFS 的工程设计理念和参与未来方向的制定。

开发者们对 JuiceFS 开源的反馈也超出我们的预期,开源第一周就登上了 GitHub Trending、Hacker News、InfoQ 等以开发者为主要受众的的媒体平台。

经过一年的时间,JuiceFS 在社区和产品都取得了长足的进步,但行百里者半九十,我们深知坚持的难度,也将继续怀着开放和连接的心态砥砺前行。

产品全面升级,更加开放

JuiceFS 刚开源时,元数据引擎的选择只有 Redis。存储介质为内存的 Redis 在数据可靠性和扩展性上存在诸多挑战。我们将元数据引擎的相关代码进行了可插拔改造,引入了对关系型数据库和像 TiKV 这样的事务型 KV 存储的支持,解决了可靠性和可扩展性问题,给了用户更多的选择。

作为 JuiceFS 数据持久层的对象存储,我们也支持了近 40 种,基本涵盖了公有云、边缘云、私有云等环境中部署使用的常见种类。当然,如果有遗漏欢迎 GitHub 上发起 issue,我们将尽快支持。拓宽 JuiceFS 的生态和提升 JuiceFS 开放性是我们矢志不渝的追求。

最开始的 JuiceFS 只支持应用最广泛的 POSIX API,此后陆续支持了 HDFS、S3 API,和 Kubernetes CSI 和 Windows 操作系统,未来我们还将支持更多更灵活的访问方式。 这些协议点缀成线,将散落在企业内部的数据孤岛,编织成网,更好的帮助企业打通多态业务系统的数据,整合不同的技术体系,连接多云,帮助客户搭建更加开放的数据存储平台。

JuiceFS 还提供了元数据的备份和导入功能,让用户在「意外」面前更多一份保障和可靠。 这一功能给予了用户按照 JSON 格式进行备份的能力,提高数据可读性的同时,也保证了数据在不同元数据引擎间的可交换性。最后,可靠的 JuiceFS 还提供了「回收站」的功能,在这里可以找到那些被误删除的数据。

除了在产品开放性上的持续投入,我们还将目光放到了文档的开放性和易用性上。我们深刻理解,文档是用户与产品之间重要的纽带!自 JuiceFS 开源以来,我们始终坚持高品质的技术与高品质的文档并行输出的原则。

2021 年,我们对文档进行了三次完整迭代,实现了文档从「专业性」到「普适性」,再到「体验性」的持续蜕变。优化文档的工作仍在继续,努力确保 JuiceFS 的文档能够「让新用户马上用」,「让老用户放心用」。除了文档的工作以外,在快速的版本迭代中,JuiceFS 也一直保持数据格式、通信协议的兼容性,保证版本的向前兼容,让用户可以平滑升级。

JuiceFS 开源的一年里,产品也有了巨大的变化,也让我们更加坚定走开源路线是无比正确的,因为只有开放的生态是最具生命力的。

丰富场景落地,生态共建

在短短的一年时间里,有超过 4400 多位的开发者给 JuiceFS 点了个赞。这些开发者不仅仅来自于中国,也有来自于欧洲、美洲大陆、非洲,甚至中东的地区的开发者。新冠疫情虽然隔断了我们物理上的联系,但开源社区让我们齐聚一堂,一起在过去的 2021年,为 JuiceFS 的社区添砖加瓦。

过去的一年里有超过 40 位贡献者完成了超过 800 次 Pull Requests,这是我们通过 GitHub 和开发者群体完成的 800 次连接。在这 800 次连接的加持下,JuiceFS 发布了 16 次新版本,这些背后默默关注 JuiceFS 的社区用户,压力倍增的同时也给我们满满的动力。

基于微信和 Slack 的社群,搭建了超过 1500 人的用户交流群组,参与了 9 场活动,大家从使用出发,满载而归的是 33 篇关于 JuiceFS 的技术内容和场景实践。在这里,我们连接了场景和用户。

文件系统是各种应用开发的基石,如何与其他应用结合,提供杰出的表现和良好的体验,形成生态,是 JuiceFS 社区的重要工作。在过去的一年中,JuiceFS 已经在一些领域受到了大家的认可,取得了不错的进展。

大数据生态

JuiceFS 可以完全兼容 HDFS,与 Hadoop 生态无缝集成,一些客户已经替换了 HDFS实现存算分离的架构升级。

  • Apache Kylin 4.0 发布了使用 JuiceFS 构建集群的解决方案。
  • 利用 ClickHouse 和 Elasticsearch 的数据生命周期特性,JuiceFS 可以轻松实现数据分层存储,为用户增效降本。

AI 生态

JuiceFS 多访问协议的支持可以大量省去业务流程中数据迁移调度工作,与主流机器学习、深度学习训练框架全部兼容。

  • 旷视技术团队还贡献了 JuiceFS Python SDK,方便在 Serverless 环境中访问 JuiceFS 数据。
  • JuiceFS 缓存加速是 AI 训练场景最受欢迎的特性,PaddlePaddle 已经将 JuiceFS 集成到 Paddle Operator 中为训练加速。
  • 云知声团队的伙伴为 Fluid 社区贡献了 JuiceFSRuntime。
  • 向量搜索引擎 Milvus 也发布了基于 JuiceFS 构建分布式集群的解决方案。
  • Byzer 社区也将 JuiceFS 作为云原生文件系统集成到自己的解决方案中。

Kubernetes 生态

JuiceFS 非常适合作为 PV(PersistentVolume)使用,是容器原生存储(Container Native Storage)。社区提供了 CSI 驱动和全面的文档指南,而且已经入驻了 KubeSphere 应用商店,在 Rancher 和云托管的 Kubernetes 服务中使用也同样简单。

在使用 JuiceFS 的朋友,也希望把你的经验和问题反馈到 JuiceFS 社区,不仅能得到支持和帮助,还能让你的经验帮到很多人,这正是开源社区的价值和魅力。

多行业生产环境验证,JuiceFS 1.0 来了

对于存储系统而言,可靠性永远排在第一位。JuiceFS 创新性地将元数据和数据分别保存到成熟的数据库和对象存储中,一开始就有了可靠性保证,这也是众多科技公司在能够在 JuiceFS 发布半年内就投入生产环境并保证稳定运行的关键所在。依托于标准访问协议,JuiceFS 采用了开源社区已有的测试集来保证兼容性和可靠性,还有各种单元测试、压力测试、混沌测试和性能测试保障,在产品快速迭代的同时保证每次版本发布的高品质。

JuiceFS 开源的一年里,已经有小米、Shopee、理想汽车、知乎、航天宏图、尧信等多家厂商在生产环境中部署了 JuiceFS,稳定运行半年以上。

  • 小米用 JuiceFS 做 AI 平台的存储底座。
  • Shopee 将 JuiceFS 作为云平台的文件存储服务提供给各业务线,支持了多样的业务场景。
  • 理想汽车用 JuiceFS 实现了数仓的存算分离。
  • 知乎用 JuiceFS 把 Flink 流计算的启动加载提速 4 倍。
  • ....

JuiceFS 已经稳定持续的运行多家互联网和 AI 企业的生产环境中,不仅仅为客户降本,更为客户提升数据使用的效率和缩短新业务上线的周期,当然内置的数据保护和加密也让客户大大宽心。在过去的一年里,每天在线的 JuiceFS 集群数量也稳步上升,从最初的几个,到现在的超过 500,保持了较高的增长速率。值得一提的是,这仅仅是我们有记录的数据,相信还有很多我们没联系到的用户。

在国内外互联网、自动驾驶、基因测序、金融科技、智能制造等多个行业,以及广大社区开发者的支持、验证和持续反馈之下,经过全面的评估和各类场景下的验证,JuiceFS 社区将于本周发布 JuiceFS v1.0-beta,欢迎社区用户测试并给我们反馈,根据反馈改进后发布 v1.0-GA。

重新思考开源许可

回到 2021 年发布之初,JuiceFS 只支持在挂载后通过 POSIX 方式访问数据,应用是通过内核来访问数据,并不需要直接跟 JuiceFS 打交道,应用并不会被 GPL 系列的许可影响,所以当时采用了文件存储界使用最广泛的 GPL 许可(AGPL v3)。

随着 JuiceFS 的不断迭代,引入了更多的访问协议和 SDK(S3 兼容的 HTTP 协议以及跟 HDFS 兼容的 Java SDK),影响用户基于它们去开发商业产品。同时,也有一些开源社区和开发者希望将 JuiceFS 作为存储底座,整合到自己的项目中,但 AGPL v3 与其他开源协议(比如 Apache 协议)的兼容性不太好,阻碍了更多人去享受 JuiceFS 提供的多协议互通和高效缓存系统等诸多便利。

所以,为了我们的初心——打造开发者最喜欢的存储产品,Juicedata 团队决定自 JuiceFS v1.0 起将许可更改为 Apache 2.0。

重新定义文件存储,未来可期

JuiceFS v1.0 是一个重要的里程碑,代表它可以被放心的使用于各种场景的生产环境,开始接受更多更严苛的挑战。之后社区仍将持续加大投入,持续为大家带来更多有价值的特性,比如呼声最高的配额管理,Snapshot,支持更多元数据引擎等。

随着数据规模的快速增长,分布式文件系统愈发重要。传统分布式文件系统都采用自底向上的一整套系统,复杂度非常高,难以掌握。JuiceFS 创新性地分离元数据和数据存储,并尽量复用已有的成熟数据库和对象存储等基础设施,访问协议也是同时兼容所有主流的接口,将分布式文件系统的系统复杂度和使用门槛大幅降低,重新定义了分布式文件系统的构建方式,通过一套体系和不同组件的搭配,可以满足不同规模和场景的非结构化存储需求。同时,JuiceFS 是完全云原生的设计,可以跟云上的生态很好地衔接,符合云存储发展的大趋势,有非常广泛的应用前景。

尽管 JuiceFS 已经做了非常多的减法,尽量避免重复造轮子,打造成熟可靠的存储产品仍然需要巨大的工程投入。我们在过去一年里也进一步壮大了工程师团队,很多都是从 JuiceFS 社区的参与到加入 Juicedata 团队,也欢迎更多志同道合的同学们加入,一起开创分布式文件存储的新时代。

开源产品的研发,需要持续的资金投入,我们花了 4 年验证过的商业化服务也在快速增长,为 JuiceFS 的发展提供持续可靠的资金保障。开源是我们的星辰大海,商业化为它保障护航。

道阻且长,但行则将至!

欢迎关注我们项目 Juicedata/JuiceFS 哟! (0ᴗ0✿)

JuiceFS 即将发布 1.0 并调整开源许可的更多相关文章

  1. Tapdata 的 2.0 版 ,开源的 Live Data Platform 现已发布

    https://www.bilibili.com/video/BV1tT411g7PA/?aid=470724972&cid=766317673&page=1 点击上方链接,一分钟快速 ...

  2. .NET Core 3.0即将发布!

    期待已久的.NET Core 3.0即将发布! .NET Core 3.0在.NET Conf上发布.大约还有9个多小时后,.NET Conf开始启动. 为期3天的大概日程安排如下: 第1天-9月23 ...

  3. (转)重磅出击:MongoDB 3.0正式版即将发布

    MongoDB 今天宣布 3.0 正式版本即将发布.这标志着 MongoDB 数据库进入了一个全新的发展阶段,提供强大.灵活而且易于管理的数据库管理系统. MongoDB 3.0 在性能和伸缩性方面都 ...

  4. DS Scheduler 0.7 发布,Linux 调度系统 - 开源中国社区

    DS Scheduler 0.7 发布,Linux 调度系统 - 开源中国社区 DS Scheduler 0.7 发布,Linux 调度系统

  5. Rudiments 0.42 发布,C++ 常用工具包 - 开源中国社区

    Rudiments 0.42 发布,C++ 常用工具包 - 开源中国社区 Rudiments 0.42 发布,C++ 常用工具包

  6. 【开源】EasyFlash 新年发布 V4.0 beta 版,完全重写(转)

    [开源]EasyFlash 新年发布 V4.0 beta 版,完全重写 EasyFlash V4.0 beta [开源]嵌入式闪存库 EasyFlash for STM32,支持Env和IAP

  7. 【转】MongoDB 3.0 正式版本即将发布,强力推荐

    MongoDB 今天宣布3.0 正式版本即将发布.这标志着 MongoDB 数据库进入了一个全新的发展阶段,提供强大.灵活而且易于管理的数据库管理系统. MongoDB 3.0 在性能和伸缩性方面都有 ...

  8. Selenium 4即将发布:每个QA都应该知道的

    阅读原文 Simon Stewart(Selenium的创始成员)在班加罗尔的Selenium大会议上正式确认了Selenium4.0的发布日期和一些主要更新.我们先来提前了解一下Selenium 4 ...

  9. Cloud Native Weekly | 华为云抢先发布Redis5.0,红帽宣布收购混合云提供商 NooBaa

    1——华为云抢先发布Redis5.0 2——DigitalOcean K8s服务正式上线 3——红帽宣布收购混合云提供商 NooBaa 4——微软发布多项 Azure Kubernetes 服务更新 ...

随机推荐

  1. Python的安装和卸载

    一.Python的安装,去Python官网https://www.python.org/downloads/下载对应安装包 进入官网后鼠标移动到downloads处然后点击Windows 二.安装包下 ...

  2. 「Spark从精通到重新入门(二)」Spark中不可不知的动态资源分配

    前言 资源是影响 Spark 应用执行效率的一个重要因素.Spark 应用中真正执行 task 的组件是 Executor,可以通过spark.executor.instances 指定 Spark ...

  3. 转:KVC 与 KVO 理解

    KVC 与 KVO 理解 On 2012 年 6 月 7 日, in iPhone, by donly KVC 与 KVO 是 Objective C 的关键概念,个人认为必须理解的东西,下面是实例讲 ...

  4. mysql--求中位数

    第一种求中位数方法: /* 第一步:添加一个正序和反序 第二步:当列表数目为奇数的时候,列表选出的情况,当列表为偶数的时候列表的情况 第三步:统筹奇数和偶数时中位数 */ select sum(Mat ...

  5. 删除…Remove…(Power Query 之 M 语言)

    删除行(表): 删除指定行:=Table.RemoveRows( 表, 起始行数, 删除的行数) 起始行数从0开始计 删除前面N-.Skip/RemoveFirstN 删除后面N-.RemoveLas ...

  6. java多线程10:并发工具类CountDownLatch、CyclicBarrier和Semaphore

    在JDK的并发包(java.util.concurrent下)中给开发者提供了几个非常有用的并发工具类,让用户不需要再去关心如何在并发场景下写出同时兼顾线程安全性与高效率的代码. 本文分别介绍Coun ...

  7. CF742B Arpa's obvious problem and Mehrdad's terrible solution 题解

    Content 有一个长度为 \(n\) 的数组,请求出使得 \(a_i \oplus a_j=x\) 且 \(i\neq j\) 的数对 \((i,j)\) 的个数.其中 \(\oplus\) 表示 ...

  8. 报错处理 java.lang.ClassNotFoundException: org.apache.commons.beanutils.DynaBean

    java.lang.ClassNotFoundException: org.apache.commons.beanutils.DynaBean at org.apache.catalina.loade ...

  9. 【九度OJ】题目1195:最长&最短文本 解题报告

    [九度OJ]题目1195:最长&最短文本 解题报告 标签(空格分隔): 九度OJ http://ac.jobdu.com/problem.php?pid=1195 题目描述: 输入多行字符串, ...

  10. 【LeetCode】507. Perfect Number 解题报告(Python & Java & C++)

    作者: 负雪明烛 id: fuxuemingzhu 个人博客: http://fuxuemingzhu.cn/ 目录 题目描述 题目大意 解题方法 日期 题目地址:https://leetcode.c ...