总结我在架构师升级过程中的那些坑以及各种体会

2019 年 1 月 4 日 互联网架构师

相关阅读:

阿里职位层级(附P级详细要求)

程序员啊,他又加班了

最全 BATJ 大厂面试题整理!(速度收藏)

先说明,本文说的是技术架构,而不是业务架构,另外,这个架构是指目前比较热门的高并发大数据的架构。论能力,我还达不到架构师的水平,所以我目前还在不断努力。 本文回顾了我在架构师方面的学习途径和学习方式,也总结下我在这方面踩过的坑,从而让大家别再重犯。

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

我自认为还算比较上进,所以,在java高级开发的岗位上也是不断学习,当时再往上升,有项目经理和架构师等选择,一方面,我听说架构师很挣钱,另一方面,我也想再深入了解些技术,所以就想往这方面转。当时我是很迷茫的,甚至不知道该学什么,以及该怎么学。

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

3 陷入各组件的细节中

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

上述是我的一些体会和总结,大家可以留言,谈谈自己在升级架构师的一些体会。

原文出处:https://www.cnblogs.com/JavaArchitect/p/9227183.html


 妈妈常教导我,让我养成良好习惯。这样长大才能成为一个有用的人。良好的习惯是尊敬师长这样长大才能成为一个有用的人。良好的习惯是尊敬师长,爱护同学,对人有礼貌;是不粗心,做事情不拖拉;还是爱护公物,不浪费粮食。为什么呢?因为拥有良好习惯,做一个品德高尚的人,懂得尊重别人,才会得到别人的尊重。我要努力地做到这些。我有一些坏习惯,有时候学习很粗心,把一些会做的题做错。在生活上,也很粗心,有一次早上起床居然穿反了衣服。我吃饭很慢,有的时候还剩饭。我还起床磨蹭,本来应该迅速地穿好衣服,但是,我总是磨磨蹭蹭地,速度很慢。我打算在这学期里,改掉这些坏习惯。早上起来,迅速地穿好衣服,不拖拉。学习不粗心,仔细完成每一道题。吃饭的时候,要很快的把饭吃完,不剩饭。我要从一点一滴做起,逐渐养成良好习惯。我相信自己一定能成为一名品学兼优的好学生!我打算在这学期里,改掉这些坏习惯。早上起来,迅速地穿好衣服,不拖拉。学习不粗心,仔细完成每一道题。吃饭的时候,要很快的把饭吃完,不剩饭。我要从一点一滴做起,逐渐养成良好习惯。我相信自己一定能成为一名品学兼优的好学生!  在上幼儿园以前,我什么也不会干,就连穿衣服也是妈妈给我穿好,就要上幼儿园了,这样可不行,妈妈锻炼我要学会自己穿衣服。   有一天,妈妈把衣服摆在我面前,开始让我自己穿。一开始。我又哭又叫就是不穿,还把衣服扔的满地都是,然后坐在地上开始大哭,等了好长时间,妈妈还是不理我,我只好自己乖乖的把衣服穿好, 一出了房间门,妈妈就笑了起来,再看看我的衣服,毛衣和裤子都穿反了,我赶紧回房间又重新穿了一遍,这次穿好了,拿起外套,可是外套的扣子又扣不上了,扣子可调皮了,好像故意和我作对,我把扣子往扣眼——人类邪恶的根源;爱情——幸福和光明的源泉。我一直在这些思想的舞台上徘徊。突然我发现两个身影从我面前经过,坐在不远的草地上。这是一对从农田那边走过来的青年男女。农田那边有农民的茅舍。在一阵令人伤心的沉默之后,随着一声长叹,我听见从一个肺痨病人的嘴里说出了这样的话:幸福和光明的源泉。我一直在这些思想的舞台上徘徊。突然我发现两个身影从我面前经过,坐在不远的草地上。这是一对从农田那边走过来的青年男女。农田那边有农民的茅舍。在一阵令人伤心的沉默之后,随着一声长叹,我听见从一个肺痨病人的嘴里说出了这样的话幸福和光明的源泉。我一直在这些思想的舞台上徘徊。突然我发现两个身影从我面前经过,坐在不远的草地上。这是一对从农田那边走过来的青年男女。农田那边有农民的茅舍。在一阵令人伤心的沉默之后,随着一声长叹,我听见从一个肺痨病人的嘴里说出了这样的话幸福和光明的源泉。我一直在这些思想的舞台上徘徊。突然我发现两个身影从我面前经过,坐在不远的草地上。这是一对从农田那边走过来的青年男女。农田那边有农民的茅舍。在一阵令人伤心的沉默之后,随着一声长叹,我听见从一个肺痨病人的嘴里说出了这样的话幸福和光明的源泉。我一直在这些思想的舞台上徘徊。突然我发现两个身影从我面前经过,坐在不远的草地上。这是一对从农田那边走过来的青年男女。农田那边有农民的茅舍。在一阵令人伤心的沉默之后,随着一声长叹,我听见从一个肺痨病人的嘴里说出了这样的话幸福和光明的源泉。我一直在这些思想的舞台上徘徊。突然我发现两个身影从我面前经过,坐在不远的草地上。这是一对从农田那边走过来的青年男女。农田那边有农民的茅舍。在一阵令人伤心的沉默之后,随着一声长叹,我听见从一个肺痨病人的嘴里说出了这样的话幸福和光明的源泉。我一直在这些思想的舞台上徘徊。突然我发现两个身影从我面前经过,坐在不远的草地上。这是一对从农田那边走过来的青年男女。农田那边有农民的茅舍。在一阵令人伤心的沉默之后,随着一声长叹,我听见从一个肺痨病人的嘴里说出了这样的话幸福和光明的源泉。我一直在这些思想的舞台上徘徊。突然我发现两个身影从我面前经过,坐在不远的草地上。这是一对从农田那边走过来的青年男女。农田那边有农民的茅舍。在一阵令人伤心的沉默之后,随着一声长叹,我听见从一个肺痨病人的嘴里说出了这样的话幸福和光明的源泉。我一直在这些思想的舞台上徘徊。突然我发现两个身影从我面前经过,坐在不远的草地上。这是一对从农田那边走过来的青年男女。农田那边有农民的茅舍。在一阵令人伤心的沉默之后,随着一声长叹,我听见从一个肺痨病人的嘴里说出了这样的话亲爱的!擦干你的眼泪,至高无上的爱情已经打开了我们的眼界,使我们成了它的崇拜者。是它,





 妈妈常教导我,让我养成良好习惯。这样长大才能成为一个有用的人。良好的习惯是尊敬师长这样长大才能成为一个有用的人。良好的习惯是尊敬师长,爱护同学,对人有礼貌;是不粗心,做事情不拖拉;还是爱护公物,不浪费粮食。为什么呢?因为拥有良好习惯,做一个品德高尚的人,懂得尊重别人,才会得到别人的尊重。我要努力地做到这些。我有一些坏习惯,有时候学习很粗心,把一些会做的题做错。在生活上,也很粗心,有一次早上起床居然穿反了衣服。我吃饭很慢,有的时候还剩饭。我还起床磨蹭,本来应该迅速地穿好衣服,但是,我总是磨磨蹭蹭地,速度很慢。我打算在这学期里,改掉这些坏习惯。早上起来,迅速地穿好衣服,不拖拉。学习不粗心,仔细完成每一道题。吃饭的时候,要很快的把饭吃完,不剩饭。我要从一点一滴做起,逐渐养成良好习惯。我相信自己一定能成为一名品学兼优的好学生!我打算在这学期里,改掉这些坏习惯。早上起来,迅速地穿好衣服,不拖拉。学习不粗心,仔细完成每一道题。吃饭的时候,要很快的把饭吃完,不剩饭。我要从一点一滴做起,逐渐养成良好习惯。我相信自己一定能成为一名品学兼优的好学生!  在上幼儿园以前,我什么也不会干,就连穿衣服也是妈妈给我穿好,就要上幼儿园了,这样可不行,妈妈锻炼我要学会自己穿衣服。   有一天,妈妈把衣服摆在我面前,开始让我自己穿。一开始。我又哭又叫就是不穿,还把衣服扔的满地都是,然后坐在地上开始大哭,等了好长时间,妈妈还是不理我,我只好自己乖乖的把衣服穿好, 一出了房间门,妈妈就笑了起来,再看看我的衣服,毛衣和裤子都穿反了,我赶紧回房间又重新穿了一遍,这次穿好了,拿起外套,可是外套的扣子又扣不上了,扣子可调皮了,好像故意和我作对,我把扣子往扣眼——人类邪恶的根源;爱情——幸福和光明的源泉。我一直在这些思想的舞台上徘徊。突然我发现两个身影从我面前经过,坐在不远的草地上。这是一对从农田那边走过来的青年男女。农田那边有农民的茅舍。在一阵令人伤心的沉默之后,随着一声长叹,我听见从一个肺痨病人的嘴里说出了这样的话:亲爱的!擦干你的眼泪,至高无上的爱情已经打开了我们的眼界,使我们成了它的崇拜者。是它,




