架构设计复杂度的6个来源

\u003cp\u003e谈到架构设计,相信每个技术人员都耳熟能详。我总结了三个架构设计相关的特性:\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003e架构设计的思维和程序设计的思维差异很大。\u003c/li\u003e\n\u003cli\u003e架构设计没有体系化的培训和训练机制。\u003c/li\u003e\n\u003cli\u003e程序员对架构设计的理解存在很多误区。\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003e所以,虽然每个程序员心中都有一个成为架构师的梦想,梦想是美好的,但道路是曲折的。\u003c/p\u003e\n\u003cp\u003e我在十余年的技术生涯中,先后参与了包括社交、电商、游戏、中间件、内部运营系统等领域的架构设计,不断学习、思考、实践、总结、改进、交流,逐步形成了自己的\u003cstrong\u003e一套架构设计方法论\u003c/strong\u003e。《从0开始学架构》专栏涵盖了我的整套架构设计方法论和架构实践,主要包括以下内容:\u003cbr /\u003e\n\u003cimg src=\"https://static001.geekbang.org/resource/image/6c/af/6cc5f33671d850cb5110405bb3a02baf.png\" alt=\"\" /\u003e\u003c/p\u003e\n\u003cp\u003e开始学习之前,我们先来分析一下架构设计的目的是什么?通过回顾架构产生的历史背景和原因,我们可以基本推导出答案:\u003cstrong\u003e架构设计的主要目的是为了解决软件系统复杂度带来的问题\u003c/strong\u003e。那么,架构设计的复杂度来源是什么呢?我总结了6个复杂度来源:\u003cbr /\u003e\n\u003cimg src=\"https://static001.geekbang.org/resource/image/a7/e9/a7532d027e3a152d92a0b5e9ad4c30e9.png\" alt=\"\" /\u003e\u003c/p\u003e\n\u003cp\u003e延伸阅读\u003cbr /\u003e\n\u003ca href=\"https://time.geekbang.org/column/article/6458\"\u003e架构是什么?\u003c/a\u003e\u003cbr /\u003e\n\u003ca href=\"https://time.geekbang.org/column/article/6472\"\u003e架构设计的目的是什么?\u003c/a\u003e\u003c/p\u003e\n\u003ch2\u003e一、高性能\u003c/h2\u003e\n\u003cp\u003e对性能孜孜不倦的追求是整个人类技术不断发展的根本驱动力。但伴随性能越来越高,相应的方法和系统复杂度也是越来越高。软件系统中高性能带来的复杂度主要体现在两方面,一方面是\u003cstrong\u003e单台计算机内部为了高性能带来的复杂度\u003c/strong\u003e;另一方面是\u003cstrong\u003e多台计算机集群为了高性能带来的复杂度\u003c/strong\u003e。\u003cbr /\u003e\n\u003cimg src=\"https://static001.geekbang.org/resource/image/24/8e/240b6e0a5a805f29c78f31dc2af3558e.png\" alt=\"\" /\u003e\u003c/p\u003e\n\u003cp\u003e部分解决方案:\u003cbr /\u003e\n\u003ca href=\"https://time.geekbang.org/column/article/6605\"\u003e复杂度来源:高性能\u003c/a\u003e\u003cbr /\u003e\n\u003ca href=\"https://time.geekbang.org/column/article/8640\"\u003e高性能缓存架构\u003c/a\u003e\u003c/p\u003e\n\u003ch2\u003e二、高可用\u003c/h2\u003e\n\u003cp\u003e系统的高可用方案五花八门,但万变不离其宗,本质上都是通过“冗余”来实现高可用。它在形式上和高性能一样,都是通过增加更多机器来达到目的,但本质上是有根本区别的:\u003cstrong\u003e高性能增加机器目的在于“扩展”处理性能;高可用增加机器目的在于“冗余”处理单元\u003c/strong\u003e。通过冗余增强了可用性,但同时也带来了复杂性,我会在专栏中根据不同的应用场景逐一分析。\u003cbr /\u003e\n\u003cimg src=\"https://static001.geekbang.org/resource/image/00/5c/00b9fe99aaf398a27ce1d032a1c0c75c.png\" alt=\"\" /\u003e\u003c/p\u003e\n\u003cp\u003e部分解决方案:\u003cbr /\u003e\n\u003ca href=\"https://time.geekbang.org/column/article/6895\"\u003e复杂度来源:高可用\u003c/a\u003e\u003c/p\u003e\n\u003ch2\u003e三、可扩展性\u003c/h2\u003e\n\u003cp\u003e由于软件系统固有的多变性,新的需求总会不断提出来,因此可扩展性显得尤其重要,几乎所有的技术人员对于可扩展性都特别重视。设计具备良好可扩展性的系统,有两个基本条件:正确预测变化、完美封装变化。但要达成这两个条件,本身也是一件复杂的事情。在具体代码中使用哪些可扩展的技术?最终的效果如何?我将在专栏中为你具体分析。\u003cbr /\u003e\n\u003cimg src=\"https://static001.geekbang.org/resource/image/e7/d9/e7b87556743e941177629d9e7813a3d9.png\" alt=\"\" /\u003e\u003c/p\u003e\n\u003cp\u003e部分解决方案:\u003cbr /\u003e\n\u003ca href=\"https://time.geekbang.org/column/article/6899\"\u003e复杂度来源:可扩展性\u003c/a\u003e\u003c/p\u003e\n\u003ch2\u003e四、低成本、安全、规模\u003c/h2\u003e\n\u003cp\u003e我将在专栏中,为你分析低成本给架构设计带来的主要复杂度,体现在引入新技术或创造新技术,讨论从功能安全和架构安全引入的复杂度,以及规模带来复杂度的主要原因是“量变引起质变”。\u003cbr /\u003e\n\u003cimg src=\"https://static001.geekbang.org/resource/image/f7/65/f7efe293dd62ab1f5ad435912cc1f265.png\" alt=\"\" /\u003e\u003c/p\u003e\n\u003cp\u003e学习了6大复杂度来源后,你可以结合所在的业务,分析一下主要的复杂度是这其中的哪些部分?是否还有其他复杂度原因?欢迎你加入专栏的学习,和我一起讨论。相信经过深度的思考,你对技术的理解会更加深刻。\u003c/p\u003e\n\u003cp\u003e部分解决方案:\u003cbr /\u003e\n\u003ca href=\"https://time.geekbang.org/column/article/6899\"\u003e复杂度来源:低成本、安全、规模\u003c/a\u003e\u003c/p\u003e\n\u003ch2\u003e专栏简介:\u003c/h2\u003e\n\u003cp\u003e每个程序员都有成为架构师的梦想,程序员成长也绕不开架构设计。\u003c/p\u003e\n\u003cp\u003e\u003ca href=\"https://time.geekbang.org/column/intro/81?utm_term=zeus7EE38\u0026amp;utm_source=website\u0026amp;utm_medium=infoq\u0026amp;utm_campaign=85-end\u0026amp;utm_content=article\"\u003e《从0开始学架构》\u003c/a\u003e专栏作者是资深技术专家李运华,目前带领多个研发团队,承担架构设计、架构重构、技术团队管理、技术培训等职责,曾就职于华为和UCWeb,写过《面向对象葵花宝典》一书。\u003c/p\u003e\n\u003cp\u003e在专栏中,作者从架构基础、三大架构模式和实战的角度分享一整套架构设计方法论。照着做,你也能成为架构师。\u003c/p\u003e\n\u003cp\u003e专栏共50期,已更新完毕。目前有超过3万人加入学习,互动留言字数超过20万,邀请你加入学习!\u003c/p\u003e\n

你可能感兴趣的:(架构设计复杂度的6个来源)