所谓架构师,思考的是全局的东西,是如何组织你的系统,以达到业务要求,性能要求,具备可扩展性(scalability),可拓展性(extendability),前后兼容性等。可能涉及到的东西包括了从硬件到软件的方方面面,实在是一言难尽。

既然java架构师,首先你要是一个高级java攻狮城,熟练使用各种框架,并知道它们实现的原理。

jvm虚拟机原理、调优,懂得jvm能让你写出性能更好的代码;池技术,什么对象池,连接池,线程池…:;java反射技术,写框架必备的技术,但是有严重的性能问题,替代方案java字节码技术;nio,没什么好说的,值得注意的是"直接内存"的特点,使用场景;java多线程同步异步。

java各种集合对象的实现原理,了解这些可以让你在解决问题时选择合适的数据结构,高效的解决问题,比如hashmap的实现原理,好多五年以上经验的人都弄不清楚,还有为什扩容时有性能问题?不弄清楚这些原理,就写不出高效的代码,还会认为自己做的很对。

总之一句话越基础的东西越重要,很多人认为自己会用它们写代码了,其实仅仅是知道如何调用api而已,离会用还差的远。

架构师需要熟悉哪些技能?

  • 熟练使用各种数据结构和算法,数组、哈希、链表、排序树…。

  • 熟练使用linux操作系统,必备

  • 熟悉tcp协议,

  • 熟悉系统集群、负载均衡、反向代理、动静分离,网站静态化。

  • 熟悉分布式存储系统nfs,fastdfs,tfs,Hadoop了解他们的优缺点,适用场景。

  • 熟悉分布式缓存技术memcached,redis

  • 熟悉nginx技能,高性能。

  • 熟悉数据库的设计能力,mysql必备,参数优化,慢查询日志分析,主从复制的配置。

  • 熟悉队列中间件

想成为架构师不是懂了一大堆技术就可以了,这些是解决问题的基础、是工具,不懂这些怎么去提解决方案呢?这是成为架构师的必要条件。

架构师还要针对业务特点、系统的性能要求提出能解决问题成本最低的设计方案才合格,人家一个几百人用户的系统,访问量不大,数据量小,你给人家上集群、上分布式存储、上高端服务器,为了架构而架构,这是最扯淡的,架构师的作用就是第一满足业务需求,第二最低的硬件网络成本和技术维护成本。

架构师还要根据业务发展阶段,提前预见发展到下一个阶段系统架构的解决方案,并且设计当前架构时将架构的升级扩展考虑进去,做到易于升级;否则等系统瓶颈来了,出问题了再去出方案,或现有架构无法扩展直接扔掉重做,或扩展麻烦问题一大堆,这会对企业造成损失。

架构之路任重而道远。程序设计和架构设计是互通的,每个人都可以从设计好一个程序往设计好一个系统架构前进。如果现在还无从下手的,我推荐大家可以从领域驱动设计这个概念入手,这是由业务为导向的设计方式,可以对培养设计出落地的架构有很大的帮助。

大家可以关注此篇文章,添加作者私人VX【 psk12221 】即可获取下方完整架构成长路线图。

架构师路线

扎牢基础、深入底层

  • 多线程与高并发

  • 深入JMM

  • JVM性能调优

  • 操作系统原理剖析

  • 网络原理解读

  • 23种设计模式

  • 深入理解设计原理

  • UML建模

洞悉分部,明察并行

  • 互联网架构演变的过程与原理

  • 高负载高并发高可用架构设计指导思想

  • lvs

  • Keepalived

  • 高性能服务

  • zookceper

  • 消息中间件

  • ELK

  • 分布式事务

  • 单点登录

  • 分布式调度

  • 缓存

高薪必问,无处可避

  • 深入透彻完整解析REDIS

  • 源码层面无死角解析NETTY

未来主流,必知必会

  • RPC构建分布式

  • Spring Boot

  • Spring Cloud

  • docker

  • kebernetes

  • Service Mesh

  • 微服务设计的学与思

分布存储、优化性能

  • mysq|优化

  • FastDFS

  • OpenResty

团队协作、项目管理

  • maven

  • git

  • sonarqube

  • jenkins

  • JIRA

  • FindBugs

  • 压力测试让你心中有谱

手写源码、迈向大牛

  • JDK源码解析

  • Spring源码解析

  • MyBatis源码解析

  • Dubbo源码解析

  • SpringMVC源玛解析

  • Netty源码解析

职业规划;软性技能

  • 职业规划与指导

  • 面试软技巧

  • 技术文档编写

以上架构师路线适合那些人群学习?

1、具有1-5工作经验的,面对目前流行的技术不知从何下手,需要突破技术瓶颈的可以学习。

2、在公司待久了,过得很安逸,但跳槽时面试碰壁。需要在短时间内进修、跳槽拿高薪的可以学习。

3、如果没有工作经验,但基础非常扎实,对java工作机制,常用设计思想,常用java开发框架掌握熟练的,可以学习。

4、觉得自己很牛B,一般需求都能搞定。但是所学的知识点没有系统化,很难在技术领域继续突破的可以学习。

工作1-5年开发经验,当你们提出涨工资的时候,或者要offer的时候底气怎么样,是不是底气十足,不给涨工资就辞职,是不是有自信提出来主管、或者是项目经理都能同意,他们相当设法把你留住。如果这样你才是成功。什么技术都没有何谈工资!

看完以上内容,还觉得无从下手,大家可以添加我的私人联系方式VX【 psk12221 】可以互相交流一下。想获取以上完整高清架构图的也可以加我免费获取。

看完本篇文章,大家记得点赞关注一波哦~~~

Logo

华为开发者空间,是为全球开发者打造的专属开发空间,汇聚了华为优质开发资源及工具,致力于让每一位开发者拥有一台云主机,基于华为根生态开发、创新。

更多推荐