Java 架构师需要掌握的技术:
1, 熟练使用各种框架, 并知道它们实现的原理.
2,jvm 虚拟机原理, 调优, 懂得 jvm 能让你写出性能更好的代码;
3, 池技术, 什么对象池, 连接池, 线程池......Java 反射技术, 写框架必备的技术, 遇到有严重的性能问题, 替代方案 java 字节码技术;
4,nio, 没什么好说的, 值得注意的是 "直接内存" 的特点, 使用场景; java 多线程同步异步; java 各种集合对象的实现原理, 了解这些可以让你在解决问题时选择合适的数据结构, 高效的解决问题, 比如 hashmap 的实现原理, 好多五年以上经验的人都弄不清楚, 还有为什扩容时有性能问题? 不弄清楚这些原理, 就写不出高效的代码, 还会认为自己做的很对;
总之一句话, 越基础的东西越重要, 很多人认为自己会用它们写代码了, 其实仅仅是知道如何调用 API 而已, 离会用还差的远.
5, 熟练使用各种数据结构和算法, 数组, 哈希, 链表, 排序树..., 一句话要么是时间换空间要么是空间换时间, 这里展开可以说一大堆, 需要有一定的应用经验, 用于解决各种性能或业务上的问题.
6, 熟练使用 Linux 操作系统, 必备, 没什么好说的 .
7, 熟悉 tcp 协议, 创建连接三次握手和断开连接四次握手的整个过程, 不了解的话, 无法对高并发网络应用做优化; 熟悉 http 协议, 尤其是 http 头, 我发现好多工作五年以上的都弄不清 session 和 cookie 的生命周期以及它们之间的关联.
8, 系统集群, 负载均衡, 反向代理, 动静分离, 网站静态化. 分布式存储系统 nfs,fastdfs,tfs,Hadoop 了解他们的优缺点, 适用场景. 分布式缓存技术 Memcached,Redis, 提高系统性能必备, 一句话, 把硬盘上的内容放到内存里来提速, 顺便提个算法一致性 hash.
9, 工具 nginx 必备技能超级好用, 高性能, 基本不会挂掉的服务器, 功能多多, 解决各种问题.
10, 数据库的设计能力, MySQL 必备, 基础的数据库工具, 免费好用, 对它基本的参数优化, 慢查询日志分析, 主从复制的配置, 至少要成为半个 MySQL dba. 其他 nosql 数据库如 MongoDB.
11, 还有队列中间件. 如消息推送, 可以先把消息写入数据库, 推送放队列服务器上, 由推送服务器去队列获取处理, 这样就可以将消息放数据库和队列里后直接给用户反馈, 推送过程则由推送服务器和队列服务器完成, 好处异步处理, 缓解服务器压力, 解藕系统.
以上纯粹是常用的技术, 还有很多自己慢慢去摸索吧; 因为要知道的东西很多, 所以要成为一名合格的架构师, 必须要有强大的自学能力, 没有人会手把手的教给你所有的东西.
想成为架构师不是懂了一大堆技术就可以了, 这些是解决问题的基础, 是工具, 不懂这些怎么去提解决方案呢? 这是成为架构师的必要条件.
架构师要针对业务特点, 系统的性能要求提出, 能解决问题, 成本低的设计方案才合格, 人家一个几百人用户的系统, 访问量不大, 数据量小, 你给人家上集群, 上分布式存储, 上高端服务器, 为了架构而架构, 这是很扯淡的, 架构师的作用就是要满足业务需求, 用低的硬件网络成本和技术维护成本.
架构师还要根据业务发展阶段, 提前预见发展到下一个阶段系统架构的解决方案, 并且设计当前架构时将架构的升级扩展考虑进去, 做到易于升级; 否则等系统瓶颈来了, 出问题了再去出方案, 或现有架构无法扩展直接扔掉重做, 或扩展麻烦问题一大堆, 这会对企业造成损失.
来源: http://www.jianshu.com/p/64e66659ffa6