前言

设计模式是我们编程道路上绕不开的一环,用好了设计模式能够让代码拥有良好的维护性、可读性以及扩展性,它仿佛就是“优雅”的代名词,各个框架和库也都能见到它的身影。

正是因为它有种种好处,所以很多人在开发时总想将某个设计模式用到项目中来,然而往往会用得比较别扭。其中一部分原因是业务需求并不太符合所用的设计模式,还有一部分原因就是在Web项目中我们对象都是交由Spring框架的Ioc容器来管理,很多设计模式无法直接套用。那么在真正的项目开发中,我们就需要对设计模式做一个灵活的变通,让其能够和框架结合,在实际开发中发挥出真正的优势。

容灾又分为异地容灾和同城容灾

FS作为生产存储支持ebakcup或者第三方备份管理软件的备份

FS的高级特性


双活

hyper metro

远程复制(异步)

hyper replication

可以实现存储层容灾

三、FS的DHT算法

==========

DHT(分布式哈希表,Distrubuted Hash Table

111  698d51a19d8a121ce581499d7b701668

112  7f6ffaa6bb0b408017b62254211691b5

将十进制的数,转化为2的128次方的数,就可以实现平均切随机

一个存储池对应一个DHT环(逻辑)

读写流程:

1.scsi流交给vbs—>vbs转换scsi流为key-value

2.对key值进行—>hash寻址

目的:将主机下发的IO平均且随机的落到存储池各个OSD对应硬盘上

也就是为了实现****IO 的负载均衡

3.经过hash得到一个2的32次方的数值—>模运算–>得到patition

目的:缩减表的尺度,加速查找DHT

4.查询由MDC维护的映射表记录的是patition和osd的关系patition—>得到osd

目的:解决坏盘或者扩容场景,准确定位patition对应的osd位置

5.osd做key-value到iscsi流的转化,做磁盘的读写操作

四、存储池和卷

=======

存储池是由一组服务器本地硬盘构成,硬盘类型相同、容量相同、参数相同等限制(参考产品文档)

主存类型:SATA机械  SAS机械   SAS-SSD   SATA-SSD  NVME SSD盘、SSD卡

一块硬盘只能属于一个存储池

一个存储池可以划多个卷(划卷依赖vbs)

一个卷只能属于一个存储,不能跨存储池

卷可以通过scsi挂载给vbs或者iscsi映射给业务主机使用

一个主机可以使用多个卷,多个卷可以来自不同存储池

五、FS的可靠性和安全级别

=============

可靠性


副本机制:

2副本–50%   3副本–33.3%

EC机制: M=2,3,4  N最大22

EC(Erusure code)算法,分布式raid算法,可以跨界点raid

N+M   坏M块硬盘或者M个节点数据不丢失,业务不中断

N是数据分片

M是校验分片

N+M:B   坏M块硬盘或者B=1个节点数据不丢失,业务不中断

22+2保护  高达91%空间利用率

安全级别


FSM配置界面创建存储池仅支持服务器级和机柜级

服务器级安全:数据副本或者EC的数据分片一定不会放在同一个服务器节点内

机柜级安全:数据副本或者EC的数据分片一定不会放在同一个机柜内

机房级安全:数据副本或者EC的数据分片一定不会放在同一个机房内

不同的存储池可配置不同的数据保护方式和安全级别

六、VBS结构

=======

scsi:将内核态VSC模块的scsi流引入VBS用户态

============================

VBP:scsi流转换成key-value

client:key–hash—mod–patition–查io-view–主OSD 走存储网络平面将io流转发至主OSD

VBM:卷和快照生命周期管理操作  创建卷、挂载卷、卸载卷、查询卷、删除卷、创建快照、删除快照、基于快照创建卷等

hearbeat:心跳模块  通过存储平面与MDC交互心跳包  使MDC维持VBS view状态视图

七、OSD结构

=======

RSM:复制协议实现。

SNAP:实现卷与快照的IO功能、磁盘空间的管理。

CACHE:实现cache功能。

AIO:实现异步IO下发到底层SMIO模块和通过调用SMIO接口来监控介质故障。

SMIO:下发到IO到实际的物理介质、监控物理介质故障、获取磁盘信息。

八、FS的IO流程

=========

1)写IO


APP–》OS–》scsi/iscsi—》VSC内核模块接收—》scsi initiator–》scsi target—》VBP(LUN ID/LBA ID/length–>key data–>value)

—》client(key–hash–mod–patition–查io view–主OSD)—》主OSD(key–hash–mod–patition–查patition view–备OSD)–》主OSD一方面下发写IO到本端cache,一方面通过RSM复制IO到备OSD—》主备OSD同步写cache成功–》由主OSD返回VBS写成功(回写),VBS返回APP写成功。

2)读IO


APP–OS–scsi/iscsi—VSC内核模块接收—scsi initiator–scsi target—VBP(LUN ID/LBA ID/length–>key data–>value)—client(key–hash–mod–patition–查io view–主OSD)—主OSD

1、主OSD正常,先读cache,如果cache读命中,返回读成功,如果未读命中,主OSD向主存disk查询读数据。

2、主OSD异常,MDC会检测硬盘异常触发退盘,修改视图(OSD view  IO view  Patition view),指导VBS引流到备OSD(新主OSD读数据),先读cache,如果cache读命中,返回度成功,如果未读命中,主OSD向主存disk查询读数据。

九、ZK的作用

=======

Zookeeper(简称ZK)分布式服务框架主要用来解决分布式应用中经常遇到的,如:统一命名服务、状态同步服务、集群管理、分布式应用配置项的管理等,ZK主要工作包括三项:

MDC主备管理:


