跳转至

结束语 和你聊聊我的架构心路历程

你好,我是王庆友。

今天是专栏的最后一讲,我和你分享的核心内容马上就要结束了,我是感到既欣慰,又觉得如释重负。

说实话,架构的话题不好写,内容涉及面比较广,既要有理论的高度,又要有实践的细节,才能把这个话题讲得透彻。我看到很多的同学在评论里反馈课程的内容很干,都在反复地吸收和体会,这说明课程的内容对你有价值,相信你也有了很多的收获。在这里,我也很感谢你一直保持着学习的热情。

不知你有没有感觉到,整个专栏的内容既很虚又很实,这里“虚”指的是理论的高度概括,“实”指的是接地气的案例介绍。所以在这里,我想再和你简单地分享一下专栏的写作思路,帮助你更好地理解和使用这个专栏。

专栏的写作思路

整个专栏一共有7讲是理论篇,这个也是专栏的主体内容框架,如下图所示。

  • 第1讲“架构的本质”,是专栏的总纲,通过架构的本质和架构分类体系介绍,让你迈进架构认知的大门。
  • 然后,针对业务架构和技术架构,分别有一讲内容深入介绍它们的定位,帮助你从源头区分这两种架构,业务架构聚焦人脑如何理解业务,针对的是业务性功能;技术架构聚焦电脑具体如何干活,针对的是系统性功能,这两者的目标以及处理手段都是不同的。
    (补充说明:应用架构更多的是业务架构的具体落地,在专栏中,我把应用架构和业务架构糅合,比如说第4讲“电商平台架构是如何演变的”,实际上讲的是应用架构。)
  • 最后,针对每种架构的核心目标,也都有一讲内容专门分析每个目标的实质和实现手段。

通过这7讲偏理论性的课程内容,我希望帮你建立对架构的体系认知,让你能从总体上清楚架构设计要做什么以及如何做。以后,当你碰到更多的架构相关内容,都可以往这个架构框框里面套,进一步丰富和完善这个体系。

除了相对体系化,整个专栏还有一个特点就是案例丰富,在我刚才说的偏理论的7讲内容当中,就有大量的案例片段。此外,针对4个核心的架构目标,我也分别提供了3个完整的实际案例,让你能够从多个角度理解实现架构目标的手段,你也可以通过这些案例,深入体会架构设计的具体过程。

你可以发现,无论是理论,还是案例部分,我都是用自己的语言来描述,和你分享的是我自己对架构的理解。如果你在架构上有比较多的经验,可以马上领悟到要点;如果一下子消化不了,你也可以多读几遍,相信你每次都会有新的收获。

我的架构实践

我在成为架构师的过程中,其实也是自己一路摸索过来的,现在回头再看这个过程,我觉得有些知识和技能,对于架构师的成长非常重要,这里我想和你分享一下,希望能对你有所启发。

  • GoF设计模式和J2EE设计模式

我对GoF的23个设计模式和J2EE设计模式都作过深入了解,GoF设计模式的粒度比较小,针对的是类级别的关系定义;J2EE设计模式的粒度比较大,针对的是企业级系统设计。

这些设计模式都很经典,它们提炼了不同业务场景下的解决方案,让你能够很体系地理解问题是什么(What),怎么解决的(How),以及为什么要这么做(Why)。通过学习这些设计模式,我培养了良好的抽象设计能力,也很好地了解了具体的设计手段。

  • JVM/Java规格说明

我看过很多遍JVM/Java设计规格说明书,通过理解语言的底层机制,我对Java的上层特性有了更透彻的了解。比如对于Java的垃圾收集,如果你很清楚它的原理和运行机制,你就知道如何优化代码,以及当系统出现OOM的时候,如何去快速定位和解决问题。

  • 源代码阅读

对源代码的阅读也很重要, 我读过很多JDK核心类的源码,比如说String、HashMap和Future等等;我也深入阅读过一些开源框架,比如CXF框架、Hessian通信协议等等。

通过阅读源码,你可以深入了解相应的内容,还可以通过理论结合实际,深入掌握设计技巧。

  • 分布式通信

