前言
众所周知,这几年有一句非常火爆的话:“嫁人就嫁程序员”。身为一个程序员我只能表示,对象只存在于IDE中。
那么接下来我们来谈谈职业发展所需要的知识储备量到底要达到什么水平才可以达到程序员梦寐以求的架构师的行列。
知识储备
首先,作为java开发人员,一定熟知JVM,那么我们还有具体的去了解JVM虚拟原理和如何进行调优,要知道如果你深刻了解的JVM,你就可以写出性能更好的代码,大大提高开发效率。
有位朋友曾经给我说“多抽点时间看架构,少画时间玩框架。”那么我们就需要了解java的反射技术去撸框架了,但是这样做会存在一些严重的性能问题。
然后还需要掌握的还有各种池技术,像什么线程池,链接池,对象池希望你能够手到擒来。
想成为架构师,java的高并发和同步异步问题是必须要懂的,深入的如学习。还有各种集合的实现原理,对你也会有更大的帮助。现在好多开发者都不注重数据结构,算法这些底层的东西,从而不能更高效的去解决问题。举个例子,像一些map的集合,你可能想不到还有开发经验五年的还不是很熟悉。
总之一句话:千里之行,始于足下,很多人认为自己会写代码了就是会用了,其实他们仅仅是知道如何调用api而已,离会用还差的远。
下面来说说服务器、网络方面的知识
当项目上线时候,离不开服务器,而服务器都是在Linux上,所以这就要求你需要相当熟悉Linux的指令,这对我们来说并不是一个难事,下个虚拟机没事敲几下就可以快速使用起来了。
然后就是http和tcp协议,建议你空余时间多看看网络方面的知识,我发现在中国,我们国家网络安全方面的人才很少,所以这个方向是一个很有前途的方向。
在tcp协议中,要了解创建连接三次握手和断开连接四次握手的整个过程,这样就可以轻松应对高并发并对网络应用做优化。
http协议,尤其是http头,要弄清session和cookie的生命周期以及它们之间的关联。
接下来的一些我就简单说了具体东西大家可以关注我的公众号,希望大家能够提出自己的建议!
系统集群、负载均衡、反向代理、动静分离,网站静态化 。
分布式存储系统nfs,fastdfs,tfs,Hadoop了解他们的优缺点,适用场景 。
分布式缓存技术memcached,redis,提高系统性能必备,一句话,把硬盘上的内容放到内存里来提速,顺便提个算法一致性hash 。
工具nginx必备技能超级好用,高性能,基本不会挂掉的服务器,功能多多,解决各种问题。
数据库的设计能力,mysql必备,最基础的数据库工具,免费好用,对它基本的参数优化,慢查询日志分析,主从复制的配置,至少要成为半个mysql dba。其他nosql数据库如mongodb。
还有队列中间件。如消息推送,可以先把消息写入数据库,推送放队列服务器上,由推送服务器去队列获取处理,这样就可以将消息放数据库和队列里后直接给用户反馈,推送过程则由推送服务器和队列服务器完成,好处异步处理、缓解服务器压力,解藕系统。
结语
说了这么多,其实都还是纯粹的基础技术,并且还没有列全。要想成为架构师,除了这些之外,就还要具备我们说的组织能力和解决问题的能力了。还有很多自己慢慢去摸索吧;
因为要知道的东西很多,所以要成为一名合格的架构师,必须要有强大的自学能力,没有人会手把手的教给你所有的东西。
想成为架构师不是懂了一大堆技术就可以了,这些是解决问题的基础、是工具,不懂这些怎么去提解决方案呢?这是成为架构师的必要条件。
架构师要针对业务特点、系统的性能要求提出能解决问题成本最低的设计方案才合格;
架构师思考的是全局的东西,是如何组织系统,以达到业务要求、性能要求。架构师要针对业务特点、系统的性能要求提出解决问题成本最低的设计方案。
为了架构而架构,这是绝对不可取的。列如一个用户系统,访问量不大,数据量小,你要上集群、上分布式存储、上高端服务器,为了架构而架构,这是最白扯的,架构师的作用就是第一满足业务需求,第二最低的硬件网络成本和技术维护成本。
架构师还要根据业务发展阶段,提前预见发展到下一个阶段系统架构的解决方案,并且设计当前架构时将架构的升级扩展考虑进去,做到易于升级;
否则等系统瓶颈来了,出问题了再去出方案,或现有架构无法扩展直接扔掉重做,或扩展麻烦问题一大堆,这会对企业造成损失。
欢迎关注微信公众号:java大牛爱好者