运维工程师需要掌握的技能:
创新互联专注于罗平网站建设服务及定制,我们拥有丰富的企业做网站经验。 热诚为您提供罗平营销型网站建设,罗平网站制作、罗平网页设计、罗平网站官网定制、微信平台小程序开发服务,打造罗平网络公司原创品牌,更为您提供罗平网站排名全网营销落地服务。
1、首先是主机、网络及操作系统基本知识。在出现问题时,懂得在各个网络位置抓包,来确认故障设备或线路,会使用Linux的tcpdump抓包或者ethreal、sniffer、Wireshark等抓包软件,会在网络设备上配置镜像,将关心的流量抓出来进行分析。
2、懂开发,能实现自动化运维。比如使用Shell、Python、Perl等脚本语言做一些自动化运行脚本、诊断故障的脚本,使用这些脚本可以提升工作效率,将重复性的简单工作交给脚本程序处理,也可以通过这些脚本判断故障发生的位置和原因,高效的运维将不再需要人工去逐个字符地去输入各种命令。
3、未来云计算与大数据势必成为整个互联网行业的支撑。所有云计算运维工程师以及大数据工程师的作用就越来与明显,同时云计算以及大数据相关高端人才的需求量也会越来越大。
经常有人在群里问,运维人员需不需要学开发?需不需要学 PYTHON ? PYTHON 和 SHELL 有什么区别?天天问这种好水的问题,我实在受不了,决定帮大家扫扫盲,求求新手们,以后别他妈瞎问了。
现阶段,掌握一门开发语言已经成为高级运维工程师的必备计能,不会开发,你就不能充分理解你们系统的业务流程,你就不能帮助调试、优化开发人开发的程序, 开发人员有的时候很少关注性能的问题,这些问题就得运维人员来做,一个业务上线了,导致 CPU 使用过高,内存占用过大,如果你不会开发,你可能只能查到进程级别,也就是哪个进程占用这么多,然后呢?然后就交给开发人员处理了,这样咋体现你的价值?
另外,大一点的公司,服务器都上几百,上千,甚至数万台,这种情况下怎样做自动化运维?用 SHELL 写脚本 FOR 循环?呵呵,歇了吧, SHELL 也就适合简单的系统管理工作。到复杂的自动化任务还得要用专门的开发语言。你可能说了,自动化管理有专门的开源软件\监控也有,直接拿来用下就好了,但是现有的开源软件如 puppet\saltstack\zabbix\nagio 多为通用的软件,不可能完全适用你公司的所有需求,当你需要做定制、做二次开发的时候,你咋办?找开发部门?开发部门不懂运维的实际业务逻辑,写出来的东西烂烂不能用,这活最后还得交给运维开发人员来做。
其次,不会运维开发,你就不能自己写运维平台\复杂的运维工具,一切要借助于找一些开源软件拼拼凑凑,如果是这样,那就请不要抱怨你的工资低,你的工作不受重视了。
为什么要学 PYTHON ?
PYTHON 第一是个非常牛 B 的脚本语言, 能满足绝大部分自动化运维的需求,又能做后端 C/S 架构,又能用 WEB 框架快速开发出高大上的 WEB 界面,只有当你自已有能力做出一套运维自动化系统的时候,你的价值才体现出来,你才有资格跟老板谈重视, 否则,还是老老实实回去装机器吧。
运维开发为什么要用 PYTHON ?
Good question, 为什么不用 PHP , JAVA , C++ , RUBY ,这里我只能说,见人见智, 如果你碰巧已经掌握了除 PYTHON 之外的其它语言,那你爱用啥用啥,如果你是一个连 SHELL 都还没写明白的新手,想学个语言的话,请用 PYTHON , 为什么呢?首先, PHP 是跟 PYTHON 比的最多的,其实他俩根本就不用比,为什么呢?两个语言适用性不同, PHP 主要适用于 WEB 开发,可以迅速的做出中小型,轻量级的 WEB 网站,但后端嘛,基本还是要借助其它语言, 借助什么语言呢? SHELL ? PYTHON ?呵呵。 而 PYTHON 呢, 是个综合语言, 前后端都可以,单拿出来比 WEB ,也一点不比 PHP 差,但为什么WEB方向上 PHP 比 PYTHON 要火? 先入为主嘛, PHP 90 年代诞生就是做 WEB 的, PYTHON2000 年后才出现 WEB 框架,但论优秀程度上, PYTHON 的 WEB 框架基本上出其无左,至少是跟 PHP 比。
那 JAVA 呢?好吧,一个臃肿\中庸\豪无新意的语言,还是老老实实用它来做 ERP 吧,搞个运维小平台,用 JAVA 真心没啥必要,在我看来, JAVA 就是稳定的中年男人,稳定\成熟\秃顶,而 PYTOHN 代表的就是青春, 简洁\快\干净\帅!
C++ \ C ,这个嘛,我只能说,如果你会了 PYTHON, 又会 C 的话,那你会更吃香,但是不会 C 的话,其实也无大碍,基本上做运维的人,搞搞 C 就是为了来装 B 的,因为多数情况下你都到不了看系统底层源码的程度。
RUBY ,小日本开发的,还不错,风格跟 PYTHON 有点像,因为 ruby onrails 出了名,国外用的比较多,国内,放心吧,没戏, PYTHON 已经把它的想象空间都占死了。
当然还有新的语言 GO , 有些搞运维的看见做开发的人员搞 GO ,也想凑热闹,觉得是未来,我想说,别瞎没事跟风, GO 再成功,也不会变成运维开发语言。
有些人觉得 PYTHON 效率底,说他不能支持多线程, OH ,好吧,这个还有点说对了,但是我想问,看我这篇文章的有几个做过搜索引擎开发?有几个做个上亿 PV 的并发网站开发? 有几个看过 LINUX 内核源码?如果没有,请别瞎跟着传了,知道 PYTHON 为什么不支持多线程吗?这句话问错了,其实 PYTHON 支持多线程,只是不支持多 CPU 多线程,也就是一个程序 spawn 出来的多线程只能占用一个 CPU ,但是为什么呢?噢,因为 GIL , GIL 是什么东东,请自行补脑。。。但是你非得用多线程吗?你可以用多进程呀,再牛 B 你还可以用协程呀,这些 PYTOHN 支持的都很好呀,如果你的程序逻辑不好,搞个多线程也快不起来。我认识一个博士讲过一句话,我觉得不错,他说,程序效率高低, 80% 都是写程序的人决定了,语言本身就占 20% ,所以下次有人再说 PYTHON 效率低的时候,请让他先回去自己检查下自己的程序多了多少无用的逻辑、循环等等。 这个博士自己用 PYTHON 写的 WEB 程序,一台服务器每天能处理上亿请求,一秒并发近两万, 什么 WEB 框架这么牛 B ? 别问它是谁, 它叫 tornado 。
PYTHON 能否自学?
当然可以,什么都可以自学,前提是你得能学得会,见过 N 多菜鸟踏上上自学的不归路,他妈的什么都能自学的话,还用大学干什么?自己在家鳖不就行了?动不动就说 PYTHON 是个脚本语言,自己看看就不会了,说这话的只可能有两种人,一种是高手,一种是 SB ,对于高手来讲,他肯定已经会其它语言, PYTHON 在这种情况下,自学当然就很容易学会,几年前我刚接触 PYTHON 时,代码遇到问题,找了个开发的哥们帮调试,哥们帮调了十几分钟就搞定了,结果人家以前一句 PYTHON 代码也没写过,为什么,因为语言都有相通之处,一门掌握好了,其它门自己学学就会了。但对于新手来讲,没任何语言基础就开始自学,那么恭喜你,菜鸟们见此文章为证,从今天开始自学,一年后,你要是能自己做出个软件来,来找我要一千块钱。 哈哈,真的。 基本上自学是属于专业人员干的事情,就像会一门乐器了,自己学下就可能学会另一门,但我之前没音乐基础,跟着老师都没把吉它学会。
所以奉劝没基础又想学 PYTHON 的同学,花点钱去报个班学吧,拿钱换时间,时间是生命,钱没了可再挣钱,时间过去了就再也不会回来,如果你不信邪,非要自己学,那我佩服你的勇气,不过自己试试就知道了。
说了这么多,只想告诉那些迷茫不知所措该学什么语言的新手们, 在你还没学好走路的时候,不要老想着,将来我当上老板了,我是开宝马呢?还是开奔驰呢?先学会骑自行车吧。。。
转载
我想,每个人可能会根据工作要求的必然条件、兴趣爱好的充分条件,做出相应不同的选择。
也有很多工程师在学习一门新的技术时,会担心自己所学的技术是否会越来越流行,尽量去避免学习了一个非常小众和冷门的技术。
这种担忧是可以理解的,毕竟,一门技术使用的人越多,对于早期学习这门技术的工程师来说,就有越多的好处和优势。
与此同时,如果学习了一门冷门的技术,不但英雄无用武之地,而且,在求职市场上也没有什么优势。
要问我的入门编程语言选择,我首选一定是 Python,其具体原因可以引用一位网友的回答,「学完 Python,可以上天」。
Python 流行度
如果大家身处互联网,一定能够切身地感受到 Python 语言的流行程度。Python 语言由于其简单易学、语法优美、应用领域广泛等诸多优点,俘获了大批的粉丝。
但是,拿不出确切的证据,很多开发者也无法说服自己静下心来学习,接下来我们就用数据来说话。
编程语言排行榜
首先,我们了解一下近期编程语言排行榜中,Python 语言排名的变化。TIOBE 每个月发布的编程语言排行榜是编程语言流行趋势的一个指标,每个月更新。
这份排行榜排名基于互联网上有经验的工程师、课程和第三方厂商的数量,使用搜索引擎进行计算而得,一定程度上反映了编程语言的热度。
从近三个月的排行看,Python 一直稳定在排行榜的前五名。但编程语言排行榜仅能反应 Python 语言当下的流行程度,并不能回答 Python 是否越来越流行这个问题。
不过,我们可以从 TIOBE 发布的历史数据中找到一些线索。在 2015 年 2 月份发布的 TIOBE 编程语言排行榜中,Python 还排在第 8 名的位置,短短两年半的时间,Python 语言已经蹿升到第 4 名,其上升速度不可谓不快。
Google trends
既然 TIOBE 的编程语言排行榜是根据搜索引擎得到的数据,那么,我们也可以通过搜索引擎得到 Python 的搜索指数,通过搜索指数来查看 Python 语言热度的变化。图1.1 给出了最近 4 年,Python 这个关键词的 Google 搜索指数。
图 1.1 中可以看到,从全球范围来看,Python 语言是越来越流行的,其热度超过了以往任何时候。
从中国的搜索指数来看,Python 语言已经不是越来越流行这么简单了,而是出现了爆发式的增长。2014 年以前,Python 在中国都属于小众语言,从 2014 年开始,Python 在中国越来越火爆。
一个有趣的事实是,在图 1.1 给出的 Python 搜索指数中,Python 在中国的搜索每年都会有一个非常明显的、向下的尖刺。
这个尖刺所在的时间正好与春节的时间吻合,说明春节对所有中国人都是一个重要的节日,在春节期间,很少有人还在钻研技术了。
微信搜索指数
我们再来看一下最新发布的微信搜索指数中,Python 语言的热度如何。图 1.2 给出了Python、Java、PHP 和 Ruby 的微信搜索指数对比图。
由于微信最多支持 4 个关键词进行比较,因此,我们选择了 Java、PHP、Ruby 与 Python 进行比较。
选择 Java 是因为它是一门比 Python 使用更加广泛的编程语言;选择 PHP 是因为它被认为是“世界上最好的”编程语言;选择 Ruby 是因为,它是所有编程语言中,与 Python 定位最接近的编程语言。
从图中可以看出,Python 语言和 Java 语言的微信搜索指数遥遥领先,并且,Python 语言的微信搜索指数比 Java 语言还要略高一点。
基于以上的编程语言排行榜、Google 搜索指数和微信搜索指数这几个不同的数据来源,检视了 Python 语言的流行程度。
现在,我们可以非常明确的得出一个结论——Python 语言越来越流行,而且现在非常火。
为什么 Python 语言会越来越流行
原因诸多,例如:
越来越多的工程师使用 Python 进行大数据处理。
科研工作者开始使用 Python 来进行数据分析。
系统管理员使用 Python 管理 Linux 系统。
开源的云计算平台 OpenStack 使用 Python 语言开发。
很多编程爱好者使用 Python 进行爬虫等。
但是,笔者认为,Python 语言之所以越来越流行,使用越来越广泛,主要还是得益于其自身的诸多优点。对 Python 的爱与恨,可以归集到那些不得不说的优缺点:
显著的优点
Python 语言拥有诸多的优点,以下几个优点特别显著:
简单易学:Python 语言相对于其他编程语言来说,属于比较容易学习的一门编程语言,它注重的是如何解决问题而不是编程语言的语法和结构。
正是因为 Python 语言简单易学,所以,已经有越来越多的初学者选择 Python 语言作为编程的入门语言。
例如,在浙江省 2017 年高中信息技术改革中,《算法与程序设计》课程将使用 Python 语言替换原有的 VB 语言。
语法优美:Python 语言力求代码简洁、优美。在 Python 语言中,采用缩进来标识代码块,通过减少无用的大括号,去除语句末尾的分号等视觉杂讯,使得代码的可读性显著提高。
阅读一段良好的 Python 程序就感觉像是在读英语一样,它使你能够专注于解决问题,而不用太纠结编程语言本身的语法。
丰富强大的库:Python 语言号称自带电池(Battery Included),寓意是 Python 语言的类库非常的全面,包含了解决各种问题的类库。无论实现什么功能,都有现成的类库可以使用。
如果一个功能比较特殊,标准库没有提供相应的支持,那么,很大概率也会有相应的开源项目提供了类似的功能。合理使用 Python 的类库和开源项目,能够快速的实现功能,满足业务需求。
开发效率高:Python 的各个优点是相辅相成的。例如,Python 语言因为有了丰富强大的类库,所以,Python 的开发效率能够显著提高。相对于 C、C++ 和 Java 等编译语言,Python 开发者的效率提高了数倍。
实现相同的功能,Python 代码的文件往往只有 C、C++ 和 Java 代码的 1/5~1/3。虽然 Python 语言拥有很多吸引人的特性,但是,各大互联网公司广泛使用 Python 语言,很大程度上是因为 Python 语言开发效率高这个特点。
开发效率高的语言,能够更好的满足互联网快速迭代的需求,因此,Python 语言在互联网公司使用非常广泛。
应用领域广泛:Python 语言的另一大优点就是应用领域广泛,工程师可以使用 Python 做很多的事情。
例如,Web 开发、网络编程、自动化运维、Linux 系统管理、数据分析、科学计算、人工智能、机器学习等等。
Python 语言介于脚本语言和系统语言之间,我们根据需要,既可以将它当做一门脚本语言来编写脚本,也可以将它当做一个系统语言来编写服务。
不可忽视的缺点
Python 并不是没有缺点的,最主要的缺点有以下几个:
Python 的执行速度不够快:当然,这也不是一个很严重的问题,一般情况下,我们不会拿 Python 语言与 C/C++ 这样的语言进行直接比较。
在 Python 语言的执行速度上,一方面,网络或磁盘的延迟,会抵消掉部分 Python 本身消耗的时间;另一方面,因为 Python 特别容易和 C 结合起来。
因此,我们可以通过分离一部分需要优化速度的应用,将其转换为编译好的扩展,并在整个系统中使用 Python 脚本将这部分应用连接起来,以提高程序的整体效率。
Python 的 GIL 锁限制并发:Python 的另一个大问题是,对多处理器支持不好。如果读者接触 Python 时间比较长,那么,一定听说过 GIL 这个词。
GIL 是指 Python 全局解释器锁(Global Interpreter Lock),当 Python 的默认解释器要执行字节码时,都需要先申请这个锁。这意味着,如果试图通过多线程扩展应用程序,将总是被这个全局解释器锁限制。
当然,我们可以使用多进程的架构来提高程序的并发,也可以选择不同的 Python 实现来运行我们的程序。
Python 2 与 Python 3 不兼容:如果一个普通的软件或者库,不能够做到后向兼容,那么,它会被用户无情的抛弃了。
在 Python 中,一个槽点是 Python 2 与 Python 3 不兼容。因为 Python 没有向后兼容,给所有的 Python 工程师带来了无数的烦恼。
Python 如何上手?
了解了 Python 的整体趋势及优缺点,接下来自然是如何学习 Python?
在此笔者的建议是:
找一本浅显易懂比较好的教程。无须多种选择,仅精选一本,从头到尾看完。将教程中的案例自己亲手实践一遍。
通过实际项目练手。如果仅是纸上谈兵,可能过目就忘,所以最好是要有真实的项目做。注意,真实项目不一定非要是商业项目,例如自己动手搭建网站,其关键是要核心功能完整。
最好能找到一个已经会 Python 的人。问他一点学习规划的建议,然后在遇到卡壳的地方找他指点。这样会事半功倍。但是,要学会搜索,学会如何更好地提问。
运维要不要追赶 Python 的热潮?
Python 这么热,运维要不要追赶 Python 的热潮?现阶段,掌握一门开发语言已经成为高级运维工程师的必备技能。
不会开发,你就不能充分理解你们系统的业务流程,你就不能帮助调试、优化开发人员开发的程序,因为开发人员有的时候很少关注性能的问题。
这些问题就得运维人员来做,一个业务上线了,导致 CPU 使用过高,内存占用过大,如果你不会开发,你可能只能查到进程级别,也就是哪个进程占用这么多,然后呢? 然后就交给开发人员处理了,这样怎么体现你的价值?
其次,不会一门开发语言的运维,你就不能自己写运维平台复杂的运维工具,一切要借助于找一些开源软件拼拼凑凑。
如果是这样,那就请不要抱怨你的工资低,你的工作不受重视了,话说人家 FaceBook 一个运维工程师管 2 万台机器,运维工程师年薪十几万 USD,你以为人家是盖的呢? 哪个不是身怀绝技,开发运维兼备?
Python 可以用来做什么
在我看来,基本上可以不负责任地认为,Python 可以做任何事情。无论是从入门级选手到专业级选手都在做的爬虫,还是 Web 程序开发、桌面程序开发还是科学计算、图像处理,Python 都可以胜任。
或许是因为这种万能属性,周围好更多的小伙伴都开始学习 Python。Python 现在到底有多热呢?我觉得我们可以看以下的这 2 组数据。
Python 排名稳居前五
如上文的 Python 排行,不多说,得益于 Python 在多个领域的应用都在逐渐变热,Python 在 TIOBE 榜上已经是稳居前 5 了。
越来越多的公司在用 Python 做网站
除了大家熟悉的知乎、豆瓣,已经有越来越多的公司开始用 Python 来快速搭建网站产品。相应的,也有越来越多的公司开设了 Python Web 的职位。
根据我们的统计,目前在招的 Python Web 职位,所需技能按优先级中,Python 基础和 Django 的优先级是最高的。
具体的排序,大致可以参考以下的这张图表:
运维为什么要用 Python
Good question!!!为什么不用 PHP,JAVA, C++,Ruby?
这里我只能说,见人见智, 如果你碰巧已经掌握了除 Python 之外的其他语言,那你爱用啥用啥,如果你是一个连 Shell 都还没写明白的新手,想学个语言的话,请用 Python,为什么呢?
首先,PHP 是跟 Python 比的最多的,其实他俩根本就不用比,为什么呢? 两个语言适用性不同,PHP 主要适用于 Web 开发,可以迅速的做出中小型,轻量级的 Web 网站。
但后端嘛,基本还是要借助其它语言,借助什么语言呢?Shell?Python?呵呵。而 Python 呢,是个综合语言,前后端都可以,单拿出来比 Web,也一点不比 PHP 差,但为什么 Web 方向上 PHP 比 Python 要火?
先入为主嘛,PHP 90 年代诞生就是做 Web 的,Python 2000 年后才出现 Web 框架,但论优秀程度上,Python 的 Web 框架基本上出其无左,至少是跟 PHP 比。
搞个运维小平台,用 Java 真心没啥必要,在我看来,Java 就是稳定的中年男人,稳定、成熟、秃顶,而 Python 代表的就是青春,简洁、快、干净、帅!
C++/C,这个嘛,我只能说,如果你会了 Python,又会 C 的话,那你会更吃香,但是不会 C 的话,其实也无大碍。但对新手来讲,不建议把 C 做为第一门语言开始学习,为什么呢?打击自信心…呵呵,你懂的。
Ruby,日本开发的,还不错,风格跟 Python 有点像,因为 Ruby on rails 出了名,国外用的比较多,国内,放心吧!没戏,Python 已经把它的想象空间都占死了。
当然还有新的语言 GO,有些搞运维的看见做开发的人员搞 GO,也想凑热闹,觉得是未来,我想说,别没事跟风,GO 再成功,也不会变成运维开发语言。
一个博士讲过一句话,他说:程序效率高低,80% 都是写程序的人决定了,语言本身就占 20%。
所以下次有人再说 Python 效率低的时候,请让他先回去自己检查下自己的程序多了多少无用的逻辑、循环等等。
这个博士自己用 Python 写的 Web 程序,一台服务器每天能处理上亿请求,一秒并发近两万,什么 Web 框架这么牛 B?别问它是谁,它叫 tornado。
在选择使用哪一门编程语言之前,我还想提醒读者的是——“世界上只有两种编程语言,一种是天天被人吐槽但却被广泛使用的编程语言,一种则是无人问津没有存在感的编程语言”。
Python 语言作为排名第一的动态类型语言,自然有它的道理。如果我们充分了解它的优缺点,在使用的时候,取其精华去其糟粕,那么,Python 一定是工程师解决问题的一把利剑。
--来自wechat公众号《51CTO技术栈》