看完本文有收获?请转发分享给更多人


欢迎关注“互联网架构师”,我们分享最有价值的互联网技术干货文章,助力您成为有思想的全栈架构师,我们只聊互联网、只聊架构,不聊其他!打造最有价值的架构师圈子和社区。

本公众号覆盖中国主要首席架构师、高级架构师、CTO、技术总监、技术负责人等人 群。分享最有价值的架构思想和内容。打造中国互联网圈最有价值的架构师圈子。

  • 长按下方的二维码可以快速关注我们

  • 如想加群讨论学习,请点击右下角的“加群学习”菜单入群

登录查看更多
1

相关内容

一般有”软件架构“和”信息架构“之分。
FPGA加速系统开发工具设计:综述与实践
专知会员服务
61+阅读 · 2020年6月24日
打怪升级!2020机器学习工程师技术路线图
专知会员服务
96+阅读 · 2020年6月3日
【实用书】Python爬虫Web抓取数据,第二版,306页pdf
专知会员服务
115+阅读 · 2020年5月10日
【2020新书】如何认真写好的代码和软件,318页pdf
专知会员服务
63+阅读 · 2020年3月26日
《代码整洁之道》:5大基本要点
专知会员服务
49+阅读 · 2020年3月3日
中文知识图谱构建技术以及应用的综述
专知会员服务
305+阅读 · 2019年10月19日
分布式核心技术知识图谱,带走不谢
架构师之路
12+阅读 · 2019年9月23日
转岗产品经理,花了3个月都做不好需求工作
人人都是产品经理
10+阅读 · 2019年9月16日
阿里技术大牛:一份架构师成神路线图!
51CTO博客
29+阅读 · 2019年7月6日
每个架构师都应该培养业务思维
InfoQ
3+阅读 · 2019年4月21日
说说我的老同事,前端大神程劭非
余晟以为
17+阅读 · 2019年1月14日
年薪48万的程序员,他究竟做对了什么?
机器学习算法与Python学习
7+阅读 · 2018年12月28日
2年Java经验,真的就拿不到30万年薪吗?
程序员观察
3+阅读 · 2018年4月8日
A survey on deep hashing for image retrieval
Arxiv
14+阅读 · 2020年6月10日
Image Segmentation Using Deep Learning: A Survey
Arxiv
42+阅读 · 2020年1月15日
Arxiv
5+阅读 · 2019年2月28日
Arxiv
21+阅读 · 2018年8月30日
Efficient and Effective $L_0$ Feature Selection
Arxiv
5+阅读 · 2018年8月7日
Arxiv
4+阅读 · 2018年5月21日
Arxiv
8+阅读 · 2018年5月15日
Arxiv
16+阅读 · 2018年4月2日
VIP会员
相关VIP内容
FPGA加速系统开发工具设计:综述与实践
专知会员服务
61+阅读 · 2020年6月24日
打怪升级!2020机器学习工程师技术路线图
专知会员服务
96+阅读 · 2020年6月3日
【实用书】Python爬虫Web抓取数据,第二版,306页pdf
专知会员服务
115+阅读 · 2020年5月10日
【2020新书】如何认真写好的代码和软件,318页pdf
专知会员服务
63+阅读 · 2020年3月26日
《代码整洁之道》:5大基本要点
专知会员服务
49+阅读 · 2020年3月3日
中文知识图谱构建技术以及应用的综述
专知会员服务
305+阅读 · 2019年10月19日
相关资讯
分布式核心技术知识图谱,带走不谢
架构师之路
12+阅读 · 2019年9月23日
转岗产品经理,花了3个月都做不好需求工作
人人都是产品经理
10+阅读 · 2019年9月16日
阿里技术大牛:一份架构师成神路线图!
51CTO博客
29+阅读 · 2019年7月6日
每个架构师都应该培养业务思维
InfoQ
3+阅读 · 2019年4月21日
说说我的老同事,前端大神程劭非
余晟以为
17+阅读 · 2019年1月14日
年薪48万的程序员,他究竟做对了什么?
机器学习算法与Python学习
7+阅读 · 2018年12月28日
2年Java经验,真的就拿不到30万年薪吗?
程序员观察
3+阅读 · 2018年4月8日
相关论文
A survey on deep hashing for image retrieval
Arxiv
14+阅读 · 2020年6月10日
Image Segmentation Using Deep Learning: A Survey
Arxiv
42+阅读 · 2020年1月15日
Arxiv
5+阅读 · 2019年2月28日
Arxiv
21+阅读 · 2018年8月30日
Efficient and Effective $L_0$ Feature Selection
Arxiv
5+阅读 · 2018年8月7日
Arxiv
4+阅读 · 2018年5月21日
Arxiv
8+阅读 · 2018年5月15日
Arxiv
16+阅读 · 2018年4月2日
Top
微信扫码咨询专知VIP会员