编译分布式存储官网
① 什么是分布式数据存储
什么是分布式存储
分布式存储是一种数据存储技术,它通过网络使用企业中每台机器上的磁盘空间,这些分散的存储资源构成了虚拟存储设备,数据分布存储在企业的各个角落。
分布式存储系统,可在多个独立设备上分发数据。传统的网络存储系统使用集中存储服务器来存储所有数据。存储服务器成为系统性能的瓶颈,也是可靠性和安全性的焦点,无法满足大规模存储应用的需求。分布式网络存储系统采用可扩展的系统结构,使用多个存储服务器共享存储负载,利用位置服务器定位存储信息,不仅提高了系统的可靠性,可用性和访问效率,而且易于扩展。
② 国内较好的分布式云存储产品有哪些
阿里云的分布式存储系统盘古是自主研发的代表,支撑了大多数阿里云的存储和计算产品。
网络,github上有个开源的分布式文件系统,但是感觉跟工业级差别比较大。
腾讯,PaxosStore应该算一个。
华为,好多做存储的团队,有使用开源的,有自研的。
云科数据,YK4000及YK6000的两款超融合一体机的市场前景颇为看好,这与其行业领先、与世界同步的技术优势不无关系,采用了核心分布式存储软件EMC ScaleIO,搭建起与谷歌、Facebook、亚马逊等 Web大规模的公有云相同的基础架构。
大公司应该都有能力和资源自己写分布式存储系统,就看如何打磨得更适合自己的业务特点了。
③ Hadoop到底是什么玩意
Hadoop到底是个啥?
答:Hadoop是基于廉价设备利用集群的威力对海量数据进行安全存储和高效计算的分布式存储和分析框架,Hadoop本身是一个庞大的项目家族,其核心 家族或者底层是HDFS和MapRece,HDFS和MapRece分别用来实现对海量数据的存储和分析,其它的项目,例如Hive、HBase 等都是基于HDFS和MapRece,是为了解决特定类型的大数据处理问题而提出的子项目,使用Hive、HBase等子项目可以在更高的抽象的基础上更简单的编写分布式大数据处理程序。Hadoop的其它子项目还包括Common, Avro, Pig, ZooKeeper, Sqoop, Oozie 等,随着时间的推移一些新的子项目会被加入进来,一些关注度不高的项目会被移除Hadoop家族,所以Hadoop是一个充满活力的系统。
Apache Hadoop: 是Apache开源组织的一个分布式计算开源框架,提供了一个分布式文件系统子项目(HDFS)和支持MapRece分布式计算的软件架构。
Apache Hive: 是基于Hadoop的一个数据仓库工具,可以将结构化的数据文件映射为一张数据库表,通过类sql语句快速实现简单的MapRece统计,不必开发专门的MapRece应用,十分适合数据仓库的统计分析。
ApachePig: 是一个基于Hadoop的大规模数据分析工具,它提供的SQL-LIKE语言叫Pig Latin,该语言的编译器会把类SQL的数据分析请求转换为一系列经过优化处理的MapRece运算。
ApacheHBase: 是一个高可靠性、高性能、面向列、可伸缩的分布式存储系统,利用HBase技术可在廉价PC Server上搭建起大规模结构化存储集群。
Apache Sqoop: 是一个用来将Hadoop和关系型数据库中的数据相互转移的工具,可以将一个关系型数据库(MySQL ,Oracle ,Postgres等)中的数据导进到Hadoop的HDFS中,也可以将HDFS的数据导进到关系型数据库中。
Apache Zookeeper: 是一个为分布式应用所设计的分布的、开源的协调服务,它主要是用来解决分布式应用中经常遇到的一些数据管理问题,简化分布式应用协调及其管理的难度,提供高性能的分布式服务 ApacheMahout:是基于Hadoop的机器学习和数据挖掘的一个分布式框架。Mahout用MapRece实现了部分数据挖掘算法,解决了并行挖掘的问题。
ApacheCassandra:是一套开源分布式NoSQL数据库系统。它最初由Facebook开发,用于储存简单格式数据,集Google BigTable的数据模型与AmazonDynamo的完全分布式的架构于一身 Apache Avro: 是一个数据序列化系统,设计用于支持数据密集型,大批量数据交换的应用。Avro是新的数据序列化格式与传输工具,将逐步取代Hadoop原有的IPC机制 ApacheAmbari: 是一种基于Web的工具,支持Hadoop集群的供应、管理和监控。
ApacheChukwa: 是一个开源的用于监控大型分布式系统的数据收集系统,它可以将各种各样类型的数据收集成适合 Hadoop 处理的文件保存在 HDFS 中供Hadoop 进行各种 MapRece 操作。
ApacheHama: 是一个基于HDFS的BSP(Bulk Synchronous Parallel)并行计算框架, Hama可用于包括图、矩阵和网络算法在内的大规模、大数据计算。
ApacheFlume: 是一个分布的、可靠的、高可用的海量日志聚合的系统,可用于日志数据收集,日志数据处理,日志数据传输。
ApacheGiraph: 是一个可伸缩的分布式迭代图处理系统, 基于Hadoop平台,灵感来自 BSP (bulk synchronous parallel) 和Google 的 Pregel。
ApacheOozie: 是一个工作流引擎服务器, 用于管理和协调运行在Hadoop平台上(HDFS、Pig和MapRece)的任务。
ApacheCrunch: 是基于Google的Flumejava库编写的Java库,用于创建MapRece程序。与Hive,Pig类似,Crunch提供了用于实现如连接数据、执行聚合和排序记录等常见任务的模式库 ApacheWhirr: 是一套运行于云服务的类库(包括Hadoop),可提供高度的互补性。Whirr学支持Amazon EC2和Rackspace的服务。
ApacheBigtop: 是一个对Hadoop及其周边生态进行打包,分发和测试的工具。
ApacheHCatalog: 是基于Hadoop的数据表和存储管理,实现中央的元数据和模式管理,跨越Hadoop和RDBMS,利用Pig和Hive提供关系视图。
ClouderaHue: 是一个基于WEB的监控和管理系统,实现对HDFS,MapRece/YARN, HBase, Hive, Pig的web化操作和管理。
④ 国内的分布式存储公司有哪些
杉岩数据,专注软件定义存储,目前,杉岩数据软件定义存储系列产品主要为统一存储平台(SandStoneUSP)、海量对象存储(SandStoneMOS)、超融合一体机(SandStoneHyperCube),已经在政府、企业、医疗、教育、金融和运营商等多个行业近百家用户中成功部署。杉岩数据与Intel、Mellanox和三星等基础架构技术领导厂商均有紧密的研发合作关系,在产品创新、用户体验、性能及可靠性等方面将不断提升和优化,力争成为中国领先的软件定义存储领导厂商。
⑤ 在个人电脑上怎么进行分布式编译服务器的安装
方法一:直接在命令行安装
~$ aptitude install distcc
方法二: 下载distc,解压,编译安装如下:
~$ wgethttp://distcc.samba.org/ftp/distcc/distcc-2.18.3.tar.bz2
~$ tar-jxf distcc-2.18.3.tar.bz2
~$ cddistcc-2.18.3
~$./configure && make && sudo make install
⑥ 国内有哪些知名的分布式存储厂商
目前主流的分布式存储厂商主要分两类:
自主研发,比如国内的主要有 SmartX,华为,国外的主要有 vSAN ,Nutanix;
基于开源的 Ceph 研发,比如 XSKY,杉岩,深信服。
⑦ 国内的分布式存储公司有哪些
瑞驰凭借自主可控、成熟、稳定的大数据及云计算产品,提供丰富、完善、应需而变的全套解决方案。vCluster分布式存储系列采用先进的分布式架构,将一个任务分给多个存储节点并行处理,大大提高了存储效率。我的答案能否帮你解决问题,如果能希望能采纳下
⑧ 什么是分布式数据存储
什么是分布式存储
这个词汇是源于国外,简称是DSS,简单来说,就是存储设备分布在不同的地理位置,数据就近存储,将数据分散在多个存储节点上,各个节点通过网络相连,对这些节点的资源进行统一的管理,从而大大缓解带宽压力,同时也解决了传统的本地文件系统在文件大小、文件数量等方面的限制。
为什么分布式存储这么重要
分布式存储的诞生有着很强的优越性,主要体现在灵活性、速度、成本等方面。
灵活性方面:分布式存储系统使用强大的标准服务器(在CPU,RAM以及网络连接/接口中),它不再需要专门的盒子来处理存储功能。而且允许标准服务器运行存储,这是一项重大突破,这意味着简化IT堆栈并为数据中心创建单个构建块。通过添加更多服务器进行扩展,从而线性地增加容量和性能。
速度方面:如果你研究一个专门的存储阵列,你会发现它本质上是一个服务器,但是他只能用于存储,为了拥有快速存储系统,你要花费的成本非常高。即使在今天大多数系统中,当你为存储系统进行扩展时,也不会提高整个系统的性能,因为所有流量都必须通过“头节点”或主服务器(充当管理节点)。但是在分布式存储系统中,任何服务器都有CPU,RAM,驱动器和网络接口,它们都表现为一个组。因此,每次添加服务器时,都会增加总资源池,从而提高整个系统的速度。
成本方面:分布式存储组织将最大限度地降低基础设施成本高达90%!没错,是90%,因为驱动器和网络所花费的成本非常低,极大的提高了服务器的使用效率,同时,数据中心所花费的电力、空调费、所占空间等费用也减少了,管理起来更加方面,所需要的人也更少。这也是为什么如今各大公司都在部署分布式存储。
⑨ 国内做分布式存储研发的公司有哪些
做过一些集成项目,国内集群NAS(分布式文件系统)这块了解一些,随便说说,仅限于通用集群NAS。宣传自研集群NAS的公司不少,OEM居多,做研发的不多,完全自研就更少了。列一些接触过,完全自研,产品化程度相对高一些的吧。大一点的,华为 (oceanstor 9000),曙光(parastor)。市场上见的比较多了。小一点的,龙存,这个算是老牌子了。聚存,这个知道的人不多。基于ceph的公司这几年不少,用过其中一家的东西,块这块还行,文件这块还需要时间。分布式存储其实是一个比较大的领域。有分布式数据库、分布式文件系统、分布式块(ServerSAN)、分布式对象存储之类。做的公司挺多,不过真正都自己的代码的挺少,很多都是开源改的。分布式数据来说一般互联网公司用的多,像阿里,腾讯、网络都有自己分布式数据库。国内做分布式文件系统来说,数中科院的一帮人做的最早。从中科院出来人基本的分为三家,曙光,龙存,达沃。这三家基本都属于自研并且应用时间都在国内来说时间最久了。也有像华为、淘宝、网络、腾讯的文件系统。
⑩ 技术面试会问很多技术问题吗
笔者其实没有想到去面试,只是在智联上更新了一下简历,就陆陆续续接到很多猎头的邮件和电话,实在是没准备好要去面试,就推掉了几家公司的面试了。正因为笔者也很久没有面试了,笔者也想去面试学习一下,闲话少说,下面就分享给大家笔者在2018年1月4号上午10点30分的面试经历:
首先,猎头或者公司人资会把公司的介绍及岗位要求发到你邮箱(或者QQ、微信),下面这份是猎头发给我的岗位说明,为了职业道德操守,公司的介绍和面试通知信息我就不贴出来了,我就把岗位要求贴出来:
职位描述:
1、 负责应用服务器的安装、配置、优化与维护;
2、 负责应用系统的日志信息备份、管理、维护与分析;
3、 负责应用系统的日常监测于维护、故障处理、性能分析与优化;
4、 负责应用部署系统、环境配置系统、监控系统的开发、部署、升级与维护,建设高性能的运维平台。
岗位要求:
1、 熟悉linux操作系统的基础知识,熟练使用Linux常用操作命令;
2、 熟练配置Nginx、HAproxy 等应用相关软件的部署、配置与优化维护;
3、 熟悉网络基础知识、熟悉TCP/IP的工作原理,会配交换机或路由器,能熟练的对网络情况进行分析
4、 熟悉shell/perl/python中的一种或多种进行运维程序的开发;
5、 熟悉Nagios,Ganglia等监控软件
看着上面的要求大家是不是觉得要求也不高啊,你要细看就会发现,这家公司要求的还挺多,不仅要会网络知识(熟悉TCP/IP好像是每家单位的都会写这样的要求),还要会开发技能。相信很多做运维的兄弟在网络这一块是个头疼的事情,都对交换机和路由器不怎么会配置和管理。
然后,笔者详细了解他们公司,了解岗位要求,在突击复习一下可能会问到的知识点和技术点。到了面试的这天时间,早早的起床,把牙一定要刷干净,特别是有口臭的兄弟,最好准备点口香糖,到达面试公司前嚼块口香糖,以免因为口气的原因熏到面试官,让你在面试官心里减分。早点要记得吃,如果你是下午面试的话也要吃午饭,吃早点了精气神就有了。还要注意,带上你的简历和一支笔,虽然他们那边也会有你的简历,为了以防万一还是准备好简历。
最后,关键点来了,就是和面试官沟通了,有笔试的公司会让你做些面试题,没有笔试就直接和面试官聊了,下面是我和面试官沟通完之后记住的一些问题,分享给大家看一下,笔者一共记住了7个问题,好像还有两个问题实在想不起来了,如果大家有更恰当的回答一定要贴出来一起探讨和进步:
1、介绍下自己?(几乎每家公司首先都会让你做个自我介绍,好像是必修课一样)
笔者回答:此处省略笔者的自我介绍,笔者建议介绍自己的时间不宜过长,3-4分钟为宜,说多了面试官会觉得你太啰嗦了。说太少了也不行,那样会让人感觉你的经历太简单了、太空了。正常情况下,一般你在做自我介绍的同时,面试官这个时候在看你的简历,他需要一边看简历、一边听你介绍自己,如果你说个几句话就把自己介绍完了,他肯定还没缓过神来,对你的映像会减分的。在介绍的同时思维要清晰,逻辑要清楚,最好是根据你简历上写的经历来介绍,这样可以把面试官的思路带到你这里来,让他思路跟着你走。不要东扯一句,西扯一句。竟量少介绍自己的性格、爱好(最好能不说就不说),你可以简单罗列干过几家公司(最多罗列3家公司/也包含目前所在的公司,注意顺序不要乱),都在那几家公司负责什么工作,都用过什么技术,在着重介绍一下你目前所在的公司是负责哪些工作的,可以稍微详细一点介绍,不要让面试官听着晕头转向的感觉。
2、灰度发布如何实现?
笔者回答:其实对这个问题笔者也答的不好,就不写出来误导大家了。大家有好的方法可以共享出来。不过笔事后在知呼上看到了一位网友的建议觉得不错,大家可以参考看一下 :https://www.hu.com/question/20584476
3、Mongodb熟悉吗,一般部署几台?
笔者回答:部署过,没有深入研究过,一般mongodb部署主从、或者mongodb分片集群;建议3台或5台服务器来部署。MongoDB分片的基本思想就是将集合切分成小块。这些块分散到若干片里面,每个片只负责总数据的一部分。 对于客户端来说,无需知道数据被拆分了,也无需知道服务端哪个分片对应哪些数据。数据在分片之前需要运行一个路由进程,进程名为mongos。这个路由器知道所有数据的存放位置,知道数据和片的对应关系。对客户端来说,它仅知道连接了一个普通的mongod,在请求数据的过程中,通过路由器上的数据和片的对应关系,路由到目标数据所在的片上,如果请求有了回应,路由器将其收集起来回送给客户端。
4、如何发布和回滚,用jenkins又是怎么实现?
笔者回答:发布:jenkins配置好代码路径(SVN或GIT),然后拉代码,打tag。需要编译就编译,编译之后推送到发布服务器(jenkins里面可以调脚本),然后从分发服务器往下分发到业务服务器上。
回滚:按照版本号到发布服务器找到对应的版本推送
5、Tomcat工作模式?
笔者回答:Tomcat是一个JSP/Servlet容器。其作为Servlet容器,有三种工作模式:独立的Servlet容器、进程内的Servlet容器和进程外的Servlet容器。
进入Tomcat的请求可以根据Tomcat的工作模式分为如下两类:
Tomcat作为应用程序服务器:请求来自于前端的web服务器,这可能是Apache, IIS, Nginx等;
Tomcat作为独立服务器:请求来自于web浏览器;
6、监控用什么实现的?
笔者回答:现在公司的业务都跑在阿里云上,我们首选的监控就是用阿里云监控,阿里云监控自带了ECS、RDS等服务的监控模板,可结合自定义报警规则来触发监控项。上家公司的业务是托管在IDC,用的是zabbix监控方案,zabbix图形界面丰富,也自带很多监控模板,特别是多个分区、多个网卡等自动发现并进行监控做得非常不错,不过需要在每台客户机(被监控端)安装zabbix agent。
7、你是怎么备份数据的,包括数据库备份?
笔者回答:在生产环境下,不管是应用数据、还是数据库数据首先在部署的时候就会有主从架构、或者集群,这本身就是属于数据的热备份;其实考虑冷备份,用专门一台服务器做为备份服务器,比如可以用rsync+inotify配合计划任务来实现数据的冷备份,如果是发版的包备份,正常情况下有台发布服务器,每次发版都会保存好发版的包。
总结
总结一下面试注意几点事项,可能笔者也说得不太对,为了我们运维工作的兄弟们都能拿到高薪,大家一定要指证出来一起进步、一起探讨:
第一,你要对自己的简历很熟悉,简历上的写的技能自己一定要能说出个一二,因为面试官的很多问题都会挑你简历上写的问。比如你简历上写了这么一条技能“熟悉mysql数据库的部署安装及原理”。你即然写了这么一条技能,你在怎么不熟悉你也要了解mysql的原理,能说出个大概意思。万一面试官问到了你写的这一条,你都答不上来,那在他心里你又减分了,基本上这次面试希望不大。
第二,如果面试官问到你不会的问题,你就说这个不太熟悉,没有具体研究过,千万别不懂装懂,还扯一堆没用的话题来掩饰,这样只会让面试官反感你。
第三,准备充分,竟可能多的记住原理性的知识,一般面试问的多的就是原理。很少问具体的配置文件是怎么配置的。面试前也要了解清楚“职位描述”和“岗位要求”,虽然有时候大多数不会问到岗位要求的问题,但也要了解和熟悉。
第四,面试完后一定要总结,尽量记住面试官问的每一个问题,回去记录下来,如果问到不会的问题,事后要立马查网络或者找朋友搞清楚、弄明白,这样你才能记劳,下次面试说不定又问到同样的问题。
问完之后,面试官就跟我聊薪资待遇了,问我多少钱能达到自己的要求,我就不便透露了,可以私聊,哈哈,后续笔者会陆陆续续更新以前面试的经历和问题,有需要的朋友可以转载或者收藏起来一起讨论。
基于大家热情高昂的气氛,笔者又花了一个下午的时间回忆并整理在2017年2月24号笔者在东三环边上(快到东四环了,没有地铁过去,到了四惠还要转公交车)的一家传媒公司的面试经历,还好笔者有做笔记的习惯,把之前面试的问题都记录在案,这一次的面试笔者可是记忆犹新,因为这次这家公司都跟笔者发offer了,实在是真心不想去这家公司就找原因推掉了,大家可别学我这么不靠谱。下面是这家公司中的岗位要求说明:
岗位职责:
1、负责公司产品的版本控制、构建和发布管理;
2、负责公司统一配置库管理工作,权限管理与分配准确及时,定期完成配置备份;
3、负责公司内部开发/测试服务器的运行管理工作;
4、负责Linux操作系统的安装、配置、监控和维护、问题处理、软件升级、 数据备份、应急响应、故障排除等、保证线上环境的稳定运行;
5、负责支撑平台24×7稳定运行,并进行前瞻性容量规划;
6、负责公司机房服务器日常维护及网络系统安装、部署、维护工作。
岗位要求:
1、计算机相关专业本科及以上学历,2年以上运维或配置管理工作经验;
2、至少熟悉一种监控系统搭建,如Nagios/Zabbix/等;
3、至少熟悉一种集群管理工具,如Ansible/SaltStack等;
4、有使用集成发布工具发布构建经验优先。比如:bamboo或者Jenkins;
5、熟悉Unix/Linux操作系统,熟悉Weblogic/tomcat等中间件,能够编写shell脚本,熟悉软件开发过程及过程产品,有一定的网络基础;
6、熟悉rsyslog, flume等日志收集和处理系统;
7、具有强烈的安全意识及较强的沟通协调和学习能力,良好的团队合作精神,工作积极主动。
过去之后,前台美眉把我带到他们公司的地下室,我扫视了一下周围的环境,貌似旁边就是机房,因为我听到服务器的声音。等了几分钟,面试官下来了,面试官目测比较瘦,看着跟我身材差不多(应该不到120),他说他是负责运维部的,然后开始就叫我先自我介绍,都是一个套路,免不了介绍的,所以兄弟们一定要把自我介绍练好。然后开始问我问题了,跟面试官聊得还行,问我应该有不下10个以上的问题,我记住了下面有10个问题:
1、LVS负载的原理,和Nginx负载有啥区别?
笔者回答:这个问题我觉得面试官司没问好,正常都会这么问“LVS有哪些负载均衡技术和调度算法?"。我回答就是按我说的这种问法回答的,反正他也频繁点头,当然,笔者回答的可能没有下面我整理出来的那么详细,大概意思我都说明白了。
LVS是Liunx虚拟服务器的简称,利用LVS提供的负载均衡技术和linux操作系统可实现高性能、高可用的服务器集群,一般LVS都是位于整个集群系统的最前端,由一台或者多台负载调度器(Director Server)组成,分发给应用服务器(Real Server)。它是工作在4层(也就是TCP/IP中的传输层),LVS是基于IP负载均衡技术的IPVS模块来实现的,IPVS实现负载均衡机制有三种,分别是NAT、TUN和DR,详述如下:
VS/NAT: 即(Virtual Server via Network Address Translation)
也就是网络地址翻译技术实现虚拟服务器,当用户请求到达调度器时,调度器将请求报文的目标地址(即虚拟IP地址)改写成选定的Real Server地址,同时报文的目标端口也改成选定的Real Server的相应端口,最后将报文请求发送到选定的Real Server。在服务器端得到数据后,Real Server返回数据给用户时,需要再次经过负载调度器将报文的源地址和源端口改成虚拟IP地址和相应端口,然后把数据发送给用户,完成整个负载调度过程。
可以看出,在NAT方式下,用户请求和响应报文都必须经过Director Server地址重写,当用户请求越来越多时,调度器的处理能力将称为瓶颈。
VS/TUN :即(Virtual Server via IP Tunneling)
也就是IP隧道技术实现虚拟服务器。它的连接调度和管理与VS/NAT方式一样,只是它的报文转发方法不同,VS/TUN方式中,调度器采用IP隧道技术将用户请求转发到某个Real Server,而这个Real Server将直接响应用户的请求,不再经过前端调度器,此外,对Real Server的地域位置没有要求,可以和Director Server位于同一个网段,也可以是独立的一个网络。因此,在TUN方式中,调度器将只处理用户的报文请求,集群系统的吞吐量大大提高。
VS/DR: 即(Virtual Server via Direct Routing)
也就是用直接路由技术实现虚拟服务器。它的连接调度和管理与VS/NAT和VS/TUN中的一样,但它的报文转发方法又有不同,VS/DR通过改写请求报文的MAC地址,将请求发送到Real Server,而Real Server将响应直接返回给客户,免去了VS/TUN中的IP隧道开销。这种方式是三种负载调度机制中性能最高最好的,但是必须要求Director Server与Real Server都有一块网卡连在同一物理网段上。
回答负载调度算法,IPVS实现在八种负载调度算法,我们常用的有四种调度算法(轮叫调度、加权轮叫调度、最少链接调度、加权最少链接调度)。一般说了这四种就够了,也不会需要你详细解释这四种算法的。你只要把上面3种负载均衡技术讲明白面试官就对这道问题很满意了。接下来你在简单说下与nginx的区别:
LVS的优点:
抗负载能力强、工作在第4层仅作分发之用,没有流量的产生,这个特点也决定了它在负载均衡软件里的性能最强的;无流量,同时保证了均衡器IO的性能不会受到大流量的影响;
工作稳定,自身有完整的双机热备方案,如LVS+Keepalived和LVS+Heartbeat;
应用范围比较广,可以对所有应用做负载均衡;
配置性比较低,这是一个缺点也是一个优点,因为没有可太多配置的东西,所以并不需要太多接触,大大减少了人为出错的几率。
LVS的缺点:
软件本身不支持正则处理,不能做动静分离,这就凸显了Nginx/HAProxy+Keepalived的优势。
如果网站应用比较庞大,LVS/DR+Keepalived就比较复杂了,特别是后面有Windows Server应用的机器,实施及配置还有维护过程就比较麻烦,相对而言,Nginx/HAProxy+Keepalived就简单一点
Nginx的优点:
工作在OSI第7层,可以针对http应用做一些分流的策略。比如针对域名、目录结构。它的正则比HAProxy更为强大和灵活;
Nginx对网络的依赖非常小,理论上能ping通就就能进行负载功能,这个也是它的优势所在;
Nginx安装和配置比较简单,测试起来比较方便;
可以承担高的负载压力且稳定,一般能支撑超过几万次的并发量;
Nginx可以通过端口检测到服务器内部的故障,比如根据服务器处理网页返回的状态码、超时等等,并且会把返回错误的请求重新提交到另一个节点;
Nginx不仅仅是一款优秀的负载均衡器/反向代理软件,它同时也是功能强大的Web应用服务器。LNMP现在也是非常流行的web环境,大有和LAMP环境分庭抗礼之势,Nginx在处理静态页面、特别是抗高并发方面相对apache有优势;
Nginx现在作为Web反向加速缓存越来越成熟了,速度比传统的Squid服务器更快,有需求的朋友可以考虑用其作为反向代理加速器;
Nginx的缺点:
Nginx不支持url来检测。
Nginx仅能支持http和Email,这个它的弱势。
Nginx的Session的保持,Cookie的引导能力相对欠缺。
2、redis集群的原理,redis分片是怎么实现的,你们公司redis用在了哪些环境?
笔者回答:reids集群原理:
其实它的原理不是三两句话能说明白的,redis 3.0版本之前是不支持集群的,官方推荐最大的节点数量为1000,至少需要3(Master)+3(Slave)才能建立集群,是无中心的分布式存储架构,可以在多个节点之间进行数据共享,解决了Redis高可用、可扩展等问题。集群可以将数据自动切分(split)到多个节点,当集群中的某一个节点故障时,redis还可以继续处理客户端的请求。
redis分片:
分片(partitioning)就是将你的数据拆分到多个 Redis 实例的过程,这样每个实例将只包含所有键的子集。当数据量大的时候,把数据分散存入多个数据库中,减少单节点的连接压力,实现海量数据存储。分片部署方式一般分为以下三种:
(1)在客户端做分片;这种方式在客户端确定要连接的redis实例,然后直接访问相应的redis实例;
(2)在代理中做分片;这种方式中,客户端并不直接访问redis实例,它也不知道自己要访问的具体是哪个redis实例,而是由代理转发请求和结果;其工作过程为:客户端先将请求发送给代理,代理通过分片算法确定要访问的是哪个redis实例,然后将请求发送给相应的redis实例,redis实例将结果返回给代理,代理最后将结果返回给客户端。
(3)在redis服务器端做分片;这种方式被称为“查询路由”,在这种方式中客户端随机选择一个redis实例发送请求,如果所请求的内容不再当前redis实例中它会负责将请求转交给正确的redis实例,也有的实现中,redis实例不会转发请求,而是将正确redis的信息发给客户端,由客户端再去向正确的redis实例发送请求。
redis用在了哪些环境:
java、php环境用到了redis,主要缓存有登录用户信息数据、设备详情数据、会员签到数据等
3、你会怎么统计当前访问的IP,并排序?
笔者回答:统计用户的访问IP,用awk结合uniq、sort过滤access.log日志就能统计并排序好。一般这么回答就够了,当然你还可以说出其它方式来统计,这都是你的加分项。
4、你会使用哪些虚拟化技术?
笔者回答:vmware vsphere及kvm,我用得比较多的是vmware vsphere虚拟化,几本上生产环境都用的vmware vsphere,kvm我是用在测试环境中使用。vmware 是属于原生架构虚拟化技术,也就是可直接在硬件上运行。kvm属于寄居架构的虚拟化技术,它是依托在系统之上运行。vmware vcenter
管理上比较方便,图形管理界面功能很强大,稳定性强,一般比较适合企业使用。KVM管理界面稍差点,需要管理人员花费点时间学习它的维护管理技术。
5、假如有人反应,调取后端接口时特别慢,你会如何排查?
笔者回答:其实这种问题都没有具体答案,只是看你回答的内容与面试官契合度有多高,能不能说到他想要的点上,主要是看你排查问题的思路。我是这么说的:问清楚反应的人哪个服务应用或者页面调取哪个接口慢,叫他把页面或相关的URL发给你,首先,最直观的分析就是用浏览器按F12,看下是哪一块的内容过慢(DNS解析、网络加载、大图片、还是某个文件内容等),如果有,就对症下药去解决(图片慢就优化图片、网络慢就查看内网情况等)。其次,看后端服务的日志,其实大多数的问题看相关日志是最有效分析,最好用tail -f 跟踪一下日志,当然你也要点击测试来访问接口日志才会打出来。最后,排除sql,,找到sql去mysql执行一下,看看时间是否很久,如果很久,就要优化SQL问题了,expain一下SQL看看索引情况啥的,针对性优化。数据量太大的能分表就分表,能分库就分库。如果SQL没啥问题,那可能就是写的逻辑代码的问题了,一行行审代码,找到耗时的地方改造,优化逻辑。
6、mysql数据库用的是主从读写分离,主库写,从库读,假如从库无法读取了、或者从库读取特别慢,你会如何解决?
笔者回答:这个问题笔者觉得回答的不太好,对mysql比较在行的朋友希望能给点建议。以解决问题为前提条件,先添加从库数量,临时把问题给解决,然后抓取slow log ,分析sql语句,该优化就优化处理。慢要不就是硬件跟不上,需要升级;要不就是软件需要调试优化,等问题解决在细化。
7、cpu单核和多核有啥区别?
笔者回答:很少有面试官会问这样的问题,即然问到了,也要老实回答。还好笔者之前了解过CPU,我是这么说的:双核CPU就是能处理多份任务,顺序排成队列来处理。单核CPU一次处理一份任务,轮流处理每个程序任务。双核的优势不是频率,而是对付同时处理多件事情。单核同时只能干一件事,比如你同时在后台BT下载,前台一边看电影一边拷贝文件一边QQ。
8、机械磁盘和固态硬盘有啥区别?
笔者回答:我擦,啥年代了,还问磁盘的问题,这面试官有点逗啊。那也要回答啊:
HDD代表机械硬盘,SSD代表固态硬盘。首先,从性能方面来说,固态硬盘几乎完胜机械硬盘,固态硬盘的读写速度肯定要快机械硬盘,因为固态硬盘和机械硬盘的构造是完全不同的(具体的构造就没必要解释了)。其次,固态盘几乎没有噪音、而机械盘噪音比较大。还有就是,以目前的市场情况来看,一般机械盘容量大,价格低;固态盘容量小,价格偏高。但是企业还是首选固态盘。
9、说一下用过哪些监控系统?
笔者回答:这个监控的问题又问到了,笔者在2018年1月4号也被问到类似这样的问题,笔者曾经用过zabbix、nagios、 cacit等。但是在这次面试中只说用过zabbix和nagios。说完了之后,面试官就让我说一下这两个监控有啥区别:
从web功能及画图来讲:
Nagios简单直观,报警与数据都在同一页面, 红色即为问题项。Nagios web端不要做任何配置。 Nagios需要额外安装插件,且插件画图不够美观。
Zabbix监控数据与报警是分开的,查看问题项需要看触发器,查看数据在最新数据查看。而且zabbix有很多其它配置项, zabbix携带画图功能,且能手动把多个监控项集在一个图中展示。
从监控服务来讲:
Nagios自带的监控项很少。对一些变动的如多个分区、多个网卡进行监控时需要手动配置。
Zabbix自带了很多监控内容,感觉zabbix一开始就为你做了很多事,特别是对多个分区、多个网卡等自动发现并进行监控时,那一瞬间很惊喜,很省心的感觉。
从批量配置和报警来讲:
Nagios对于批量监控主机,需要用脚本在server端新增host,并拷贝service文件。 Nagios用脚本来修改所有主机的services文件,加入新增服务。
Zabbix在server端配置自动注册规则,配置好规则后,后续新增client端不需要对server端进行操作。 Zabbix只需手动在模板中新增一监控项即可。
总体来讲:
Nagios要花很多时间写插件,Zabbix要花很多时间探索功能。
Nagios更易上手,Nagios两天弄会,Zabbix两周弄会。
Zabbix画图功能比Nagios更强大
Zabbix对于批量监控与服务更改,操作更简洁;Nagios如果写好自动化脚本后,也很简单,问题在于写自动化脚本很费神。
10、给你一套环境,你会如何设计高可用、高并发的架构?
笔者回答:如果这套环境是部署在云端(比如阿里云),你就不用去考虑硬件设计的问题。可直接上阿里云的SLB+ECS+RDS这套标准的高可用、高并发的架构。对外服务直接上SLB负载均衡技术,由阿里的SLB分发到后端的ECS主机;ECS主机部署多台,应用拆分在不同的ECS主机上,尽量细分服务。数据库用RDS高可用版本(一主一备的经典高可用架构)、或者用RDS金融版(一主两备的三节点架构)。在结合阿里其它的服务就完全OK,业务量上来了,主机不够用了,直横向扩容ECS主机搞定。
如果这套环境托管在IDC,那么你就要从硬件、软件(应用服务)双面去考虑了。硬件要达到高可用、高并发公司必须买多套网络硬件设备(比如负载设备F5、防火墙、核心层交换、接入层交换)都必须要冗余,由其是在网络设计上,设备之间都必须有双线连接。设备如果都是跑的单机,其中一个设备挂了,你整个网络都瘫痪了,就谈不上高可用、高并发了。其次在是考虑应用服务了,对外服务我会采用成熟的开源方案LVS+Keepalived或者Nginx+Keepalived,缓存层可以考虑redis集群及Mongodb集群,中间件等其它服务可以用kafka、zookeeper,图片存储可以用fastDFS或MFS,如果数据量大、又非常多,那么可采用hadoop这一套方案。后端数据库可采用 “主从+MHA”。这样一套环境下来是绝对满足高可用、高并发的架构