我从开发一路走过来,接触过很多分布式通信协议,比如最早的DCOM、RMI、CORBA和Web Service,再到后面百花齐放的Hessian、gRPC、Thrift等等;至于具体的开发框架,我也深入了解过Axis、Dubbo、Spring Cloud等等。对这些技术的优劣点和适用场景的系统了解和学习,让我在设计分布式系统时,能够选择合理的应用之间的集成方式。

  • 数据库和API设计

数据库设计和接口设计是架构设计中很重要的内容。

我做过大量的数据库设计,它代表了系统数据层面的抽象。如果你能合理地定义数据模型,那么系统的业务逻辑和性能基本也就确定了。另外,我也曾经做过比较完整的Open API平台,这些接口设计经验,让我掌握了如何通过适度的抽象保证接口的复用。

  • 1号店架构设计

我在1号店承担了很多大项目的设计,有些是偏业务的,比如针对基础业务的服务化改造;有些是偏技术的,比如订单水平拆库和灰度发布系统。通过这些架构实践,把我很多的架构知识变成了实际的架构能力,并且通过方案的整体设计,让我可以把原有各个部分的能力整合在一起。

总而言之,你可以看到,我的成长经历虽然没有一个明显的主线,但还是隐隐有迹可循的,大致可以遵循以下过程。

打造基础能力

首先,你要对架构设计的各个要点有深入的了解,包括数据结构和算法、设计模式、数据库和服务设计、分布式通信等等。对于这些要点,你不能仅仅停留在使用层面,而是要深入理解它们的内部机制,这样你就打造了扎实的基础能力。

建立体系

在了解了各个设计要点的基础上,你需要对架构设计建立体系化的认知,能够从整体上认识架构,清楚架构的设计目标、设计过程和设计手段。你之前是从各个局部来考虑问题,现在要变为从整体的角度来考虑问题。在架构设计上,我们宁可要精确的模糊,也不要模糊的精确。

纳入体系

有了整体的认知体系以后,你就有了存放架构内容的框架。然后,你可以从广度和深度两个方面,来不断丰富和完善你对架构的认知。

实践运用

最后,通过大量的实践,你就可以把原先储备的架构知识,以及各项基础能力有效地串接起来,最终打造完整的架构能力。

架构师的能力,既涉及到业务和技术,又涵盖了它们的广度和深度。在成为架构师的过程中,你可以积累各项能力,把以往的知识和经验串起来,这其实就相当于一个银行,你可以不断地储蓄,然后进行整体输出,这是一个很好的个人成长和发挥价值的途径。

写在最后

最后,我想说的是,这是技术最好的时代,我们有很好的技术可以选择,有很开放的技术分享氛围,有很好的技术回报。但这也是技术最差的时代,技术太多,变化太快,我们还需要不断地学习。

想要成为信息时代的弄潮儿,除了努力,你还需要有方向,我希望这个架构专栏,可以成为你学习架构的指路明灯,帮助你更好地成长。

好了,这就是我作为一个架构老兵,想和你分享的经历和思考。专栏的正文更新到这里就要告一段落,但是更新的结束并不意味着我们之间就要切断联系,之后呢,我还会针对整个专栏的内容,给你一套系统性的结课测试题,让你可以检测一下自己的学习成果。并且,我还会继续回复你的留言,如果你对于架构有新的问题和思考,也欢迎继续和我一起交流。

在本讲的结尾,我还为你准备了一份毕业问卷,题目不多,希望你能抽出几分钟时间填写一下,我非常希望听听你对这个课程的意见和建议,欢迎你在问卷中畅所欲言,期待你的反馈!

我是王庆友,感谢你一直以来的学习和坚持,也感谢你的留言和反馈,相信对你对我,这都是一段非常有意义的成长经历,让我们一起享受架构学习的乐趣吧,我们江湖再见!

