周志明的软件架构课
74讲 | 5.8w人已学 | 构筑可靠的大型软件系统
周志明的软件架构课
74讲 | 5.8w人已学
构筑可靠的大型软件系统
周志明远光软件研究院院长
周志明,博士,远光软件研究院院长,澳门科大-远光人工智能联合实验室主任。研究方向为机器学习特征选择自动化。 出版过七部计算机技术书籍,撰写过两部开源文档,口碑和销量均得到读者的认可。其中四本书在豆瓣上获得了 9.0 分或以上的评价,“深入理解 Java 虚拟机”系列重印超过 40 次,总销量逾 30 万册。 开源技术的积极倡导者和推动者。
周志明的软件架构课
课程概述
课程目录

你将获得

  • 全局视角理解微服务发展历程
  • 构建一个可靠的分布式系统
  • 实战开发不同风格的架构项目
  • 资深架构师解决问题的独到思路

课程介绍

「极客时间出品」

作为一名架构师,在做软件研发、架构设计的时候,你遇到的最困难的问题是什么呢?是要具体解决系统的某个缺陷,还是要提升某段代码的运行性能?

周志明老师说,在软件研发的过程中,最难的事儿,其实是怎么样才能让一系列来自不同开发者、不同厂商、不同版本、不同语言、质量也参差不齐的软件模块,在不同的物理硬件和拓扑结构随时变动的网络环境中,还能保证可靠的运行质量。

很明显,这不是一个研发过程的管理问题。因为一套“靠谱”的软件系统,尤其是大型的、分布式的软件系统,很难指望只靠团队成员的个人能力水平,或者是质量管理流程来实现。

那么,在周志明老师看来,这其实是一个系统性的、架构层面的问题,最终还是要在技术和架构中去解决。而这也正是周老师要在这门课中跟你一起探讨的主题:如何构建一个可靠的分布式系统

如果你是一名架构师,或者是高级开发工程师,这门课可以帮你梳理出现代软件架构各条分支中繁多知识点的技能地图。通过跟随学习,你会知道架构师都应该掌握哪些架构知识,在软件研发的过程中,都需要考虑哪些因素、解决哪些问题、有哪些行业标准的解决方案。

而如果你是一个刚入行的工程师,那你可以把这门课程作为一个概念名词的速查手册。通过学习课程,你会理解一些技术名词和架构理论,拓展技术视野,提升自己的技术认知水平。

课程模块设计

课程主体划分为以下5大模块。

演进中的架构:该模块会借着讨论历史之名,从全局性的视角,帮你梳理微服务发展历程中出现的大量技术名词、概念,让你了解这些技术的时代背景和探索过程,帮你在后续的课程讲解中,更容易去深入理解软件架构设计的本质。

架构师的视角:该模块不会局限在某种架构的通用技巧,而是会带你系统性地了解在做架构设计的时候,架构师都应该思考哪些问题、可以选择哪些主流的解决方案和行业标准做法,以及这些主流方案都有什么优缺点、会给架构设计带来什么影响,等等。这样一来,我们才可以把“架构设计”这样比较抽象的工作具体化、具象化。

分布式的基石:该模块会聚焦在分布式架构,和你探讨分布式带来的问题与应对策略。带你剖析分布式架构中出现的一系列问题,比如服务的注册发现、跟踪治理、负载均衡、故障隔离、认证授权、伸缩扩展、传输通讯、事务处理等,有哪些解决思路、方法和常见工具。

不可变基础设施:该模块会按照云原生时代“基础设施即代码”的新思路,带你深入理解基础设施不变性的目的、原理与实现途径,和你一起去体会用代码和用基础设施,来解决分布式问题的差异,让你能够理解不可变基础设施的内涵,便于在实际工作中做运维、程序升级和部署等工作。

探索与实践:该模块会带你一起开发不同架构的Fenix’s Bookstore,并看看在不同环境下都应该怎么部署。这个模块的定位是“实战”,为了保证学习效果,特意没有安排音频,所以建议你一定要自己动手去实操。

课程目录