<audio id="audio" title="结束语 | 和你聊聊我的架构心路历程" controls="" preload="none"><source id="mp3" src="https://static001.geekbang.org/resource/audio/e6/34/e68e5ea914f52d05eadbea1ad0d28134.mp3"></audio>

你好，我是王庆友。

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

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

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

## 专栏的写作思路

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

<img src="https://static001.geekbang.org/resource/image/d5/16/d50f83ee90b87ff3cf525f24274f9616.jpg" alt="">

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

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

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

### 打造基础能力

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

### 建立体系

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

### 纳入体系

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

### 实践运用

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

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

## 写在最后

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

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

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

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

[<img src="https://static001.geekbang.org/resource/image/e4/1b/e4db89b21afe1d2e62e7e515e96f771b.jpg" alt="">](https://jinshuju.net/f/pYpw4i)

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