MDC采用一主两备部署模式;在MDC模块进程启动后,各个MDC进程会向ZK注册选主,先注册的为主MDC;运行过程中,ZK记录MDC主备信息,并通过心跳机制监控MDC主备健康状况,一旦主MDC进程故障,会触发MDC重先选主。

数据存储


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

Java优秀开源项目:

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

最后

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

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

最新整理电子书

数据存储


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

Java优秀开源项目:

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

最后

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

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

[外链图片转存中…(img-jQtXcXnW-1649342846889)]

最新整理电子书

[外链图片转存中…(img-8wBNwgat-1649342846890)]

FusionStorage原理及组件,Java面试回忆录相关推荐

  1. Java面试回忆录:单元测试自动生成用例java

    容器化时代来了 虚拟化技术已经走过了三个时代,没有容器化技术的演进就不会有 Docker 技术的诞生. (1)物理机时代:多个应用程序可能会跑在一台机器上. (2)虚拟机时代:一台物理机器安装多个虚拟 ...

  2. 面试大厂不看这两份Java面试核心知识点原理篇+框架篇,有个屁用?食屎啦泥?

    前言 面试在即,Java知识点很凌乱? 别急,有本套书在呢! 除了原理,还有框架! ★ 精细讲解JVM原理.Java基础.并发编程.数据结构和算法.网络与负载均衡 ★ 深入挖掘数据库与分布式事务.分布 ...

  3. 面试回忆录(腾讯/阿里/滴滴/美团...)

    点击上方的终端研发部,右上角选择"设为星标" 每日早9点半,技术文章准时送上 公众号后台回复"学习",获取作者独家秘制精品资料 往期文章 原文地址:https: ...

  4. 2017Android面试回忆录「下」(今日头条/小米/网易/知乎...)

    前言 面试合集 之 滴滴.美团.腾讯.阿里.头条.小米.网易- PS: 时间周期:[2017/6 – 2017/7] 来源: [本部分由「洛廷」和「剑胆诗魂」提供] 没有严格按照面试轮次来区分 今日头 ...

  5. Java 面试知识点解析(七)——Web篇

    前言: 在遨游了一番 Java Web 的世界之后,发现了自己的一些缺失,所以就着一篇深度好文:知名互联网公司校招 Java 开发岗面试知识点解析 ,来好好的对 Java 知识点进行复习和学习一番,大 ...

  6. java面试笔试大汇总(一)

    java面试笔试题大汇总5 JAVA相关基础知识 1.面向对象的特征有哪些方面 1.抽象:2.继承:3.封装:4. 多态性: 2.String是最基本的数据类型吗? 基本数据类型包括byte.int. ...

  7. java面试和笔试大全

    2.String是最基本的数据类型吗? 基本数据类型包括byte.int.char.long.float.double.boolean和short. java.lang.String类是final类型 ...

  8. 各大公司java面试整理对应问题博客整理

    各大公司java面试整理对应问题博客整理! 阿里 分库分表 数据库中间件 MyCAT是一个强大的数据库中间件,不仅仅可以用作读写分离,以及分表分库.容灾管理,而且可以用于多租户应用开发.云平台基础设施 ...

  9. Java 面试就业指导,100 % 提高面试成功率

    转载自   Java 面试就业指导,100 % 提高面试成功率 想要成为合格的Java程序员或工程师到底需要具备哪些专业技能,面试者在面试之前到底需要准备哪些东西呢? 本文陈列的这些内容既可以作为个人 ...

  10. Java面试知识点总结宝典助你通关!成功入职字节跳动

    01 阿里中间件(四面,Java岗) 1.1 Java中间件一面 技术一面考察范围 重点问了Java线程锁:synchronized 和ReentrantLock相关的底层实现 线程池的底层实现以及常 ...

最新文章

  1. 回头再学Asp.net系列--基础篇(一)
  2. 与Susan Fowler探讨生产就绪微服务之问答
  3. pl/sql 11g 12705_如何用PLSQL导出数据库存表结构信息
  4. linux进程莫名其妙被kill,Linux进程突然被杀掉(OOM killer),查看系统日志
  5. 【组合数学】生成函数 ( 使用生成函数求解不定方程解个数示例 2 | 扩展到整数解 )
  6. 文件操作-小文件复制
  7. python pyquery库_python解析HTML之:PyQuery库的介绍与使用
  8. 【bzoj1705】[Usaco2007 Nov]Telephone Wire 架设电话线 dp
  9. 还没毕业就被阿里30万年薪预定,他凭什么?
  10. 如何在Red Hat Linux上安装和配置FreeIPA
  11. java 课后习题 Vector类的 初使用
  12. Struts2项目搭建
  13. JACK——BOM Exercise2
  14. No module named 'django.core.urlresolvers
  15. 神经元与网络结构概论
  16. 画法几何及工程制图考试卷A卷
  17. HTML的head,头头头头!!!
  18. java通过代理使用redis,redis自动关闭连接,释放资源
  19. Redis——事务 锁机制
  20. 结构有限元分析工具 — Abaqus

热门文章

  1. PPT图标(多个软件快捷方式图标)异常,但能运行,解决方案
  2. Preferences
  3. LabVIEW两种方法实现Excel数据(含汉字)读取
  4. 更好的在小学语课上用计算机,如何把小学科学课上好教育随笔
  5. 【办公-WORD】Word 背景颜色层次分析
  6. 树莓派linux下载机,树莓派打造北邮人种子下载机——下载、做种一条龙全站式教程...
  7. 2014c语言考试题库,2014年腾讯校园招聘C语言考试真题
  8. 一文读懂阿里云直播技术是如何实现的
  9. 计算机骂人的专业术语,台湾网友分享“如何用本专业术语骂人不带脏字”
  10. OSPF配置及MD5验证