运维要学习和掌握的技能有很多,在学习的过程中要学会对知识进行分类。
我一般给每个门类的知识分为三类:
1. 重点知识: 使用频率比较高的技术点,有可能每天都在用,或者每周都在用。
比如:基础命令,常用web服务的日常维护,日常监控等,需要在工作中每天使用
对于这类知识,我的做法是记在自己的有道笔记里的常用知识模块,然后记在自己的脑海里
所有的知识都涉及到记忆,就跟英语一样,你看到的那些学习方法,比如躺着背单词,词根快速记忆法。是不是都是与背有关, 也就意味着无论方法有多好,我们都要背过。
就连骑自行车,你也背过的,只不过这个骑自行车靠的是肌肉记忆,说到底也是要记住。
2. 重要但是使用频次不高的技术点
对于这类知识点,我一般记在有道笔记或者笔记本里,随用随查,比如zabbix搭建过程,虽然zabbix很常用,但是搭建zabbix这个事情有可能一年到头都遇不到,但他有属于技能栈里比较重要的知识,所以记录在自己随手可查的地方
3. 非重点的知识,未来可能会用
对于这类知识,通常记在博客里,比如某些在公司里不常用的,或者公司产品的替代产品,你现在会了zabbix, 那prometheus,就是未来可能会替代zabbix的产品,在你学习过程中,顺便记录到自己的博客里即可。
要对自己的知识分类,必然要先形成自己的知识体系,这个知识体系要比你会搭建某一项服务来的重要,因为他时常提醒你要查漏补缺。
我这里结合之前学员的面试,整理了12K要求会的技术栈:
1. 负载均衡:LVS, nginx, haproxy
2. 常见服务:ftp, ssh, mail, IIS, DNS
3. web:tomcat, nginx , apache, weblogic
4. 数据库:mysql, mariadb
5. 存储:NFS(DRBD heartbeat NFS),Hadoop, FastDFS, HDFS, MFS
6. 版本控制:svn, git
7. 监控:zabbix, prometheus, open-Falcon
8. 自动化:ansible, rsync inotify, CMDB
9. NOSQL: redis, memcache, mongodb
10.虚拟化: docker, k8s, kvm, vmware,openstack
11. devops方案:jenkins, gitlab, svn, ELK
12. 编程:shell, python, go
13.安全:rootkit, md5, fail2ban, ddos-defalte
总结:
在掌握基础的前提上,上述技术栈掌握的越多薪资越高。所谓的基础指的是shell的基础命令
比如:grep,find, awk, sed,的使用
如果要想拿到更高薪资,一定要把基础搞定的前提下,在某一个方向上有一定的深度, 互联网时代,要求每个人都呈T字型发展,在一个方向有了足够深度之后,在往横向扩展。
还有一点最重要:你可以英语不好,但一定要念对每一个命令的单词。