写点什么

FastDFS 入门,Java 编程笔试题及答案

  • 2022 年 4 月 13 日
  • 本文字数:1425 字

    阅读完需:约 5 分钟

前言

JVM 对实际简单开发的来说关联的还是不多,一般工作个一两年(当然不包括爱学习的及专门做性能优化的什么的),很少有人能很好的去学习及理解什么是 JVM,以及弄清楚 JVM 的工作原理,其实我个人认为这块还是非常有必要去认真了解及学习的,特别是刚入门或入门不久的 Java 开发来说,这是 Java 的基石。


其次,从各大招聘平台来看,一线互联网企业招聘需求(尤其是阿里巴巴),第一条就明确了要掌握 JVM 原理,因为 JVM 是中高级程序员必须要掌握的技术,学 JVM 也是为了更深入地理解 Java 以及更好的解决线上排查问题。



网上有关 Java 虚拟机的资料主要还是周志明的《深入理解 Java 虚拟机》,今天我就带大家来看看阿里云大师如何深入拆解 Java 虚拟机,让你更深入更通俗的理解 JVM。


Storageserver 作用是文件存储,客户端上传的文件最终存储在 Storage 服务器上,Storage server 没有实现自己的文件系统而是利用操作系统 的文件系统来管理文件。可以将 storage 称为存储服务器。


如下图:


1.2.1? Tracker 集群

FastDFS 集群中的 Tracker server 可以有多台,Trackerserver 之间是相互平等关系同时提供服务,Trackerserver 不存在单点故障。客户端请求 Trackerserver 采用轮询方式,如果请求的 tracker 无法提供服务则换另一个 tracker。

1.2.2? Storage 集群

Storage 集群采用了分组存储方式。storage 集群由一个或多个组构成,集群存储总容量为集群中所有组的存储容量之和。一个组由一台或多台存储服务器组成,组内的 Storage server 之间是平等关系,不同组的 Storageserver 之间不会相互通信,同组内的 Storageserver 之间会相互连接进行文件同步,从而保证同组内每个 storage 上的文件完全一致的。一个组的存储容量为该组内存储服务器容量最小的那个,由此可见组内存储服务器的软硬件配置最好是一致的。


采用分组存储方式的好处是灵活、可控性较强。比如上传文件时,可以由客户端直接指定上传到的组也可以由 tracker 进行调度选择。一个分组的存储服务器访问压力较大时,可以在该组增加存储服务器来扩充服务能力(纵向扩容)。当系统容量不足时,可以增加组来扩充存储容量(横向扩容)。

1.2.3? Storage 状态收集

Storage?server 会连接集群中所有的 Tracker?server,定时向他们报告自己的状态,包括磁盘剩余空间、文件同步状况、文件上传下载次数等统计信息。

1.2.4? 文件上传流程


客户端上传文件后存储服务器将文件 ID 返回给客户端,此文件 ID 用于以后访问该文件的索引信息。文件索引信息包括:组名,虚拟磁盘路径,数据两级目录,文件名。



组名:文件上传后所在的 storage 组名称,在文件上传成功后有 storage 服务器返回,需要客户端自行保存。


虚拟磁盘路径:storage 配置的虚拟路径,与磁盘选项 store_path*对应。如果配置了 store_path0 则是 M00,如果配置了 store_path1 则是 M01,以此类推。


数据两级目录:storage 服务器在每个虚拟磁盘路径下创建的两级目录,用于存储数据文件。


文件名:与文件上传时不同。是由存储服务器根据特定信息生成,文件名包含:源存储服务器 IP 地址、文件创建时间戳、文件大小、随机数和文件拓展名等信息。


《一线大厂 Java 面试真题解析+Java 核心总结学习笔记+最新全套讲解视频+实战项目源码》开源


Java 优秀开源项目:

  • ali1024.coding.net/public/P7/Java/git

最后

针对最近很多人都在面试,我这边也整理了相当多的面试专题资料,也有其他大厂的面经。希望可以帮助到大家。


下面的面试题答案都整理成文档笔记。也还整理了一些面试资料 &最新 2021 收集的一些大厂的面试真题(都整理成文档,小部分截图)



最新整理电子书



用户头像

还未添加个人签名 2022.04.13 加入

还未添加个人简介

评论

发布
暂无评论
FastDFS入门,Java编程笔试题及答案_Java_爱好编程进阶_InfoQ写作平台