Linux集群和自动化维3.1 Python语言的应用领域
第3章
輕量級自動化運維工具Fabric詳解
近期公司的業務系統代碼發布頻繁,筆者同時在幾個項目組里面穿插工作,發現發布和運維的工作都相當機械,加上頻率比較高,導致時間的浪費也比較多。很多測試工作,例如通過SSH登錄到測試環境,推送代碼,然后修改Bug進行測試,這些操作都是非常機械并且具有重復性的。更讓人郁悶的是,每次的操作都是相同的,命令基本上都是一樣的,并且是在多臺機器上執行,很難在本機上以一個腳本來搞定,主要時間都浪費在使用SSH登錄和輸入命令上了。這個時候需要一個輕量級的自動化運維工具,來幫助我們解決這些問題,Fabric就順應這個需求而出現了,它非常適合于這些簡單的、重復性的遠程操作。Fabirc是基于Python語言開發的,前文2.1節就提到過,Python應用非常火爆,接下來看看Python的應用領域及其流行的原因。
3.1 Python語言的應用領域
1.云計算基礎設施
云計算平臺分為私有云和公有云。私有云平臺如大名鼎鼎的OpenStack,就是以Python語言編寫的。公有云,無論是AWS、Azure、GCE(Google Compute Engine)、阿里云還是青云,都提供了Python SDK,其中GCE只提供了Python和JavaScript的SDK,青云只提供了Python SDK。由此可見各家云平臺對Python的重視。
軟件開發工具包(Software Development Kit,SDK)一般是一些開發工具的集合,用于為特定的軟件包、軟件框架、硬件平臺、操作系統等創建應用軟件。
2. DevOps
DevOps,中文名譯作開發型運維。在互聯網時代,只有能夠快速試驗新想法,并在第一時間,安全、可靠地交付業務價值,才能保持競爭力。DevOps推崇的自動化構建、測試、部署及系統度量等技術實踐,在互聯網時代是尤其重要的。
自動化構建是因應用而異的,如果是Python應用,因為有setuptools、pip、virtualenv、tox、flake8等工具的存在,所以自動化構建非常簡單。而且,因為幾乎所有的Linux版本都內置了Python解釋器,所以用Python做自動化,系統不需要預安裝什么軟件。
自動化測試方面,目前流行的自動化測試框架有Robot Framework、Cucumber、Lettuce三種。基于Python的Robot Framework是企業級應用最喜歡的自動化測試框架,而且和語言無關。Cucumber也有很多支持者。基于Python的Lettuce可以實現完全一樣的功能。此外,Locust(一個基于Python開發的開源負載測試工具)也開始在自動化性能測試方面受到越來越多的關注。
自動化配置管理工具,老牌的如Chef和Puppet,是基于Ruby語言開發設計的,目前仍保持著強勁的勢頭。不過,新生代Ansible、SaltStack,以及輕量級的自動化運維工具Fabric,均為Python語言開發。由于它們較前兩者的設計更為輕量化,因此受到越來越多開發者的歡迎,并且已經給Chef和Puppet制造了不少的競爭壓力。
3.網絡爬蟲
大數據的數據從哪里來?除了部分企業有能力自己產生大量的數據,大部分時候,是需要依靠網絡爬蟲來抓取互聯網數據進行分析的。
網絡爬蟲是Python的傳統強勢領域,最流行的爬蟲框架Scrapy、HTTP工具包urlib2、HTML解析工具Beautiful Soup、XML解析器lxml等,都是能夠獨當一面的類庫。筆者公司的分布式網絡爬蟲程序也是基于Scrapy開發的。不過,網絡爬蟲并不僅僅是打開網頁,解析HTML這么簡單。高效的爬蟲要能夠支持大量靈活的并發操作,常常要能夠同時抓取幾千甚至上萬個網頁,使用傳統的線程池方式資源浪費比較大,線程數上千之后系統資源基本上就全浪費在線程調度上了。由于Python能夠很好地支持協程(Coroutine)操作,因此基于Python發展了很多并發庫,如Gevent、Eventlet,還有Celery之類的分布式任務框架等。被認為是比AMQP更高效的ZeroMQ最早提供的也是Python版本。有了對高并發的支持,網絡爬蟲才可以真正達到大數據規模。
4.數據處理
從統計理論,到數據挖掘、機器學習,再到最近幾年提出來的深度學習理論,數據科學正處于百花齊放的時代。數據科學家們都用什么語言編程呢?Python是數據科學家最喜歡的語言之一。和R語言不同,Python本身就是一門工程性語言,數據科學家用Python實現的算法,可以直接用在產品中,這對于初創的大數據公司來說,是非常有利于節省成本的。正是基于數據科學家對Python和R的熱愛,Spark為了“討好”數據科學家,對這兩種語言都提供了非常好的支持。
Python的數據處理相關類庫非常多。比如,高性能的科學計算類庫NumPy和SciPy,給其他高級算法打下了非常好的基礎;Matplotlib讓Python畫圖變得像Matlab一樣簡單;Scikit-learn和Milk實現了很多機器學習算法,基于這兩個庫實現的Pylearn2,是深度學習領域的重要成員;Theano利用GPU加速,實現了高性能數學符號計算和多維矩陣計算。當然,還有Pandas,一個在工程領域已被廣泛使用的大數據處理類庫,其DataFrame的設計借鑒自R語言,后來又啟發Spark項目實現了類似機制。
除了這些領域以外,Python還被廣泛應用于Web開發、游戲開發、手機開發、數據庫開發等眾多領域。
總結
以上是生活随笔為你收集整理的Linux集群和自动化维3.1 Python语言的应用领域的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 《易学Python》——1.4 Linu
- 下一篇: 《超越平凡的平面设计: 版式设计原理与应