成为一个高级Java架构师所需要具备那些技能呢?

标签: java 架构师 需要 | 发表时间:2017-09-25 13:49 | 作者:
出处:http://geek.csdn.net

图片描述

高大上的淘宝架构

上图是一些安全体系系统,如数据安全体系、应用安全体系、前端安全体系等。

架构师定义

百度百科,系统架构师是一个既需要掌控整体又需要洞悉局部瓶颈并依据具体的业务场景给出解决方案的团队领导型人物。

架构师工作职能

软件架构师在整个软件开发过程中都起着重要的作用,并随着开发进程的推进而其职责或关注点不断地变化,在需求阶段,软件架构师主要负责理解和管理非功能性系统需求,比如软件的可维护性、性能、复用性、可靠性、有效性和可测试性等等,此外,架构师还要经常审查客户及市场人员所提出的需求,确认开发团队所提出的设计;在需求越来越明确后,架构师的关注点开始转移到组织开发团队成员和开发过程定义上;在软件设计阶段,架构师负责对整个软件体系结构、关键构件、接口和开发政策的设计;在编码阶段,架构师则成为详细设计者和代码编写者的顾问,并且经常性地要举行一些技术研讨会、技术培训班等;随着软件开始测试、集成和交付,集成和测试支持将成为软件架构师的工作重点;在软件维护开始时,软件架构师就开始为下一版本的产品是否应该增加新的功能模块进行决策。

图片描述

成为java架构师所需要具备那些技能?

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

既然java架构师,首先你要是一个高级java攻狮城,熟练使用各种框架,并知道它们实现的原理。jvm虚拟机原理、调优,懂得jvm能让你写出性能更好的代码;池技术,什么对象池,连接池,线程池…:;java反射技术,写框架必备的技术,但是有严重的性能问题,替代方案java字节码技术;nio,没什么好说的,值得注意的是”直接内存”的特点,使用场景;java多线程同步异步;java各种集合对象的实现原理,了解这些可以让你在解决问题时选择合适的数据结构,高效的解决问题,比如hashmap的实现原理,好多五年以上经验的人都弄不清楚,还有为什扩容时有性能问题?不弄清楚这些原理,就写不出高效的代码,还会认为自己做的很对;总之一句话越基础的东西越重要,很多人认为自己会用它们写代码了,其实仅仅是知道如何调用api而已,离会用还差的远。

熟练使用各种数据结构和算法,数组、哈希、链表、排序树…,一句话要么是时间换空间要么是空间换时间,这里展开可以说一大堆,需要有一定的应用经验,用于解决各种性能或业务上的问题。

熟练使用linux操作系统,必备,没什么好说的。

熟悉tcp协议,创建连接三次握手和断开连接四次握手的整个过程,不了解的话,无法对高并发网络应用做优化;熟悉http协议,尤其是http头,我发现好多工作五年以上的都弄不清session和cookie的生命周期以及它们之间的关联。

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

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

分布式缓存技术memcached,redis,提高系统性能必备,一句话,把硬盘上的内容放到内存里来提速,顺便提个算法一致性hash。

工具nginx必备技能超级好用,高性能,基本不会挂掉的服务器,功能多多,解决各种问题。

数据库的设计能力,mysql必备,最基础的数据库工具,免费好用,对它基本的参数优化,慢查询日志分析,主从复制的配置,至少要成为半个mysqldba。其他nosql数据库如mongodb。

还有队列中间件。如消息推送,可以先把消息写入数据库,推送放队列服务器上,由推送服务器去队列获取处理,这样就可以将消息放数据库和队列里后直接给用户反馈,推送过程则由推送服务器和队列服务器完成,好处异步处理、缓解服务器压力,解藕系统。

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

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

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

架构之路任重而道远。程序设计和架构设计是互通的,每个人都可以从设计好一个程序往设计好一个系统架构前进。如果现在还无从下手的,我推荐大家可以从领域驱动设计这个概念入手,这是由业务为导向的设计方式,可以对培养设计出落地的架构有很大的帮助。大家可以加群:283943715一起交流,群里也会定时分享一些java架构的知识,希望可以给大家一些思路和启发。最后引用“俞军”一句名言,我们作为架构师要有“怀疑精神:自我迭代”的心。


相关 [java 架构师 需要] 推荐:

成为一个高级Java架构师所需要具备那些技能呢?

- -
上图是一些安全体系系统,如数据安全体系、应用安全体系、前端安全体系等. 百度百科,系统架构师是一个既需要掌控整体又需要洞悉局部瓶颈并依据具体的业务场景给出解决方案的团队领导型人物. 成为java架构师所需要具备那些技能. 所谓架构师,思考的是全局的东西,是如何组织你的系统,以达到业务要求,性能要求,具备可扩展性(scalability),可拓展性(extendability),前后兼容性等.

