揭秘京东文件系统JFS的前世今生,支持双11每秒约10万个对象同时读写

背景

作为一家大规模的自营式电商企业,京东需要存储海量的非结构化数据:商品图片、订单文本、仓库流转记录、App客户端文件、日志文件、内部文档等。对于存储这些数据,之前并没有统一的解决方案,都是各个业务线自行解决——MySQL BLOB、HDFS、FastDFS。

2013年5月,京东开始组建存储组,自主研发JFS——京东文件系统,以实现非结构化数据存储统一服务为目标。

小文件存储

针对3个典型的应用场景——商品图片、OFC订单、WMS库房流水,JFS第一版定位为海量小文件存储,其核心功能定义如下。

  • 海量小文件存储,极高的可靠性、可用性与一致性。
  • Key-File数据模型,Key由系统生成,全局唯一;文件immutable,即不可修改,甚至极少被删除。

其主要包含如下3个模块。

  • ZooKeeper作为集群协调器管理元数据信息。
  • 由Go语言开发的DataNode,实现服务端读写逻辑、复制协议、故障恢复等。每个DataNode管理一块磁盘——该设计大幅简化了工程实现。
  • 由Java开发的客户端。

复制协议实现了一种Paxos变体,或者说一种极简的Paxos实现,如图1所示:固定成员(一个复制组由1primary + 2follower构成)、固定角色(primary与follower角色不会发生变更)、固定读写流程(client将写操作发送到primary,它在写本地的同时将写操作发给两个follower,三副本都写入成功后才成功返回给用户;优先在follower上读取,提高系统的并发能力)。

存储引擎采用Append-Only方式,每个DataNode维护一组(默认配置为512)Chunk大文件,客户端上传的小文件(如一张图片)被并行追加至一个复制组三名成员对应的Chunk中,如图2所示。

  • 6
    点赞
  • 11
    收藏
    觉得还不错? 一键收藏
  • 6
    评论
### 回答1: Linux支持文件系统有: 1. ext2/ext3/ext4:这是Linux最常用的文件系统支持大多数Linux发行版。 2. XFS:这是一个高性能的文件系统,适用于大型文件和高并发访问。 3. Btrfs:这是一个新的文件系统支持快照、压缩、RAID等功能。 4. JFS:这是一个快速、可靠的文件系统,适用于高负载环境。 5. ReiserFS:这是一个快速、高效的文件系统,适用于小文件和高并发访问。 6. NTFS:这是Windows使用的文件系统,Linux可以读取和写入NTFS分区。 7. FAT32:这是一个老旧的文件系统,适用于移动设备和旧电脑。 8. HFS+:这是Mac OS X使用的文件系统,Linux可以读取和写入HFS+分区。 9. ISO 966:这是CD/DVD使用的文件系统,Linux可以读取和写入ISO 966格式的光盘。 10. UDF:这是一种通用的光盘文件系统,适用于CD、DVD、蓝光等光盘。 ### 回答2: Linux支持文件系统非常多,以下是其中一些常用的文件系统: 1. Ext2/Ext3/Ext4:这是最常见的文件系统之一,几乎所有的Linux发行版都支持它。它最初是为Linux而开发的,支持大多数的Linux命令和功能。 2. XFS:这是一个高度可扩展的文件系统,适用于大型文件和大型文件系统。它也是主流Linux发行版中常见的文件系统之一。 3. Btrfs:该文件系统目的在于为Linux系统提供“高级功能”,如快照、压缩和校验。实际上,它也可以被视为一个替代ext4文件系统的选择。 4. NTFS:NTFS是微软Windows操作系统上常用的文件系统,它提供了对大文件和长文件名的支持。Linux上可以使用NTFS-3G来读写NTFS分区。 5. FAT/FAT32:这是一种古老的文件系统,但仍被许多设备和操作系统所支持。Linux上可以使用vfat模块来访问FAT和FAT32分区。 6. ReiserFS:这是另一种高级文件系统,它提供了快速读取和写入数据的能力。 7. JFS:这是IBM开发的文件系统,为日志记录式文件系统,提高了数据完整性。它支持大容量的文件系统,同时提升了数据安全性和稳定性。 除此之外,还有许多其他的文件系统,例如ZFS、HFS+、APFS等等。不同的文件系统有各自的特点和优缺点,使用者可以根据实际需求选择适合自己的文件系统。 ### 回答3: Linux支持文件系统非常多,以下是其中一些主要的文件系统: 1. ext4:是Linux中最常用的文件系统之一,也是ext3文件系统的升级版本,具有更好的扩展性和更高的性能。 2. ext3:是Linux中的第三代扩展文件系统,可以在ext2文件系统的基础上添加日志记录功能。 3. XFS:被广泛用于服务器和高性能计算机中的先进日志文件系统支持大文件和大容量文件系统。 4. Btrfs:拥有许多现代文件系统的先进特性,并为没有日志文件的情况提供了快照支持。 5. JFS:适用于大容量文件系统,具有快速访问和高效磁盘使用的特性。 6. ReiserFS:针对小文件和元数据优化的文件系统,尤其适合数据库服务器和Web服务器等高性能工作负载。 除了以上列出的文件系统之外,Linux还支持许多其他文件系统,如FAT、NTFS、HFS、ISO 9660等。此外,许多新的或实验性文件系统会在Linux内核中加入,包括LogFS、bcachefs和F2FS等。 在选择文件系统时,需要根据要求和使用场景的不同,选择适合的文件系统,以提高数据的安全性、稳定性和性能。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 6
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值