Java|一名百万薪资的java架构师应该具备什么技能?


Java|一名百万薪资的java架构师应该具备什么技能?
文章图片
Java|一名百万薪资的java架构师应该具备什么技能?
文章图片
Java|一名百万薪资的java架构师应该具备什么技能?
文章图片
Java|一名百万薪资的java架构师应该具备什么技能?
文章图片
Java|一名百万薪资的java架构师应该具备什么技能?
文章图片

所谓架构师 , 思考的是全局的东西 , 是如何组织你的系统 , 以达到业务要求 , 性能要求 , 具备可扩展性(scalability) , 可拓展性(extendability) , 前后兼容性等 。 可能涉及到的东西包括了从硬件到软件的方方面面 , 实在是一言难尽 。
既然java架构师 , 首先你要是一个高级java攻狮城 , 熟练使用各种框架 , 并知道它们实现的原理 。
jvm虚拟机原理、调优懂得jvm能让你写出性能更好的代码;池技术 , 什么对象池 , 连接池 , 线程池…:;java反射技术 , 写框架必备的技术 , 但是有严重的性能问题 , 替代方案java字节码技术;nio , 没什么好说的 , 值得注意的是\"直接内存\"的特点 , 使用场景;java多线程同步异步 。
java各种集合对象的实现原理 , 了解这些可以让你在解决问题时选择合适的数据结构 , 高效的解决问题 , 比如hashmap的实现原理 , 好多五年以上经验的人都弄不清楚 , 还有为什扩容时有性能问题?不弄清楚这些原理 , 就写不出高效的代码 , 还会认为自己做的很对 。
总之一句话越基础的东西越重要 , 很多人认为自己会用它们写代码了 , 其实仅仅是知道如何调用api而已离会用还差的远 。
架构师需要熟悉哪些技能?

  • 熟练使用各种数据结构和算法 , 数组、哈希、链表、排序树… 。
  • 熟练使用linux操作系统 , 必备
  • 熟悉tcp协议 ,
  • 熟悉系统集群、负载均衡、反向代理、动静分离 , 网站静态化 。
  • 熟悉分布式存储系统nfsfastdfstfsHadoop了解他们的优缺点 , 适用场景 。
  • 熟悉分布式缓存技术memcachedredis
  • 熟悉nginx技能 , 高性能 。
  • 熟悉数据库的设计能力 , mysql必备 , 参数优化 , 慢查询日志分析 , 主从复制的配置 。
  • 熟悉队列中间件
想成为架构师不是懂了一大堆技术就可以了 , 这些是解决问题的基础、是工具 , 不懂这些怎么去提解决方案呢?这是成为架构师的必要条件 。
架构师还要针对业务特点、系统的性能要求提出能解决问题成本最低的设计方案才合格 , 人家一个几百人用户的系统 , 访问量不大 , 数据量小 , 你给人家上集群、上分布式存储、上高端服务器 , 为了架构而架构 , 这是最扯淡的 , 架构师的作用就是第一满足业务需求 , 第二最低的硬件网络成本和技术维护成本 。
架构师还要根据业务发展阶段 , 提前预见发展到下一个阶段系统架构的解决方案 , 并且设计当前架构时将架构的升级扩展考虑进去 , 做到易于升级;否则等系统瓶颈来了 , 出问题了再去出方案 , 或现有架构无法扩展直接扔掉重做 , 或扩展麻烦问题一大堆 , 这会对企业造成损失 。
架构之路任重而道远 。 程序设计和架构设计是互通的 , 每个人都可以从设计好一个程序往设计好一个系统架构前进 。 如果现在还无从下手的 , 我推荐大家可以从领域驱动设计这个概念入手 , 这是由业务为导向的设计方式 , 可以对培养设计出落地的架构有很大的帮助 。


推荐阅读