2018-08-25 学习本身不难,难得是了解该学哪些!

原文地址:https://mp.weixin.qq.com/s/1Suxe08Zq6jsUFNI9PO7xg

作者:hsm_computer | 已授权转载

简介:《Java Web轻量级开发面试教程》作者

来源:https://www.cnblogs.com/JavaArchitect

先说明,本文说的是技术架构,而不是业务架构,另外,这个架构是指目前比较热门的高并发大数据的架构。论能力,我还达不到架构师的水平,所以我目前还在不断努力。

之前我写过一篇博文,架构师更多的是和人打交道,说说我见到和听说到的架构师升级步骤和平时的工作内容,反响不错,所以今天我再回顾下我在架构师方面的学习途径和学习方式,也总结下我在这方面踩过的坑,从而让大家别再重犯。

1、刚开始,只知道架构师很挣钱,但不知道该学什么

我自认为还算比较上进,所以,在java高级开发的岗位上也是不断学习,根据学习结果整理了一本书,java web轻量级开发面试教程,当时感觉在这个级别里也不算差了,就萌生了升级的想法。

当时再往上升,有项目经理和架构师等选择,一方面,我听说架构师很挣钱,另一方面,我也想再深入了解些技术,所以就想往这方面转。当时我是很迷茫的,甚至不知道该学什么,以及该怎么学。

 ![image](http://upload-images.jianshu.io/upload_images/1552893-ddd03960d5f7010d?imageMogr2/auto-orient/strip%7CimageView2/2/w/1240)

那个时候,我就开始用面试来探路了,投了不少公司的架构师职位,记得当年面试真的是答非所问。

面试官的问题1:你用过什么架构?他的本意可能是问分布式架构,比如Dubbo等。

我只能回答出,我用过Spring MVC,其它就不知道。

面试官的问题2:在项目里,怎么应对高并发流量?

我的回答是,靠多线程,以及Servlet3.0的并发功能。

面试官的问题3:你们在数据库层面,如果应对海量的操作?

我的回答是,用SQL调优技术,根据执行计划,看Oracle执行的瓶颈。

这个问题可能面试官想了解集群等方面的知识,但我只能从单机版的方面回答。

总之,当时的回答很多是答非所问,幸好当时的面试是用来试错。

image

回想起当时的场景,虽然到处到网上搜诸如“java架构师的技能“等关键字,也看了不少资料,面试回来也赶紧补课,但总体上,甚至无法建立起学习规划,所以当时的学习效率并不高。

2、过于偏重代码层面的解决方案,其实也得靠组件

因为当时在高级开发阶段,自己动手搭建过spring mvc等的实现方式,很多问题都是自己写模块来解决的,所以就认为很多架构级别的事情,更多的得靠自己写代码来解决,而架构师应当更多关注系统的结构。

比如,当时我在学习负载均衡,总想着自己写一个模块,通过NIO或队列的形式,自己把请求转发到合适的服务器上,又如,在安全容错方面,总想着自己写一个异常处理的模块,来解决超时的请求。

这种做法本身没错,因为资深级别的架构师确实是自己通过代码写诸如负载均衡等的实现方案,但在刚开始的升级阶段,更多的得靠现有的组件来解决实际问题。

这就好比一个画家在成名后,能自己创作出各种艺术精品,但在学习阶段,更多是通过临摹大师的作品来体会大师们的创作思路。所以,在学习阶段,架构师不能指望一步登天,总是先通过了解现有组件的代码和实现方式,来慢慢积累经验。

image

3、陷入各组件的细节中

在经过一些大神的帮助后,我也知道了一些架构级别的组件,比如消息级别的组件Kafka,以及zookeeper等,这时,当我看到这些组件神奇的功效后,就忍不住去看底层实现,当我沉浸于底层实现的精妙时,就不知不觉地陷入到它们的细节中。

这时,我确实能向别人吹嘘某种组件的底层实现细节,让别人也感觉我很厉害,但仅此而起。

image

当我了解到一个个组件的实现细节后,也发现自己确实也长了不少知识,但对实际工作的帮助并不大。

现在回想下,当时应当是先了解面上的知识点,比如我要搭建一个分布式高并发的系统,我应当了解这个系统应当包括哪些功能模块(比如反向代理,数据库集群,消息中间件等),在这基础上,然后在每个方面再选用合适的组件。

否则的话,光了解零件的构造,不了解机器的工作机制和流程,还是无法成为架构师。

4、学了一大堆组件,也了解了很多方向,但要把组件组装到一起,不容易

在陷入学习细节的学习误区后,我发现无法有效地把了解到的组件整合到一起,比如怎么把反向代理nginx和消息中间件整合到一起,这样就无法让多个组件起到1加1大于2的作用了。

这时,我就结合了具体的业务功能,看了不少代码,或者是别人的解决方案,终于知道各组件之间是怎么整合的。

![image](http://upload-images.jianshu.io/upload_images/1552893-0588a060f82922af?imageMogr2/auto-orient/strip%7CimageView2/2/w/1240)

而且,在此基础上,也开始自己动手组装一些组件。在刚开始的阶段,自己搭建的这些系统只能是实现功能,效果和外观上只能是呵呵了。但我感觉很欣慰,至少能动手实践了,能通过对比自己和大神之间的成果来了解进步方向了。

**5、后来发现架构师更得考虑可重用和可维护性 **

经过不断徘徊和摸索,现在发现,架构师的能力其实是体现在日常工作中的,在一个项目里,并不是架构师搭建好系统架构体系后就什么都不干了,架构师在项目开发过程中,更能帮助组员搭建出可用性高和可维护性强的应用系统,后者其实更能体现出架构师的能力。

比如某个收银系统得支持预付卡,银行卡,微信,支付宝还有积分等的支付方式,而且支付的渠道还得分银联和网联以及门店等,如何搭建一个能支持上述渠道和上述支付方式的系统?

可能一般的程序员就会就事论事,用最简单最快速的方式,针对每种方式建一个类,做多在方法级别抽象出来,估计这样只能实现方法级别的重用。

但发现这样远远不够,因为没有一成不变的代码,上述代码在经过多次需求变更以及多次功能改动后,就会变得一团糟,基本上就很难维护了。甚至会发现修改代码的时间会比写新代码的时间要长很多。

image

架构师在处理这类问题时,不会光想着当前如何实现功能,更会主动地考虑,当功能变更时,如何更高效地修改?如果当有类似功能来时,如何最大限度地利用现有的模块?

其实答案我们都知道,即面向对象思想以及基于设计模式的解决方案。这里我的体会是,当我们陷入修改泥潭时,或者不得不做重复劳动时,这时再回顾面向对象和设计模式,再尝试着用其中的一些方法(无非是继承,抽象类,接口,内聚,组合等方式)改善代码结构时,从中我们能得到意想不到的收获,我的一些对设计的感悟就这样来的。

我们不可能每天都会面对架构层面的设计,但写代码是每天必不可少的工作,我们如果每天能及时回想下,我今天写的代码,如果遇到功能改动时,会不会修改起来很困难?如果可维护性差,那么该怎么改进?然后再进一步考虑下,我面临的问题场景能否和设计模式中的一种或多种匹配上?如果能的话,该怎么用设计模式的思路来改进?

image

多想下这类问题,我们就会有收获,虽然我目前还谈不上是架构师,但至少我就通过这种方式提升了不少能力。

6、我目前的情况和学习方向(请大神们指导)

上述是我的一些体会和总结,另外,我目前也在看些架构方面的书,比如架构探险:从零开始写分布式服务框架,以及Spring Cloud方面的书,更重要的是,我平时也在不断练习。

目前,我将进一步学习Spring Cloud,以及更多地学习并实践高并发场景下的架构体系。

这里,我也想借这个机会,请大家给出具体的指导。

image

比如大家可以通过留言,说下自己在升级架构师的一些体会,或者可以推荐些好的书籍,这样也能帮助我少走些弯路。

8、版权声明和求推荐

本文可以在不做二次加工的前提下被转载,但谢绝用于商业用途,转载时请注明原出处。

写博文不容易,况且,我自认为此文都是我的体会,前后也用了3个小时来写本文,所以如果大家感觉可以,请多帮忙推荐下,大家的推荐是我不断写博文乃至不断进步的动力。

最后,大家也可以列下想听哪个话题的分享?如果可以,我会尽量满足大家。

©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 212,454评论 6 493
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 90,553评论 3 385
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 157,921评论 0 348
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 56,648评论 1 284
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 65,770评论 6 386
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 49,950评论 1 291
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 39,090评论 3 410
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 37,817评论 0 268
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 44,275评论 1 303
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 36,592评论 2 327
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 38,724评论 1 341
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 34,409评论 4 333
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 40,052评论 3 316
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 30,815评论 0 21
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 32,043评论 1 266
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 46,503评论 2 361
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 43,627评论 2 350

推荐阅读更多精彩内容