张二狗被叫到了总经理办公室,开始了如下对话。

王总:二狗啊,你工作很努力啊

张二狗:嗯

王总:你的业务能力是有目共睹的啊!

张二狗:嗯

王总:你的技术也很扎实啊!

张二狗:嗯

王总:但是... ...

巴拉巴拉一大堆,王二狗就这么没炒了,在美妙的赞扬中被炒了!被炒的原因竟然是作为一个后台开发大拿不懂硬件。

好吧,做软件开发为什么要懂硬件呢,不懂不行吗?其实作为后端工程师,不至于面面俱到,但我们最起码应该懂一些硬件基本内容。下面我们慢慢道来。

服务端硬件总览

我们所说的后端开发其实就是服务端,以某宝为例可能就是其后台服务。这些后台服务通常运行在一个数据中心,有很多服务器构成。除了服务器之外还有很多配套的设备。等一下,什么是服务器?

好吧,让我们慢慢道来。如果我们去数据中心,一进去的感觉应该是这个样子的。

图1 数据中心

这一排排的就是机柜,我们平时所谓的服务器、交换机和存储等设备都放在这里面。这张图并不能看到实际的设备。我们先给一张总图,具体如图2所示,这张图包含我们平时使用的最近的设备。如图所示包括服务器、光纤交换机、磁盘阵列和磁带库等。其中上层的设备是服务器,中层的设备是光纤交换机,下层的设备是存储设备,包含磁盘阵列和磁带库。

图2 物理连接图

如果我们简化一下,做成逻辑图如图3所示。可以看到服务器通过HBA卡和光纤交换机相连,而存储设备也通过HBA卡和光纤交换机相连;服务器之间通过以太网交换机互联。

图3 物理连接图

上述只是一个简单的拓扑结构,实际数据中心要复杂的多,除了包含上述设备外,还包括核心路由器、核心交换机、防火墙和负载均衡器等等设备。这还不包括上述机柜、无烟灭火器和UPS等辅助设备。本文先介绍主要内容,后续再介绍其它设备。

服务器

服务器是一种计算设备,其构成包括处理器、硬盘、内存、系统总线等,和通用的PC机其实没什么本质区别,但是由于需要提供高可靠的服务,因此在处理能力、稳定性、可靠性、安全性、可扩展性、可管理性等方面要求较高。

下面这个是塔式服务器,从起外观来看跟我们家里的台式机并没有太大的区别。

图4 塔式服务器正面

我们在看一它的内部,可以看到里面有CPU和内存条等组件,只不过更复杂一些,本图中就包含2颗CPU和22条内存。由于塔式服务器占用空间较大,因此在数据中心用的比较少了。

图5 塔式服务器内部

下图是机架服务器,它可以想抽屉一样插入机柜中,计算密度比塔式服务器高很多。这个是目前比较主流的服务器。

图6 机架服务器内部

还有一种密度更高的服务器,成为刀片服务器。这种服务器组成一组,放在一个框里面,可以整框使用。如图所示为整框的刀片服务器,其中竖条是计算单元,可以单独拿出来。

图7 刀片服务器正面

交换机

交换机分是一种连接设备,用于实现多个设备之间的互联互通。最为常见的是以太网交换机,另外还有专门用于存储领域的光纤交换机。当前现在也有基于光纤的以太网交换机(例如万兆交换机),但存储光纤交换机和万兆光纤交换机还是不同的,主要差异是通信协议。

如图8所示的是用于存储的光纤交换机。这个是24口的交换机,还有48口等其他规格的。

图8 光纤交换机

下面这个是以太网交换机,就是我们平时所说的交换机。

图9 以太网交换机

交换机介绍完了,那怎么连接起来呢?网线就不用介绍,下面我们看看光纤线。

图10 光纤线

其实除了上面介绍的以太网交换机和光纤交换机外,还有其它类型的交换机,比如PCI-e交换机和IB交换机等,本文暂时不做介绍。

适配卡