精选留言(15)
  • tt 👍(14) 💬(1)

    非常感谢老师的讲解。 和老师也是非常的有缘,去年12月初的时候,编辑就联系我,让我看了您写的样稿,然后正式上线的时候,也直接订阅了老师的课程。 此外,在第一部分讲解业务架构的时候,和自己最近的工作和思考产生了很大的共鸣,一下子就让工作中遇到的问题变得有条理了。 这们课是自己在极客时间里所有订阅的课程里,带来收货和思考最多的一门课。可以说,在合适的时间遇到了一门合适的课。 以这门课为契机,又订阅了 领域驱动设计DDD、说透中台,进一步放大了自己的思考上的收获。同时又连续听了一遍之前订阅过的 分布式系统技术原理与算法解析、高并发系统设计40问,这些课再连续听一遍,带给了之前没有过的收获。 再次感谢老师!

    2020-04-08

  • 方舟勇士 👍(4) 💬(1)

    讲的真是好,技术精湛,文笔也好。真希望有一门实战课,用可运行的代码演示架构的演化过程。

    2020-04-16

  • 👍(3) 💬(1)

    老师这门课,主要讲的是项目实战中总结的经验,做取舍的依据,更多的偏向"术",再粗一点就成架构范式漫聊,再细一点就变成技术细节实现,讲到这个程度不粗不细刚刚好,我觉得很棒了 许式伟的架构课偏向"道"更多一些,但也不是"道"的全部,他对架构师应有的心性和架构到底是做什么的,以及设计原则的应用,描述的更出彩一些 先前我还看过一些李运华的<<面向对象葵花宝典>>,也是偏向具体的"术"多一些,他的专栏我还没来的及看,不过看目录也是偏向实战,对具体场景处理思路的描述多一些 最近我在看的是<<架构整洁之道>>,第一遍看的晕晕糊糊,第二遍才理清个大概。主要是所有架构范式都要遵循的原则:solid原则,它的提出者对这些原则的阐述,以及他对编程范式的看法,他在项目中遇到的问题以及怎样经由设计原则解决的,他所经历的架构,编码方式发展的历史,他在职业生涯中遇到的事情......有理论也不乏实践和趣味性,是我认为在这些课里面最偏重"道"的一门课。 以上所看过的课,我觉得都很棒,每门课都让我有所收获,在此推荐给大家

    2020-07-20

  • 夜空中最亮的星 👍(2) 💬(1)

    感谢老师,江湖再见

    2020-04-08

  • AlfredLover 👍(1) 💬(1)

    谢谢,加深对架构的整体认知确实很重要。那7篇理论值得反复阅读,再结合自己当前的项目进行思考、实践。很喜欢作者的写作风格,希望后续还有其它课程推出。

    2020-04-08

  • J.Smile 👍(1) 💬(1)

    首先,感谢老师的专栏,通过这个专栏学习不到不少干货还有感悟。还想请教老师的一个关于阅读源码的问题,很可能是因为生产实践中缺少相应挑战,导致我对阅读源码的重要性一致无法形成重视,第一,我感觉目前的问题处理没有到非得读源码的程度,了解架构原理,处理过程足以应付眼前问题。第二,源码晦涩难懂,就好像芝麻绿豆摊一场根本抓不住重点,吃力不讨好。希望老师能针对以上两点给予指导。感谢!

    2020-04-08

  • Simple 👍(0) 💬(1)

    收获很大,感谢老师。

    2021-06-23

  • 嬴梦川 👍(0) 💬(1)

    过去一年多一直在做一个老系统的架构,对于很多冥思苦想不得其解的问题(通过圈表划分子系统是其中 之一),看了老师的讲解后顿时豁然开朗……另外,老师精深的理论功底和丰富的案例把我对架构的理解直接提升了一个层次。谢谢老师的分享,此专栏太直了!

    2020-12-08

  • Geek_zbvt62 👍(8) 💬(0)

    开始3节感觉这课的内容比较普通,后面越来越看出作者功力了,可以用“宝藏”来形容

    2020-04-08

  • 👍(4) 💬(0)

    一路看完,最有价值的专栏之一

    2020-04-08

  • mickey 👍(2) 💬(0)

    感谢老师分享,学习到了,但更重要的是结合自身业务问题的实践。

    2020-04-08

  • Better me 👍(2) 💬(0)

    感谢老师的分享,希望之后还有不定期加餐

    2020-04-08

  • 蓝天 👍(2) 💬(0)

    感谢老师指明方向,好好学基础,路还远,要不断努力!

    2020-04-08

  • 阿男 👍(2) 💬(0)

    感谢老师陪伴,对架构的理解又深入一层,一手技术,一手业务,两手都要抓,两手都要过硬

    2020-04-08

  • 每天晒白牙 👍(2) 💬(0)

    感谢老师的陪伴

    2020-04-08