随笔分类 - 架构设计类与算法
什么是反模式-架构快速进阶教程
摘要:1. 简介 在本教程中,我们将了解什么是反模式。反模式是无效问题的常见解决方案,导致的问题多于解决的问题。本文将解释反模式,常见反模式的几个类别和示例,以及识别和避免它们的一些技巧。 2. 定义 Andrew Koenig在1995年的论文“Patterns and Antipatterns”中对反
阅读全文
反模式之幻数-架构快速进阶教程
摘要:1. 简介 设计模式可用作软件开发的地图。这些模式建议如何有效地应对反复出现的编程挑战。通过这种方式,模式足够通用,可以适应几个不同的编程项目,从而在异构上下文中解决相同的问题。 然而,反模式是软件开发中常见的实践,在实践中并不真正有效。因此,反模式非但没有改进最终软件,反而使软件开发和维护变得更加
阅读全文
什么是功能分解-架构快速进阶教程
摘要:1. 概述 在本教程中,我们将通过一个实际示例详细讨论功能分解。 此外,我们将探讨这种方法的优缺点。 2. 简介 功能分解是一种系统设计和分析方法,涉及将复杂系统分解为更小、更易于管理的组件。此外,我们使用特定的功能和关系来分解复杂的系统。 这是一个将系统分解为组成部分、识别功能并定义它们如何相互作
阅读全文
高可用性与容错-架构快速进阶教程
摘要:1. 简介 在本教程中,我们将研究高可用性和容错之间的异同。随着计算机网络的扩展和云计算的出现,网络服务在全球范围内流行起来。目前,网络化服务已融入日常生活,随时随地都需要。 由于这种普及,提供商必须保持通过网络提供的服务持续可供客户使用。为此,这些提供商创建了最低服务可用性协议,并采用允许和恢复故
阅读全文
什么是软件多样性-架构快速进阶教程
摘要:1. 概述 在本教程中,我们将研究软件多样性。首先,我们将了解导致软件多样性的动机。最后,我们将研究什么是软件多样性以及如何工作。 2. 了解动机 通常,如果开发人员需要实现解决特定问题的软件,他们会召集团队,分析需求,选择编程工具,并创建一个解决问题的软件程序。 前面描述的方案是在市场上发布新软件
阅读全文
需求:功能性与非功能性-架构快速进阶教程
摘要:1. 简介 我们可以将计算机科学视为通过计算解决现实世界问题的艺术。因此,计算机科学家或广义上的软件开发人员的相关能力之一是将现实世界抽象为能够解决特定问题的计算模型。 反过来,抽象模型是基于与开发中软件的利益相关者一起定义的一系列需求构建的。这些需求定义了输入和输出之间的所需关系,确定了最终产品质
阅读全文
进程控制块-架构快速进阶教程
摘要:1. 简介 计算机系统同时执行多个程序。这使我们能够实现更好的吞吐量和用户体验。运行多个程序的概念由操作系统中的进程实现。 在本教程中,我们将讨论进程控制块 (PCB) 的概念,其中包含进程运行的有用信息。 2. 进程概念 进程是正在执行的程序。例如,我们可以编写一个 Java 应用程序并将其保存到
阅读全文
死锁:它是什么,如何检测、处理和预防-架构快速进阶教程
摘要:1. 概述 在本教程中,我们将通过实际示例探讨如何预防、避免、检测和忽略死锁。 2. 死锁简介 在进程共享资源的几乎任何情况下都可能发生死锁。它可以发生在任何计算环境中,但它在分布式系统中很普遍,其中多个进程在不同的资源上运行。 在此情况下,一个进程可能正在等待另一个进程已持有的资源。死锁类似于先有
阅读全文
进程生命周期-架构快速进阶教程
摘要:1. 概述 在本教程中,我们将讨论操作系统中进程的生命周期。 2. 什么是进程? 在操作系统中,进程是当前正在执行的计算机程序的实例。因此,具有活动状态的计算机程序是一个进程。例如,用户正在打开 Web 浏览器进行 Web 冲浪或使用某些音乐播放器应用程序播放音乐。 当我们想要同时运行多个进程时,这
阅读全文
领域驱动设计阶段知识总结
摘要:领域 领域用来限定业务范围,范围就是边界,这就是DDD不断强调边界的原因。 DDD的领域就是这个边界内要解决的业务问题域。在研究和解决业务问题时,DDD会按照一定的规则将业务领域进行细分,当领域细分到一定程度后,DDD会将问题范围限定在特定的边界内,在这个边界内建立领域模型,进而用代码实现领域模型,
阅读全文
领域驱动设计之限界上下文的识别过程
摘要:在DDD建模和系统建设中有很多参与者,不同的参与者对同样的领域知识会有不同的理解,这样容易造成交流障碍,基于这个原因,DDD出现了通用语言和限界上下文两个概念。通用语言定义上下文含义,限界上下文定义领域边界,保证每个上下文的含义在特定的边界内有唯一含义,领域模型则存在这个边界之内。限界上下文确定了程
阅读全文
技术债务-MartinFlower
摘要:软件系统很容易产生杂物——内部质量的缺陷使得进一步修改和扩展系统变得比理想情况下更难。技术债务是一个由沃德·坎宁安 (Ward Cunningham) 创造的比喻,它描述了如何考虑如何处理这些垃圾,将其视为金融债务。添加新功能所需的额外努力是支付的债务利息。 想象一下,我的代码库中有一个令人困惑的模
阅读全文
高质量的软件是否值得付出代价?-Martin Flower
摘要:软件开发项目中的一个常见争论是花时间提高软件质量还是专注于发布更有价值的功能。通常,交付功能的压力在讨论中占主导地位,导致许多开发人员抱怨他们没有时间研究架构和代码质量。 "贝特里奇的标题定律"是一句格言,它说任何标题或标题以问号结尾的文章都可以用“否”来概括。认识我的人不会怀疑我想要颠覆这样的法律
阅读全文
事件驱动的架构模式-云原生架构设计快速入门
摘要:事件驱动的架构由生成事件流的事件生成者和侦听事件的事件使用者组成 。 事件可几乎实时发送,因此使用者可在事件发生时立即做出响应。 生成者脱离使用者 — 生成者不知道哪个使用者正在侦听。 使用者之间也能彼此脱离,且每个使用者都能看到所有事件。 这与使用者竞争模式不同,在此模式中,使用者从队列中拉取消息
阅读全文
N 层体系架构模式-云原生架构设计快速入门
摘要:N 层体系结构将应用程序分成 逻辑层 和 物理层级。 层是分离职责和管理依赖关系的方式。 每个层都有特定的责任。 较高层可使用较低层中的服务,反之则不行。 层在物理上是分隔开的,在不同的计算机上运行。 一个层可直接调用另一个层,或使用异步消息传递(消息队列)。 虽然每个层可能托管在自己的层中,但这并
阅读全文
防腐层设计模式-常用的架构设计原则
摘要:在不共享相同语义的不同子系统之间实施外观或适配器层。 此层转换一个子系统向另一个子系统发出的请求。 使用此模式可确保应用程序的设计不受限于对外部子系统的依赖。 此模式最先由 Eric Evans 在 Domain-Driven Design(域驱动的设计)中描述。 上下文和问题 大多数应用程序依赖于
阅读全文
隔离模式-常用的架构设计原则
摘要:隔离模式是一种容错能力的应用程序设计。 在隔离体系结构中,应用程序的元素隔离到池中,这样,如果一个应用程序发生故障,其他元素将继续工作。隔离模式理念类似船隔离设计意思,比如船体受到破坏,只有受损的分段才会进水,从而可以防止船只下沉。 上下文和问题 基于云的应用程序可以包含多个服务,其中每个服务具有一
阅读全文
代理模式-常用的架构设计原则
摘要:创建代理客户服务或应用程序发送网络请求的协助程序服务。 代理服务可以看作是与客户端置位于同一位置的进程外代理。 此模式可用于以一种与语言无关的方式承载常见客户端连接任务,如监视、记录、路由、安全(如 TLS)和复原模式。 它通常用于旧版应用程序或其他很难修改的应用程序,以扩展其网络功能。 它还可以使
阅读全文
重试模式-常用的架构设计原则
摘要:当应用程序尝试连接到服务或网络资源时,使应用程序能够通过以透明方式重试失败的操作来处理临时故障。 这可以提高应用程序的稳定性。 上下文和问题 与在云中运行的元素进行通信的应用程序必须能够敏感地察觉到此环境中可能会出现的暂时性错误。 这类故障包括组件和服务瞬间断开网络连接、服务暂时不可用,或者当服务繁
阅读全文
断路器模式-常用的架构设计原则
摘要:连接到远程服务或资源时处理故障,此类故障所需恢复时间不定。 这可以提高应用程序的稳定性和复原能力。 上下文和问题 在分布式环境中,对远程资源和服务的调用可能会由于临时性故障(如网络连接缓慢、超时、资源过载或资源暂时不可用)而失败。 这些故障通常会在短时间内自行更正,而且,应该会准备一个可靠的云应用程
阅读全文
浙公网安备 33010602011771号