进行设备之间连接,除了上述交换机和线之外,还需要另外一样设备,成为适配卡。网卡其实也可以理解为适配卡的一种,除此之外还有FC-HBA和SAS-HBA,也就是光纤卡和SAS卡。

如图是光纤卡的实物图,这里是4口的光纤卡,也就是可以同时插4条线。最早的光纤卡只有一个接口,后来出现了2口和4口的光纤卡。

图11 光纤卡

如图12是SAS卡的实物图,SAS连接通常是磁盘阵列控制器与JBOD之间的连接方式。

图12 SAS卡

磁盘阵列存储

磁盘阵列是存储装置,目前常见的存储装置有SAN、NAS和统一存储,统一存储是在一个设备中同时具备SAN和NAS的功能。从外观上来看,三者并没有本质的区别,样子跟机架式服务器很像。如图13是一个磁盘阵列的正面图。NAS是网络连接存储,它可以通过以太网接入用户的网络空间,因此这里不做过多介绍。

这里重点介绍一下SAN,也就是存储区域网络。这种存储设备需要专门的存储网络,也就是上文介绍的光纤网络(当然目前有基于iSCSI的SAN,也就是IP-SAN,可以通过以太网接入)。SAN设备通常除了存储功能外,还有很多附加功能,从而实现对数据的可靠保护。通过存储网络建立服务器与存储设备的连接之后,在服务器上就可以看到存储设备划分的空间,其形式就是一个磁盘,跟本地磁盘没有任何差异。

图13 磁盘阵列SAN正面

如图14是磁盘阵列的后端,可以看出该设备包含的接口有FC接口、千兆口、万兆口和SAS口。其中前三者用于和服务器相连,也就是组成FC-SAN或者IP-SAN,而后者则与JBOD相连。

图14 磁盘阵列SAN背面

我们从图13可以看出该设备有一些磁盘,但数量并不多。因此可能存在扩展空间的情况,这个时候就用到了JBOD。JBOD(Just a Bunch Of Disks,磁盘簇)是在一个底板上安装的带有多个磁盘驱动器的存储设备。通常又称为Span。 和RAID阵列不同,JBOD没有前端逻辑来管理磁盘上的数据分布,相反,每个磁盘进行单独寻址,作为分开的存储资源。JBOD的磁盘资源会映射给磁盘阵列的控制器,从而实现统一的管理。

图15 磁盘阵列扩展

当然,除了上面介绍的存储,还可以通过普通服务器搭建分布式存储,这个不属于本文介绍范围。需要介绍的设备太多了,今天先到这,后面再进一步介绍。

