----- 揭秘Linux工程师一路走来都须要哪些技能php
做者: 三疯@MagEdu(马哥教育)面试
来源:www.magedu.com算法
大公司也是从小公司一步步走过来的,而大公司之因此与小公司不一样,不在于基础的技术体系不一样,而是当数据量达到必定程度后,引起的质变而已。而在思考质变带来的性能问题中,总结出来了一系列的工具,而后经过把对应的工具集合起来后造成了对应的运维工具平台。 数据库
有了运维工具平台是否是运维能力就够了?这句话先放在这里……api
刚才已经说了,工具无大小,适合公司的使用便可,先抛开大公司使用的工具,咱们先来聊聊小公司平常都须要什么工具?出入公司首先解决的是网络问题,而后你们可以上网后开始解决共享存储问题,好比搭建FTP,SAMBA,NFS网络存储,解决员工之间的文件传送和备份,这些在Linux学习过程当中都有体现,马哥课程中也有比较详细的描述,好比如何搭建,此处省略不说了。跨域
随着人们增长,必然会出现公司网络带宽首先,不少时候买的路由器也能够去作必定的限流功能,那随着业务的发展,公司有了本身网站的特点,这些特点的背后实际上是公司核心的商业价值,好比网站的搭建,一个普通网站的背后究竟有什么呢?纯静态网站就不说了,没啥技术含量,咱们聊聊动态网站,动态网站是会动的网站吗?显然不是,他实际上是存在数据交换的网站,那既然有数据交换,数据交换过程当中有哪些东西呢?数据交换后的状态有哪些呢?这其实就是所谓的数据对象存储的问题,好比常见的数据库存储软件有MySQL,既然用到了MySQL,那他平常的维护都须要什么?举个简单的栗子,他的部署,服务启停,数据备份,数据库容灾,对应时间点的备份,抽取binlog……,这背后的工具不用我详细描述,相信你们都知道了,那就是基本的数据库的维护,数据库的备份,恢复,策略都有哪些呢?这块若是你不知道请自行翻阅马哥课程进行脑补,已经被讲烂的课题,可是有时你们必需要掌握的,好了说外数据库的事情,那聊聊应用程序吧!缓存
应用程序运行到底是如何的?运行环境有哪些?好比公司早期须要快速迭代,那么PHP是不二之选,毕竟PHP是世界上最好的语言嘛,Linux上运行PHP环境的常见组合是Nginx+PHP+PHP-FPM,抛个问题,这样部署好后,代码请求的流程是怎么样的?php-fpm做用是什么?fastcgi又是干什么的?fastcgi被启动的worker用完了怎么办?这些信息在配置中如何体现?如何合理的优化?服务器
带着上面的思考,若是你会了我就不说了,若是你不会,请自行恶补,已是面试被问烂的问题了,若是连这个都回答不上来,真该回马哥教育回炉了。网络
那么谈到LNMP,那为啥一个请求经过一个LNMP就能访问到?一个请求又通过哪些过程达到最终想要的结果呢?这一块须要去了解DNS解析原理,HTTP协议请求,谈到DNS不得不说DNS解析方式有哪些?架构
DNS记录类型有哪些?DNS服务器的类型有哪些?
你是否知道什么叫主服务器,辅助服务器,缓存名称服务器,转发器?
那对于主辅架构中,区域的传送类型有哪些?
区域类型有哪些?什么叫子域,什么叫子域受权?
知道RNDC是干吗的不?
以上问题也很少,翻翻看看应该都会,固然请不要告诉我你不会,要否则上半年都过完了,这些姿式还没学会的话,下半年岂能安身立命呢?
回过神来,HTTP协议知道多少呢?了解什么叫跨域吗?Nginx如何解决跨域问题?平时见过很多学员一个HTTP请求返回个403,啥意思呀?知道几个状态码呢?都表示啥意思呢?419表示啥(不是你知道的那个4-1-9)?对于HTTPS了解几分?为啥要搞HTTPS,解决什么问题?带来的性能问题有哪些?知道什么叫泛域名证书吗?和普通的证书哪一个贵?最后再问一个最基础的,HTTP协议在TCP/IP协议栈中哪一个位置?那你知道TCP/IP协议栈和OSI相关的知识吗?若是不知道,很差意思,下面你也不用读了,你真的不可能再看懂的。
………
能躺着看到这地方的说明基础还有必定水平,那好吧,接着咱们俩聊聊,随着流量增长后,你须要了解的知识有哪些?你的应用服务器如何水平扩展,扩展后代码的结构和部署方式如何实现同步,如何实现流量的迁移,迁移的健康检车方式有哪些?你知道的负载均衡设备有哪些?
你以为LVS和F5哪一个更适合作CDN的负载均衡?
谈到LVS,那你知道LVS的模式吗?
每一个模式的特色有哪些?他都解决了什么场景下的问题?
我感受问题到这里后,你已经蒙圈了。在你还没完全挂的状况下,我再补一个问题:LVS的负载均衡算法有哪些?他们解决的是什么问题?
谈完集群的LB类型后,那咱们俩聊聊单点背后咱们要干的事情—永无宁日,为了让本身吃得好,睡得香,咋整呢?高可用呀,High available Cluster嘛,简称HA。常见的HA软件有哪些?知道keepalived的vrrp原理吗?常见高可用软件中对资源如何管理的?脑裂是如何产生的又该如何应对呢?有些东西他们自己是独立的,可是一旦结合起来后,你会发现他们之间其实能产生很大的效果,也就是1+1 > 2的节奏,好比当LB和HA结合起来的时候,是否是能够消除LB的单点问题,也能够消除HA的负载均衡问题,而后你也许会陷入LB的HA和HA的LB循环坑里面,不过这不重要,重要的是你是一个对架构有追求的好孩子,难道不是吗?
量变带来了质变,质变带来了架构的变化,因此对于对于一个普通的电商架构来讲,上面的基础设施层基本上欧了,固然对于图片服务器,咱们能够须要加一些静态文件服务器,或者换成服务器,好比经过Nginx和Varnish来解决静态文件的存储、缓存问题,提升用户端的快速响应能力,而对于咱们的数据层面咱们也能够经过添加缓存来解决应用和数据库IO速度不匹配的问题,你们都知道大型互联网架构中,缓存为王,那是否是全部的都须要加缓存,缓存又该如何加呢?举个简单的栗子,你们都知道MySQL也能够加缓存,好比Memcached,那你是否听过MySQL的Memcache Plugins呢?为何要把他们放到同一台机器上,有什么特俗含义吗?
好了,到这里咱们已经跨越到了中型互联网公司的范畴了,那接下来对于大型互联网公司他们都须要什么呢?举个简单的栗子,对于业务组件来讲,他们须要的是一套完整的服务管理组件,中间层,底层封装好的api,那这些api对于业务的使用实际上是透明的,他们也不须要去实现,只须要找对应的人去要受权,而后调用便可,这就是服务化的雏形,固然他们同样会面临服务负载均衡问题,同样会面临消息,队列,缓存,存储问题,当大型互联网公司在逐渐升级,逐渐解决遇到的瓶颈后,他们也开始逐渐思考如何把这种实践带来更多的市场价值,好比阿里云的诞生。我相信早期阿里云初衷是为了解决每一年双十一后过剩机器带来的资源浪费问题,可是随着这条路深刻到根底发现他不只仅是解决资源问题,更是解决中国互联网基础设施问题,固然也是解决众多创业小公司的效率问题。