『壹』 運維工程師必須掌握的基礎技能有哪些
技能:
1. linux基礎
包括對Linux整體的理解/使用和基本命令:
了解Linux FHS : Filesystem Hierarchy Standard,國人寫的這本書不錯 Linux系統架構與目錄解析 (豆瓣)
入門Linux:鳥哥的Linux私房菜.基礎學習篇(第三版) (豆瓣) 個人認為鳥哥的這本書是一本非常好的入門書
基本操作命令:Google,如Linux command cheat sheet
熟悉至少一個內置編輯器: vi, nano
至少熟悉一個發行版(或系列),建議作為伺服器常用的如Centos, Debian, Ubuntu,可以了解多個常用發行版
2. 運維的命令:
運維相關的工具(命令),了解它能解決很多問題。
前幾天剛回答了一個問題:如何才能更深入的學習linux?
裡面的圖在這里也可以用到:
可以對著圖對學習了解這些命令。
另外我個人也會對平時用到的這些工具做一個整理和記錄,總結到我的個人維基上:Wiki · Tanky Woo
3. 基礎服務:
LAMP或LNMP :Apache/Nginx,MySQL,php/Python/Perl LAMP (software bundle)
FTP
DNS
SAMBA
EMAIL
NTP
DHCP
...
可以本地搭建練練手
這里推薦鳥哥另外一本書 伺服器架設篇: 鳥哥的Linux私房菜 (豆瓣)
4. 運維平台工具:
也在這個問題 如何才能更深入的學習linux? 里提到了:
Nagios
Puppet
Zabbix
Cacti
SaltStack
....
可以選擇性的折騰下,因為這個涉及到業務,沒有實際環境,很難去理解他們的功能和特點。
5. 腳本:
必備:Shell
額外:Python,Perl...
6. 底層:
Linux C,內核
7. 網路:
網路是非常重要的一塊
把《TCP/IP協議詳解》多看幾遍,理解。
熟練使用tcpmp等抓包工具
8. 安全:
防火牆配置,如 iptables
9. 硬體:
介面類型
查看硬體信息
知道各類型伺服器,如塔式、機架式、刀片式
10. 其它:
了解更多特定技能要求的方式:
Google搜"Linux運維工程師 招聘",看看他們的需求。
最後推薦一本書:Unix/Linux系統管理技術手冊 UNIX/Linux 系統管理技術手冊 (豆瓣)
後續想到再做補充
素養/處理方式:
除了技能,我覺得素養(態度)也可以談談
這個正好看到右邊相關問題:運維工程師需要具備哪些性格特質?
1. 安全
運維人員的許可權很大,所以一定要保證帳號/私鑰的安全。
最好使用加密工具存儲。比如truecrypt,1password
基於本地存儲。切勿用網盤,也不建議用lastpass等
ssh私鑰添加密碼
以上任何一點都很重要,否則弄丟了,風險會非常大。
2. 責任心
如上面那個帖子里 @山大 提到的 Owner 意識
遇到報警,第一時間處理,而不要等著他人去處理
如果無法處理,應該第一時間讓同事協助幫忙,而不要禁止報警,讓問題掩蓋
3. 細心
你的任何一個操作,都可能造成系統的損壞、業務出問題。所以敲命令時一定要細心、再三確認。你敲的再快,也就節省那麼一點時間,出了問題才是大事。
4. 推進/改善
如果代碼有問題,導致系統開銷很大,比如負載,io等。應該第一時間和開發部門確認,要求優化代碼。
5. 進取心/不斷學習
運維的知識范圍很廣,要不斷學習。遇到問題,做好分析記錄,事後還可以在部門內分享交流。
這也是我為什麼熱衷於寫技術博客和維基的原因,好記性不如爛筆頭。記錄整理的過程也是一個思考升華的過程。
再給一個干貨,我們公司(知道創宇)的技能表:http://blog.knownsec.com/Knownsec_RD_Checklist/v2.2.html
裡面涵蓋了部分Linux SA需要的技能。
http://www.secpulse.com/archives/5287.html
『貳』 優秀的運維工程師需要具備哪些能力和素質
耐得住寂寞,受得起欺負,乾的了雜事
『叄』 後端程序員平常工作中需要處理的內容
1.資料庫。包括使用場景和性能調參這些。
2.伺服器。能針對不同的限制選擇不同的響應模式(同步還是非同步、cache設置),並管理狀態(持久化還是透明化),等等。
3.腳本。包含簡單的文本處理。
其他的技能樹就可以自己去點兒了,可以去搞網路,也可以去搞內核,當然也可以去做分布式。。。歡迎補充:)
『肆』 2017年,Web 後端出現了哪些新的思想和技術
1. 網路交互的多樣性
1.1 Http1.1協議日漸式微,Http2和websocket,以及更多的自定義協議將會成為主流。
Web後端將不僅僅是一個web後端,而變成一個大後端,或者叫 中端+後端(這個概念阿里巴巴很早就有了)。隨著移動互聯網的發展,以及物聯網的興起(在這里我把mobike的單車看作是物聯網的一個終端),用戶的接入方式由單純的瀏覽器,向著多種接入設備進行演進。 在這個概念之下,用戶的定義會更廣泛,站在後端的角度看來,連接上伺服器的不再是一個個的用戶,而是一個個的終端,並存在多個終端同享一個用戶的情況(多端登錄)。 因此在這個趨勢之下,整個後端的接入層(比如nginx之於web)將會走向更廣闊的天地,對於任意一個設備來說,他將同時利用多種協議和多種方式連接到不同的接入點來達成自身的功能。
1.2 網路協議與網路信息交互的樣式多樣性
從最早的webService,到後來的json-rpc,和thrift再到如今的 protobuf(grpc)等等,我們開始為不同的數據交互設計了不同的序列化協議和調用協議,然而受到環境(移動終端的弱網路狀態),性能(網關服務,與網路調用)的影響,我們開始使用大量容錯性更強,數據量更小的數據傳輸方式,來滿足我們的需求。
在早先的web中,http+from表單的提交成為我們的標配,然而在今天,TCP都不一定成為必選項,UDP和UDP的改進協議都在被不同的公司進行嘗試,甚至於KCP都有可能成為大家考慮的方案之一。
2.數據多樣性開始成為設計的焦點。
2.1 在早先的web後端中,表設計和功能開發構成了日常工作的絕大部分,所有的後端人員都在試圖讓一切的用戶操作落入CRUD的抽象范疇里(比如 Restful),然而CRUD怎麼會滿足我們的抽象需求呢。
自從memcached和redis在被大量引入後端開發之後,我們可以看到,後端人員在對數據的理解上有了大量的改變,我們不再單單把數據視為RDBMS裡面的一行,而是圍繞著業務本身對數據進行了分類。最明顯的是,狀態數據的引入,在開發中,我們將用戶的部分信息,視為一個用戶的狀態,在狀態數據的基礎上,讓用戶的行為變成狀態遷移的觸發,在表現上看我們讓用戶的信息存儲到redis和memcached 里就是最RDMBS不能有效滿足我們的抽象需求的一次改進。
2.2 從狂熱的Nosql到Nosql和RDBMS的共存,代表了後端開發人員對數據這一個方式的新理解,而傳統的行存儲到列存儲,到監控常用的基於時間序列的資料庫都開始進入了我們的視野。
幾年來,大量的開發者,開始將用戶產生的數據進行了更詳細的歸類,不再是rdbms一刀切的方式, 我們會詳細地劃分出用戶的狀態數據落入到Nosql,將用戶的操作數據落入到RDBMS(表述不一定全,但在類似於訂單支付之類的具有冪等性要求的操作中要求事務的完備等),將用戶的行為統計落入時間序列資料庫, 將用戶的大量相關資源(如頭像圖片)將會落入到我們的對象存儲中。在後端開發的手冊里,數據格式的多樣性成為了必須考慮的問題。
3.圍繞著數據的收集,存儲,計算,索引查詢,分析 成為後端的常態
3.1 後端角色的含義,在人手不足的公司里,很難存在一個專注於後端業務開發的開發人員了,在大數據的浪潮下,後端開發人員開始兼職起了數據系統的開發工程師。 隨著互聯網大量技術的演進和發展,任何一個職業都很難找到一個明確的界限,因此圍繞著數據的收集,存儲,計算,分析,和索引查詢都會成為後端開發人員的必備技能。
3.2 數據收集
(1) 隨著分布式,集群化,多IDC的發展,不同於運維的系統性能收集,後端開發開始著重於收集與應用運營過程相關的各類指標和數據,
除了日常的業務開發,同時還會伴隨著應用調用過程的耗時,目標服務可用性等數據的收集,常見的如java的 metrics,zipkin等開源第三方的工具開始被廣泛借鑒和引用。
(2) 用戶行為和終端信息的上報收集,隨著大數據的開展,以及精細化運營的要求,後端逐漸開始接觸到用戶相關信息和終端運行狀態的信息上報,
收集上來的數據不僅用於用戶的畫像分析,同時也為客服的用戶追蹤,用戶的操作行為做出決策,通常表現在當用戶投訴某一筆業務的失敗時,便於開發人員的快速定位和排錯。
3.3 數據存儲
接著上面的數據收集,數據的傳輸和存儲成為了繞不開的功能,kafka的大規模運用,HDFS,HBase等工具也開始成為了後端開發日常的一部分。
3.4 數據計算
然而存儲的原始數據是沒有價值的,後端又開始了他們的數據清洗和數據處理的道路,storm,spark成為了後端的新秀,與用戶運營統計分析(俗稱跑策略跑演算法)不同,當前語境下的後端數據計算,更多是一個短耗時,小規模的計算,典型的則比如風控系統,和預警系統,針對用戶的行為和流量的多少,對惡意用戶進行甄別和快速干預。
3.5 數據索引查詢
(1) 隨著業務的擴充,任意一個app幾乎都內置了相應的搜索引擎,Lucene,solr也成為了後端程序員必備的技能之一,不管是精確搜索,還是模糊匹配,後端身上背負的業務也越來越多。
(2) 准實時數據的搜索也將成為常態,在近幾年的發展中,如何快速地在一個巨量的數據中,完成RDBMS中的 join,distinct統計等成為後端工程師不得不面對的問題
3.6 數據分析查詢
AI和深度學習已經拉開了序幕,圍繞著數據本身的挖掘,學習,也開始成為了產品側的需求,但理想歸理想,現實歸現實,後端的同學們在這個方向上仍然還是摸索狀態,但長遠來說跑不了了。
4.架構設計的更進一步
2017年裡,SOA的名詞正在淡出視野,微服務成了替代SOA的高頻詞,Serverless也開始走向了廣大後端的知識技能圖譜,不管是追新也好,滿足需求也罷,我也向諸位舉例一些常見的單詞,然而掛一漏萬請諸位擔待
4.1 CQRS(命令查詢職責分離模式)
將傳統CRUD的寫操作,進行非同步化,後端配合讀寫資料庫的分離。以及消息隊列的引入,將寫操作相關的一些耗時操作(驗證,走流程)等進行非同步化,常見的如電商中的訂單。
4.2 actor
Erlang的actor的興起,不管是golang Goroutine,還是scala/java的akka,都在深刻地影響著後端系統的架構設計。
4.3 CRDT和最終一致性
分布式系統的興起,也帶來了可用性和一致性的矛盾問題,協同兩個進程間的數據成為了每一個後端繞不過去的坎,為了達成最終一致性,各類方案如雨後春筍般冒出。
4.4 reactive
當android上的流行庫Rxjava,從前端走向後台的時候,也意味著後端也開始進入了響應式編程的時代,java的 vert.x就是其中的例子,那種request-response一招破萬法的時光不再有了。
5. 運維和devops對後端的要求
5.1 安全,穩定,高效,經濟
(1) 隨著業務走向穩定,以及互聯網的發展,網路服務的安全性開始成為了後端的核心之一,由於法律的不健全,對違法分子的追責難度大,違法成本低,網路安全攻擊將會在將來的一段時間內成為常態,這就對後端的程序特別是對外的介面設計提出了更高的要求。
(2) 多機房,異地容災,數據備份。健壯的後端一直是後端應用的要求之一。新的時間里,後端的可用性,穩定性依然是每一個後端都要面對的問題。
(3) 以前一個用戶只有一個電腦,瀏覽網站的時候,只在獲取數據的時候與站點有交互。現在隨著電子設備,智能設備的增多,一個用戶能夠接入網路的設備也在增多,同時長連接和並發數也會增多,因此高性能的接入網關開始成為了後端人員關注的焦點,比如圍繞著intel的dpdk各類應用也是紛至沓來。
(4) 經濟,利用雲服務的即買即用,用完即退的特點,使得在開展運營活動的時候,後端不用向運維徵求和購買大量的機器。 然而為了在運營活動的短時沖擊和突增流量的情況下後端應用能夠平穩地運行,對後端人員的部署和調度能力提出了更高的要求。
5.2 更規范的軟體開發流程
git+jenkins+ansible的開源組合,開始無法滿足開發和運維的需求,項目管理的集成,測試人員的介入,都要求後端的軟體工程工具從各自為陣的開源工具,走向一個大一統的系統,需要我們將 需求,BUG管理,迭代版本,開發,測試,灰度,藍綠部署流程都進行集成。
5.3 雲服務,容器化之爭
公有雲,私有雲,混合雲,以及容器等相關的雲計算技術,也在推動者後端的技術改革,後端面對的不再僅僅是一個物理機器,或者虛擬機,而是一個更復雜更多樣性的環境,對後端業務之外的技術和調度要求將越來越高。
相對於前端,後端實在是一個特別籠統的說法,正如上面提出的觀點,很多的技術其實並不屬於後端工程師,他們有的時候叫 運營開發工程師,有的叫大數據工程師,但為了相對於前端的劃分,因此我把他們的工作內容都劃到了後端裡面去,畢竟相對於技術研究,他們面對的都是一些技術應用的場合,很多的開源軟體只要達到了理解原理如何使用的水平就已經足夠應付日常工作了。
『伍』 前端程序員和後端程序員區別是什麼,分別要具備哪些能力
工作內容還是有很大區別的,後端程序員主要做一些網路的請求封裝、通知、數據的封裝,前端更注重拿到後端給的數據如何更好的展示。
『陸』 作為一個IT運維管理著,需具備那些技術
IT運維管理者需要具備以下技術:
一、微軟系統
對於Windows的熟悉是最基本的。當然,作為一個運維經理,可不是整天玩個Windows7或XP就可以交差的。得掌握微軟Active Directory及其上層各種服務和應用的搭建。一般常用的有ISA、Exchange、SQL Server。隨著Windows 2008的大放異彩,Hyper-V又成了微軟工程師不得不掌握的重型武器。
二、Linux/BSD系統
雖然Ubuntu現在很火,但是在公司里使用的大多還都是Redhat系列和Suse系列。得熟悉DNS、NIS、Apache、SMB、DHCP、Sendmail、FTP、MySQL這些常規服務。如果公司的IT業務大規模對外,還得學會LVS或Nginx等負載均衡技術。
三、編程開發
混Windows系統的自覺一點學好Powershell吧。要是說前幾年還得看看VBscript的話,未來就都是Powershell的天下了。
『柒』 Java方面的運維人員需要掌握哪些知識
1、java只是一種編程語言,這個看你代碼的寫入量了。
2、運維,這個要看具體的情況,一般來說運維要掌握的內容很多,但是當以實踐工作需要為中心展開學習,比如tomcat集群,MySQL集群,Nginx集群,Linux下Oracle集群。
3、你應該是現在比較盲目,建議你還是從最基礎的東西入手,無論多麼復雜的技術,還是在基礎上來的。
『捌』 想做程序員做後端都需要掌握哪些知識
目前掌握的僅能:
1,研發(基本吧,產品總得有人來做)
2,調優(主要是Mysql調優,在符合業務需求的情況下盡可能提高TPS)
3,運維(小公司不會像大公司一樣還標配運維,通常後端兼任運維職能)
擴展下:
研發:php入行,選個好框架(推薦Yaf),然後研發過程中多注意下性能,多用php本身的函數來解決需求,php本身函數豐富,而且都是C擴展,性能非常可靠。
調優:這個我實在不知道該放到研發還是運維,所以就單獨拿出來說。因為其實對於伺服器性能的調優本身兩邊都需要進行,一是研發時注意,二是各個軟體(主要是DB)的配置項。我的調優很粗暴,用阿里雲的壓力測試(耗費了公司一些錢財,罪過罪過)每次壓一分到5分鍾,然後看看瓶頸在哪裡,把配置項全部列出來,肉眼+自行判斷調整哪個參數看看能不能提升性能(233),我也會在代碼中把每個核心部分的消耗時間打入日誌,來判斷到底該進行哪裡的優化。
運維:主要分三部分,
快速部署:雖然是小公司,但是老闆有些資源,所以可以預計上線第一波的壓力不小,如果產品良好的情況下壓力只能會越來越大,所以要求如果感覺到系統有壓力後,需要快速進行橫向擴展系統,這里我選用的Puppet,理由很簡單:老牌,使用廣泛,社區強大。
監控報警:這是運維的眼睛,我選用的zabbix,理由跟上面一樣:老牌,使用廣泛,社區強大。
日誌採集:因為是集群的原因,看日誌不方便,最開始是用nfs來收集,後來隨著日誌越來越分散,日誌越來越大,沒用多久就被我拋棄了,然後在朋友的推薦下使用ELK進行日誌採集和查看。理由只是因為沒有別的更好選擇(朋友強烈推薦這個,其他的都是沒有啥強大社區,這個看著更靠譜點)
『玖』 java後端程序員最常用的技術有哪些,重點技術有哪些
Java學習路線,希望看完之後能給你帶來幫助。
第一步學習JavaEE基礎
Java是一種面向對象的編程語言,所以首先需要從基礎學起,只有前期打牢基礎,之後深入學習才能游刃有餘。那麼基礎學習首先從基礎語法、面向對象、核心類庫、集合、異常、IO、線程、網路編程、反射、JDK1.8新特性這幾個方面展開,學習基礎階段培養面向對象的編程思想、充分理解並運用Java面向對象思想來進行程序開發、從過程到面向對象編程的轉變、,深入理解常用集合類的用法、集合的特點、內存理解以及使用;掌握多線程的概念、創建方式、同步、網路編程的基本概念等。
第二步學習JavaWeb開發
JavaWeb開發是學習Java中必不可少的內容,雖然Java是偏向於後台開發的,但是前後端不可能完全分離,後端開發人員也需要掌握一定的前端技能。JavaWeb開發可以從前端技術、MySQL、JDBC&JDBCUtils、XML、伺服器&Servlet、JSP、AJAX幾點來學習,以此來掌握使用HTML、CSS進行前端界面的設計、掌握對JavaScript、JQuery基本語法的使用;掌握XML的解析方式、掌握伺服器的概念以及其配置、熟悉Servlet開發規范和相關概念、JSP基本原理、Session和Cookie、過濾器和監聽器的使用、以及Ajax非同步請求。
第三步Java高級框架
雖然說Java框架有很多,但是比較常用和主流的還是比較固定的,靈活的使用框架可以讓開發者在實際開發中,減少很多重復的代碼、讓代碼的結構更加清晰,後期維護方便。從現在的開發環境來看SpringMVC、Mybatis、Spring、Oracle、Linux&Redis&Nginx、Maven是現在普遍使用的主流框架,掌握之後可以實現從原理、應用、擴展等全方位角度熟練使用,最終可以搭建自己的平台。
第四步分布式項目實戰
學習的最終目的就是上手實操,根據項目需求開發功能,那麼實戰就顯得尤為重要了,所以最後一步是項目實戰,那Git、SpringBoot、SpringCloud 等主流技術必定是需要熟練掌握的,通過學習掌握分布式調用技術任務調度以及項目相關模塊之間的開發和關聯,從而達到實現功能開發目的。
初學Java你需要學習JDK,JDK是一個編寫Java的Applet小程序和應用程序的程序開發環境。JDK是整個Java的核心,包括了Java運行環境,一些Java工具和Java的核心類庫。不論什麼Java應用伺服器實質都是內置了某個版本的JDK。所以學好JDK是掌握Java的第一步。
學好JDK後,還有其他幾種軟體如果你感興趣也可以學一學,這幾種軟體分別為:Eclipse:一個開放源代碼的、基於Java的可擴展開發平台;EditPlus:文本編譯工具,初學者可以使用EditPlus編譯執行Java程序;NetBeans:開放源碼的Java集成開發環境,適用於各種客戶機和Web應用;IntelliJ IDEA:可以用於代碼自動提示、代碼分析等;MyEclipse:由Genuitec公司開發的一款商業化軟體,是應用比較廣泛的Java應用程序集成開發環境;SQL Server:資料庫軟體,做web開發會用到這個軟體。
綜上可以看出,學習Java需要的軟體不少,如果自學一個個了解過去的話比較費時間,而報班就不同了,報班學習會有老師帶著你一步步下載、安裝、學習各個軟體,這樣不但能節省很多時間,還能讓你把這些軟體掌握的更好。
Java學習上手比較難,需要的軟體也多種多樣
Java框架可以簡化開發難度,更便於我們開發程序。所以學好Java框架還是比較重要的。Java的框架主要有:SpringMVC、Spring、Mybatis、Dubbo、Maven、RabbitMQ、Log4j、Ehcache、Redis、Shiro。不過這十個我們不需要都學會,只要學會其中四五個比較常用的就可以。
第一個,SpringMVC。Spring MVC是一種基於Java的實現了Web MVC設計模式的請求驅動類型的輕量級Web框架,主要是幫助我們簡化日常的Web開發;第二個,Mybatis。MyBatis 是支持普通 SQL查詢,存儲過程和高級映射的優秀持久層框架;第三個,Spring。Spring深得企業的青睞;第四個,Maven。越來越多的開發人員開始使用maven。
掌握以上四種框架,你在找工作的時候就會比較吃香。不過想把這四種框架學會也不容易。不了解Java的人可能看的都一頭霧水更別說學習了。這是因為想要學習Java框架還要從Java的基礎部分學起。而從基礎部分自學到Java框架,花費的時間就長了。
所以小編建議大家報班學習Java,培訓班的學習時長為半年左右。相比於自學,耗時少了不少。而且培訓班不止能幫助你快速掌握理論知識,還有實戰項目助你鞏固所學。例如優就業的Java課程在Java框架部分,每個框架都對應一個小項目。這一階段學完後還會有一個大項目讓學員練手,增加學員的項目開發經驗。所以報班學習更容易學會Java。
『拾』 程序員需要具備哪些東西
程序員工作三連