Linux人才已成为IT职场紧缺人才,未来5年我国Linux人才缺口将达到120万。IT从业人员的平均薪水同比涨幅%2,而Linux涨幅%5,Linux高级架构师平均年薪20万元。
如果你在学习Linux,那么强烈推荐你选择RHEL和Centos作为学习的Linux发行版本,在公司及企业当中他们是使用最多的,毕竟学习除了本身是爱好,其次也是为了就业。Centos是RHEL的克隆版本,免费使用,二个发行版没有任何区别。成长为一名Linux工程师,只需要掌握以下方面的技能,那日常工作一点问题都没有。
试想如果没有最扎实的基础,如何去查看文件类型、查看系统运行状态、编辑文件、输出文件、创建用户、分配帐户权限、使用RAID技术和LVM磁盘阵列等最最基础的知识,一定要掌握扎实,才能走的更远。
在Linux上面的服务有许多种,而每个公司使用到的也不尽相同,不过最常见且基础的一定要学会,像ftp、Bind、DHCP、SAMBA服务要了解会简单配置,而LNMP和LAMP要相当的熟练,不光要会搭建,要熟悉服务里面的配置,每个公司都会用的到Web服务器,因此apache和nginx要熟练掌握,有些公司会使用到tomcat,这样nginx技术更要求精。公司的网络大致已经部署完成,不需要考虑网络的问题,而对于网络基础差,甚至于IP、子网掩码都不懂,那另请拿起CCNA的书籍学习下。
Shell语言是你从事这个行业必须要会的,假如这个都不会,那么你还是洗洗睡觉吧。一些简单的系统管理shell脚本也是最常见的、使用到的。不要以为会看CPU利用率、内存使用率等这些数字,实际可能并不能解决你的问题,最有意义的还是系统脚本。另一个使用到的语言就是当下比较火的python,程序效率高、语法简洁清晰等优点,实现我们的自动化运维。
这三个强大命令被称为Linux界的三剑客。sed和awk这二个也必须要掌握,工作当中使用的也是最多的。grep命令是一种强大的文本搜索工具,它能使用正则表达式搜索文本,并把匹配的行并打印出来。sed是一个精简的、非交互式的编辑器,它能执行与编辑vi和emacs相同的编辑任务,但sed编辑器不提供交互使用方式,只能在命令行下输入编辑命令。awk是一种程序语言,对文档资料的处理具有很强的功能,awk擅长从格式化报文或从一个大的文本文件中抽取数据。同时需要掌握正则表达式,配合sed和awk当中使用功能会更强大,在处理文本文字和过滤web时十分的有用。
之前在Linux上面使用最多的数据库是MYSQL,悲催是的MYSQL数据库管理系统被Oracle公司收购后 从开源走向到了封闭,导致包括红帽在内的许多Linux发行版选择了MariaDB。无论使用那种数据库,你都得需要掌握数据的创建、删除、添加、查询、备份和恢复,这些基础的命令。
在红帽RHEL7系统中Firewalld服务取代了Iptables服务,在老的服务器版本上面Iptables依然存在,也都需要学会使用该防火墙。真是不学不行,防火墙是个难点,各种规则,你一定会头晕。为了保证Linux系统的安全运行,防火墙必须走过的砍。
服务器运行情况实时反馈,完全依赖有一个好的监控工具,发现问题可以第一时间及时有效的处理,避免更大的损失。对于初学者,Nagios简单直观更容易上手,但是zabbix界面更美观,同时由于功能多上手也更难。对于企业的监控应用来说,两者都能实现大规模监控,都足以满足用户需求,没有绝对的孰好孰坏。Zabbix是商业软件开源,Nagios是免费软件插件组合多。还是都学吧!8.rsync备份数据
数据是企业最具价值的资产,自然要保护好数据。RAID的原理要懂会配置,知道企业的数据结构,多种备份方式保证数据的安全。rsync保持原来文件的权限、时间、软硬链接等等,可以镜像保存整个目录树和文件系统。有了备份无论设备出现任何故障,你都可以从备份当中还原出来原始数据。
掌握这些技术,已经可以胜任一个运维工程师的工作,欢迎“入坑”Linux运维。能坚持到这里实属不易,学习Linux最重要的就是敲键盘,不像Windows那样图形化点来点去的,优点就是Linux无图形化比较节省内存,而对于Linux新手们,建议你们不要裸机安装Linux系统,学习Linux就是找虐的,可能一些误操作造成数据丢失或者需要搭建测试服务需要把之前配置的东西删除掉等等吧,还是虚拟机拿来各种鼓捣,可以快速恢复到之前的快照,提高自己的学习效率。
目前我在互联网公司里干了1年多,接触了多位技术和业务的架构师,由于我正在升级到架构师,所以能直观地感受到高级开发和架构的差距,而且,对于高级开发如何升级到架构师,本人目前更有切身体会。本文将结合我在互联网公司的工作体验,和大家分享下架构师和高级开发在工作中的侧重点,由此能给大家带来升级到架构师的启示。
2 上班的时候,基本没时间看无关网页或手机,哪怕手头没活,也会看项目框架或看技术,或者思考如何优化。
3 出了问题,一般会深挖,哪怕当前无法从根源解决问题,但一般会找到根源原因,而不是想办法绕过去。
这点我深有体会,别说互联网公司的架构师都这样,连表现不错的高级开发也会这样,因为要在互联网公司生存下来,这些可能是必备条件。当然,我也见到过得过且过的,但一般上升空间都比较小,或者无法进一步提升,或者没能力竞争外面更高工资的岗位。
一般的开发大多关注“单机版” 的代码,只要在本机上开发完成任务就行,然后外带些debug技能,能跟踪到代码,能使用数据库就行。
而高级开发的“高级”体现在两个地方,第一,对业务更熟悉,但话说回来,换了公司,业务值多少钱呢?第二就是对代码底层有进一步的了解,比如理解Spring Boot的启动步骤等。
而架构师的基本功要比高级开发要高些,下面来对比下我见到的架构师和高级开发的各种表现,大家从中能看出两者的差别。
1 由于高级开发大多是调试单机版程序,所以看日志的时候,一般是在本地看,或者是用工具把日志下载到Windows本地,然后用文本工具查找关键字。但对架构师而言,这种查日志的效率太低,大多都是用less和grep之类的命令来看,也就是说,架构师必须对linux的操作和很熟悉。
2 高级开发一般无需考虑打包部署等问题,而架构师在优化分布式组件前,必须要打包项目,所以架构师需要对项目打包(比如maven命令),项目部署(比如jenkins或uDeploy)还有项目质量管理(比如继承sonar)有了解,如果项目还需要部署在云平台上,可能还得了解Docker或k8s之类的工具。也就是说,除了写代码之外,架构师还至少得了解项目的集成部署这块内容。
3 架构师更得了解组件集群等内容,比如分布式组件,云平台集群,反正不是单机版。可能高级开发也会多少了解些Dubbo,缓存之类的组件知识,但架构师更得掌握这些组件的分布式部署相关内容,即一台机器失效了,其它热备的机器该如何顶上。
架构师多少得具备些产品的相关意识,这些意识必须始终贯穿于工作中,这块就是和高级开发相比,架构师值钱的技术了。
1 对于架构师而言,产品(或相关组件模块)不是做出来就好了,更得进行压力测试,压测结束后,架构师还得鸡蛋里挑骨头,锱铢必较地想优化点。
2 架构师还得借鉴些当前的同类产品(或者是竞争产品),对性能而言,只有更好没最好,比如一个模块当前运行时间是2秒,还得想尽一切办法压缩到1秒,这就要求架构师精通各种技术。
3 架构师更得评估各种风险,尤其是当新版本上线时,发布时候就好比一个关口,首先得保证新老代码兼容,不能导致停服,其次得控制风险,预先设计好各种基于代码或数据库的回退或处理预案, 一有风吹草动,就得立即回退。
也就是说,架构师首先得保证系统能平稳上线,其次在开发过程中,应当预先考虑到线上的各种风险,并且更得时刻考虑优化的方向,而高级开发并没有这类要求。
架构师不仅只是技术控,更得结合业务,和相关团队合作,制定出当前可行,且实施风险较小的各类方案。也就是说,架构师虽然不会像项目经理那样侧重于项目管理,但也需要有带人的经验,一方面把自己的设计理念让组员落实,另一方面,一旦自己分管的系统出了问题,高级开发尚可以退缩,而架构师应当责无旁贷地负责解决。
1 架构师手机上有各种群,包括业务和技术相关的,要求是@你的一定得第一时间解决,如果客户不是@你,虽然没@,但报的问题和你有关, 也得第一时间解决,所以大多数架构师养成了手机不关,而且半夜醒来看手机的习惯。而高级开发还可以等着架构师来分配活。
2 出任何问题,比如业务上功能有问题,或者系统运行时出了OOM等性能问题,或者通过监控发现关键性指标下降,架构师都需要在第一时间介入。
3 自己组内,或者别的组对自己分管领域内有任何问题,包括业务上的和技术上的,都应当是协调解决。
4 更多的时候,架构师更得和相关人员(产品,其它组或系统运行维护人员等)开会,评估各种方案的实施方式。在定方案的时候,每个组都会有私心,想自己组少改些,这时架构师就得协商或妥协出各类方案。架构师在这方面的工作量甚至超过了写代码的工作量,我就经常见到诸多架构师上班时开会,下班或者周末才有自己的时间来写代码。
在高级开发的眼里,系统发布仅仅是把最新代码和脚本部署到生产服务器上,之前我也是这样认为的。但在这个阶段,架构师需要考虑如下方面的问题。
1 在发布的时间段里,会新老代码并存,比如灰度发布时,会切一部分流量到新代码上,这时如何保证兼容性。
3 数据清洗和数据迁移的步骤,往往上新功能后,数据清洗的范围是全局的,架构师还得考虑性能问题。
从中我们能看到,架构师更得掌握系统运维+性能综合调优+系统监控等能力,这块对高级开发而言,其实要求是很低的。
在进互联网公司前,由于我写了两本书,也接触过一些牛人,但进互联网公司后,发现第一牛人的数量比预期多很多,而且都很年轻,第二牛人在一些领域的精通程度超过我的想象。
就说我的师傅,除了工作态度好责任心强肯帮助人之类的软实力外,看日志调试代码到jar包里去debug的硬实力也厉害,更重要的,对一些分布式组件,达到了出畅销书(至少1万本)的地步。而我师傅的师傅,更是业内大牛,不仅在Spring方面出了很多书,而且最近在极客世界里录制的视频课,目前销量就2万+了,后期估计至少5万+。
跟着牛人学,我在互联网公司里能力提升不慢,且架构方面有了一定的进步,以我的切身体会,怎么快速提升呢?
1 当然得熟悉业务,否则没法干活,但熟悉以后不能沾沾自喜,更得看技术(尤其是值钱的技术)如何同业务整合。
如何熟悉业务?没捷径,第一看文档,第二看代码,第三问人,第四还得看自己领域外的但本系统会调用的上下文系统。
2 出了问题别推,通过看日志等方式排查,再不行,还得深入debug一些组件包去看。当排查问题的数量和种类积累到一定程度后,自己可能就无师自通了,我见过的一些大牛,基本上有问题就调查,从不推诿。
3 毕竟个人的眼界有限,接触到的面也未必多,所以一定多跟牛人打交道。请牛人帮忙排查问题时,自己一定得在旁边多看,平时更得和牛人交流,牛人们往往会给出学习的方式和学习的点,而且牛人会帮忙指导各种技术里的坑。
4 多参与些自己领域外的工作,比如压测和系统部署,干活的时候不能仅仅停留在技术领域,更得关注项目启动,组件部署乃至项目部署等方面,其实不少牛人不仅干过开发,更干过系统集成和系统运行维护的活,这样对分布式组件等之前的知识,就不仅仅停留在“会开发”的地步。有时候哪怕自己未必被分配到这类活,但也一定要多参与。
1 目前网上有大量的架构师进阶资料,包括分布式组件的,包括云计算等的,甚至有架构师相关的面试技巧的。对此,大家一定得多看带框图的,和业务实践相关的文档。
2 一定得理论结合实际,架构师相关的文档如果光看,比较枯燥,很容易就半途而废,这点我自己有体会。怎么结合呢?最好能去互联网公司锻炼一段时间,哪怕在其中就干高级开发的活,平时也绝对有机会接触到架构师的技能。
3 一定得多和人打交道,小到和自己组员多沟通,中到和自己公司里相关的牛人多沟通请教,再大点范围,可以和网上的一些大牛多交流。我体会下来,这些交流绝不会白费,除了能得到技术交流的机会外,还能掌握到一些挣钱的渠道和方法。
确实,提升到架构师离不开技术的提升,但架构师最终是要让技术解决实际业务问题,所以在提升过程中,我更多关注的是“技术+案例”的资料,比如我会搜索“dubbo案例”之类的,以此深挖技术的落地方式。
那么升级到架构师以后,会带来哪些收益呢?当然是钱多,不仅如此,架构师往往会是在某个领域里是专家,所以在这个领域更能用技术换钱,比如卖视频教程等。最重要的是,通过升级到架构师积累起来的一些软实力,比如责任心,管理时间的方式,高效的工作方法以及思考问题的方式,这才是最值钱的。
如果你对编程感兴趣或者想往编程方向发展,可以关注微信公众号【筑梦编程】,大家一起交流讨论!小编也会每天定时更新既有趣又有用的编程知识!
说实话我也不知道干什么的,反正就是在linux系统上搭建应用需要运行的环境的人。对linux有一定了解,但是更多了解的是linux+java环境应用的部署,监控,排错,优化,比较偏向应用。
一看这个就是深受各种培训机构毒害的结果,所谓系统集群无非高可用,高性能。高可用多用于商业,高性能多用于研究。至于什么云集群,我呵呵。掏钱学这个,还不如请我吃顿饭,我教你。
1. 负责公司Linux系统规划,服务器部署、维护、系统数据分析、性能优化等工作,优化完善Linux系统管理,以保障系统的运营需求;
2. 负责运营系统的优化、调优、上线、升级、维护,制定公司Linux系统运维流程及策略,编制相关的技术文档;
工程师需要了解系统的服务搭建.shell脚本的编写(便于维护或者日程),mysql操作。 这是重要的,而且是必须的。其次就是涉及
、开发、数据库、网络,技术岗位对上述知识体系都要会一些,才能很好的胜任对应岗位工作。 下面已经不是...
的行业前景:从行业角度来看,随着中国互联网的高速发展、网站规模越来越来大、架构越来越复杂,对专职网站
2018新6月份毕业 ,从开班典礼到就业面试指导6个多月的完整视频。 29800元学习内容达内自动化云计算

