洋蔥

耳不闻人是非,目不视人之短,口不言人之过。

你好,我是华仔。

我们架构课的第18讲第19讲主题是单服务器高性能模式,我们讲了PPC与TPC、Reactor与Proactor,从理论上跟你详细讲述了不同模式的实现方式和优缺点,但是并没有给出详细的测试数据对比,原因在于我自己没有整套的测试环境,也不能用公司的服务器做压力测试,因此留下了一个小小的遗憾。

阅读全文 »

你好,我是华仔。
你现在看到的这篇文章,是我在2022年新写的。《从0开始学架构》这门课更新结束后,我又探索了很多和架构相关的事情。这期间新的经历和尝试,也让我有了更多的思考。
所以,有了今天这篇文章,把我在软件系统架构图上的实践分享给你。

很多同学技术能力很强,架构设计也做得很好,但是在给别人讲解的时候,总感觉像是“茶壶里煮饺子,有货倒不出”。

其实,在为新员工培训系统架构、给领导汇报技术规划、上技术大会做演讲或者向晋升评委介绍工作贡献的时候,如果你能画出一张优秀的软件系统架构图,就可以大大提升自己的讲解效果,让对方轻松地理解你想表达的关键点。

这一讲,我就会为你分享软件系统架构图的画图技巧。

阅读全文 »

在前面的专栏里,有同学留言说想看看具体的架构设计文档。由于信息安全的原因,再加上稍微复杂的系统,设计文档都是几十页,因此专栏无法直接给出详细的文档案例。但我认为提供一个架构设计文档模板还是很有必要的,可以方便你在实际进行架构设计的时候更好地编写相关文档。我还以前面讲过的“前浪微博”消息队列为例,给出架构设计中最重要的两个文档的模板和关键说明。这个案例文档仅给出一些关键内容供你参考,部分细节无法全面覆盖或者完全保证正确。

阅读全文 »

专栏截止到上一期,架构设计相关的理念、技术、实践已经基本讲完,相信你一路学习过来会有一种感觉,这些内容主要都是讲后端系统的架构设计,例如存储高可用、微服务、异地多活等,都是后端系统才会涉及。事实上确实也是如此,通常情况下我们讲架构设计,主要聚焦在后端系统,但这并不意味着App、前端就没有架构设计了,专栏所讲述的整套架构设计理念,虽然是来源于我的后端设计经验,但一旦形成完善的技术理论后,同样适应于App和前端。

首先,先来复习一下我的专栏所讲述的架构设计理念,可以提炼为下面几个关键点:

  • 架构是系统的顶层结构。
  • 架构设计的主要目的是为了解决软件系统复杂度带来的问题。
  • 架构设计需要遵循三个主要原则:合适原则、简单原则、演化原则。
  • 架构设计首先要掌握业界已经成熟的各种架构模式,然后再进行优化、调整、创新。

复习完我们就可以进入今天的正题,我来谈谈App架构的演进,以及上面这些架构设计关键点是如何体现的。

阅读全文 »

在前面的架构重构内功心法“有的放矢”和“合纵连横”中,我提到架构师需要从一大堆问题中识别关键的复杂度问题,然后有的放矢地通过架构重构来解决。但是通常情况下,需要架构重构的系统,基本上都是因为各种历史原因和历史问题没有及时处理,遗留下来逐渐积累,然后到了一个临界点,各种问题开始互相作用,集中爆发!到了真正要开始重构的时候,架构师识别出系统关键的复杂度问题后,如果只针对这个复杂度问题进行架构重构,可能会发现还是无法落地,因为很多条件不具备或者有的问题没解决的情况下就是不能做架构重构。因此,架构师在识别系统关键的复杂度问题后,还需要识别为了解决这个问题,需要做哪些准备事项,或者还要先解决哪些问题。这就需要我今天要和你分享的架构重构内功心法第三式:运筹帷幄。

阅读全文 »

上一期我给你讲了我的架构重构内功心法的第一式:有的放矢,需要架构师透过问题表象看到问题本质,找出真正需要通过架构重构解决的核心问题,而不是想着通过一次重构解决所有问题。

今天我来传授架构重构内功心法的第二式:合纵连横。

阅读全文 »

当业务规模比较小、系统复杂度不高时,运维、测试、数据分析、管理等支撑功能主要由各系统或者团队独立完成。随着业务规模越来越大,系统复杂度越来越高,子系统数量越来越多,如果继续采取各自为政的方式来实现这些支撑功能,会发现重复工作非常多。因此我们自然而然就会想到将这些支撑功能做成平台,避免重复造轮子,减少不规范带来的沟通和协作成本。

今天,我就来聊聊互联网架构模板的“平台”技术。由于每个平台本身都是一个庞大的体系,专栏只是介绍一下平台的核心职责和关键设计点,具体细节就不详细展开了。

阅读全文 »
0%