后端开发工程师不懂这些就危险了相关推荐

  1. 下列不属于python第三方库的是-python后端开发工程师考证试题

    原标题:python后端开发工程师考证试题 python开发工程师考证试题 选择题 题目 关于 Python 程序格式框架的描述,以下选项中错误的是 ( A ) A: Python 语言不采用严格的& ...

  2. 七牛2018春季校园招聘后端开发工程师笔试经验

    笔试公司:上海七牛信息技术有限公司 笔试岗位:后端开发工程师 笔试时间:2018年4月14日14:00-15:30 笔试形式:牛客网在线做题 笔试回忆: 笔试共分为不定项选择和问答两部分,不定项选择1 ...

  3. [笔试题目] 美团2015年9月后端开发工程师笔试题

    由于题目是我通过草稿回顾,可能表述不清,但是内容大致一样.希望该博客内容对你有所帮助,题目所有权归美团公司所有,我只是想分享给大家学习,还望贵公司海涵~ 面试职位 应聘职位:后端开发工程师 岗位描述: ...

  4. 【计算机就业-后端开发工程师】校招想去互联网公司担任后端开发工程师该怎么准备

    前言 hello大家好,我本次分享的主题是计算机专业校招想去互联网公司担任后端开发工程师该怎么准备,比如说计算机专业投什么岗,笔试面试需要准备什么.我将结合自己以及身边小伙伴们的秋招经历来进行简要的分 ...

  5. java后端开发工程师笔试_后端开发工程师面试参考

    为什么要写这篇文章 后端开发工程师的知识体系大而杂,从Java基础到算法.数据库.操作系统.网络.中间件.系统设计等都可以理解为后端的射程.下定决心开始准备面试时,可谓是千头万绪无从下手.我的开始源于 ...

  6. 后端开发工程师的生命周期,生命在于学习

    后端开发工程师的生命周期 1 职业发展方向: 标准:需要不断学习.主动思考.不断锻炼.多提问 技术专家:三年.五年.八年的时间节点 2 后端学习成长路线 2.1 后端技术图谱 2.2 Go语言技术图谱 ...

  7. 大疆 —— 后端开发工程师(北京)

    大疆 -- 后端开发工程师(北京) 2021/08/14 笔试 2021/08/14 笔试 单选10道: 二叉树遍历,由前序.中序求后序 类继承,子类初始化父类,父子类中均有move函数,调用此对象的 ...

  8. 字节跳动2019春招后端开发工程师-笔试题解析

    一.简介 字节跳动2019春招第三批在线笔试(后端开发工程师)已结束,结果也是凉凉.本文主要是分析这次的题目,并给出代码,以供大家参考和讨论,如有错误之处,还望帮忙指正,谢谢每位优秀的程序员. 二.题 ...

  9. IT:后端进阶技术路线图(初级→中级→高级)、后端开发工程师(技术方向分类之后台业务开发/中间件/内核/分布式架构)基础知识简介、技术路线/技术趋势指南(如何选择自己的技术方向)之详细攻略

    IT:后端进阶技术路线图(初级→中级→高级).后端开发工程师(技术方向分类之后台业务开发/中间件/内核/分布式架构)基础知识简介.技术路线/技术趋势指南(如何选择自己的技术方向)之详细攻略 目录 后端 ...

  10. python后端工程师简历_【社招】字节跳动 - 后端开发工程师( Python Golang)-懂车帝...

    [字节跳动-懂车帝-后端开发工程师] 想加入最有梦想最年轻有活力的团队么,懂车帝研发团队呼唤你!懂车帝今年 3 岁,已经成为发展最快的汽车类资讯平台. 如果你热爱编程,热爱汽车,那么动动手指投出简历吧 ...

最新文章

  1. 近期活动盘点:数据科学研究院论坛“人文社科专场、全球最大的免费编程社区公开课、DeeCamp2019:实战AI 铸造定雨神针...
  2. HLG 1349 Graph [floyed]
  3. 数据挖掘技术简介[转]
  4. C# 打印多页tif
  5. linux编译安装madam,linux 下 使用 mdadm 创建阵列
  6. java queue源码_java源码解读--queue
  7. YAML/Properties配置文件与Spring Boot(转)
  8. mysql 优化的一些小窍门
  9. 商品库存清单案例java_java实现超市商品库存管理平台
  10. Java selenium和python_c#和Java和python设置selenium超时时间
  11. 对网易云音乐软件的看法
  12. 数据中心规划设计参考-(文章以GB 50174为参考基准)
  13. 【.Net Core】编译时禁止自动生成netcoreapp文件夹
  14. Dependency-check
  15. Win10截屏的几种方法介绍
  16. flying saucer做导PDF踩过的坑~
  17. 真过份,女友居然要我坐在马桶上小便
  18. android 平板 吃鸡,吃鸡不卡的安卓平板
  19. Mac上十个必备的效率软件
  20. Matlab图像的几何变换之图像缩放

热门文章

  1. Python模块之functools
  2. ThinkPHP学生作业管理系统
  3. 操作系统的主要功能(3)
  4. 从团队协作与主题解读ios主流思维导图软件
  5. iOS16新特性及开发适配
  6. 利用Reachability判断网络环境(WAN/WIFI)
  7. STA series --- 3.Standard cell library(PART-I)
  8. 计算机显卡型号中数字含义详解,显卡型号全解读:那么多字母如何理解?又分别代表啥意思?...
  9. 【odoo15】添加Chatter到表单视图,创建[发送消息][记录备注][安排活动]
  10. RabbitMQ之管理与监控