架构师需要具备哪些素质

- - InfoQ cn
关于架构师的话题一直是社区讨论的热点,最近 @caoz在微博针对“架构师”这个话题,发表了自己的见解,指出成为架构师的关键并不在于照搬公用、成熟的框架,而在于是否具备基本的系统资源监控以及瓶颈分析的本领. @caoz: #架构师# 很多人想学牛b架构,其实所谓牛b的架构,公开资料那么多,照抄一下真不难,但这不是关键;最佩服如 @淘宝褚霸.

【转载】架构师需要努力的方向

- - Java - 编程语言 - ITeye博客
这是在其他博客看到的文章,贴在这里是想告诉自己学习的方向. 公司的兄弟部门要招一个JAVA平台的架构师,. 一位来面试的兄弟简历上做了十五年的编程,十二年JAVA工作经历.经历过N多的公司.原面试的一个女同事经历较浅,怕罩不住,请我帮她面试一下.. 我看了一下简历,大多数时间在做CRM,工作流,办公系统类的项目,也有两家公司是国内比较知名的互联网应用的项目..

避免面试尴尬,你需要了解的20个架构师相关缩写

- - IT瘾-geek
作为一个架构师,如果在面试的时候,面试官说出了一个英文缩写,这个时候如果你没有听过,是不是很尴尬?而且你也没办法针对这个问题进行描述回答!所以,多学习一些基础的英文缩写,一是面试可以游刃有余,二是可以装逼!下面的20个缩写,你都能讲清楚吗?. 控制反转( Inversion of Control,缩写为IoC),是面向对象编程中的一种设计原则,可以用来减低计算机代码之间的耦合度.

使用Java开发需要关注的那些事儿

- bf - J2EE企业应用 顾问/咨询- H.E.'s Blog
近期各家IT媒体举办的业内技术大会让很多网站都在披露自己的技术内幕与同行们分享,大到facebook,百度,小到刚起步的网站. facebook,百度之类的大型网站采用的技术和超凡的处理能力的确给人耳目一新的感觉,但并不是每个网站都是像facebook,百度 有上亿的用户访问流量,有海量的数据需要存储,需要使用到mapreduce/并行计算,HBase/列存储这些技术不可.

java日志,需要知道的几件事

- - Java - 编程语言 - ITeye博客
java日志,需要知道的几件事. 如果对于commons-loging 、log4j 、slf4j 、LogBack 等都已经非常清楚了,可以忽略本文. 几次解决日志冲突问题时对这几个概念的简单总结,希望对这块基础没有理解透的同学能有所帮助,当然如果对这块有更深刻理解的同学,也贡献出自己的知识和见解.

打造高性能JAVA应用你需要知道的

- - ImportNew
这篇文章节选自《java performance》,对java性能比较关心的同学大概都知道这本书,性能这个东西可能是很多同学在日常写java code的时候很少去关心的,但是在我们写code的过程中确又时时离不开对程序性能的影响,小到我们使用位运算来实现算术运算,大到我们对JAVA代码的总体架构设计,性能其实离我们很近.

Java 应用发布后,需要关注的7个性能指标

- - SegmentFault 最新的文章
在某个重大发布之后,都需要记录相应的指标,本文介绍了最重要的几个 Java 性能指标,包括响应时间和平均负载等. 为理解应用程序在生产环境中如何运行,就需要遵循一些 Java 性能指标. 在以前,当软件被发布后,开发者是没有方法去了解它在生产环境中的运行情况;而现在,几乎任一个你可以想到的指标都可以被监测和报告.

系统架构师JD

- - CSDN博客架构设计推荐文章
国内大型的物流企业,专业从事国内公路运输和航空运输代理. Foss项目的架构设计,包括需求分析,模块设计,系统结构设计,关键功能的开发,技术难题的解决,对团队质量输出的把控等等. 1、熟悉WebLogic/Websphere/JBoss等一个以上大型应用服务器,熟悉Linux及应用服务器集群. 2、 具有丰富J2EE架构设计经验,具有大型基于J2EE体系结构的项目规划、系统架构设计、开发经验.

微服务与架构师

- - 乱象,印迹
因为工作的关系,最近面试了很多软件架构师,遗憾的是真正能录用的很少. 很多候选人有多年的工作经验,常见的框架也玩得很溜. 然而最擅长的是“用既定的技术方案去解决特定的问题”,如果遇到的问题没有严格对应的现成框架,就比较吃力. 这样的技能水平或许适合某些行业,但很遗憾不符合我们的要求. 软件架构师到底应该做什么,又为什么这么难做好,这都是近来的热门问题,我也一直在和朋友们讨论.