----- 揭祕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對於業務的使用實際上是透明的,他們也不須要去實現,只須要找對應的人去要受權,而後調用便可,這就是服務化的雛形,固然他們同樣會面臨服務負載均衡問題,同樣會面臨消息,隊列,緩存,存儲問題,當大型互聯網公司在逐漸升級,逐漸解決遇到的瓶頸後,他們也開始逐漸思考如何把這種實踐帶來更多的市場價值,好比阿里雲的誕生。我相信早期阿里雲初衷是爲了解決每一年雙十一後過剩機器帶來的資源浪費問題,可是隨着這條路深刻到根底發現他不只僅是解決資源問題,更是解決中國互聯網基礎設施問題,固然也是解決衆多創業小公司的效率問題。