随笔分类 - 架构设计类与算法
数据结构系列-树
摘要:树是一种重要的非线性数据结构,直观地看,它是数据元素(在树中称为结点)按分支关系组织起来的结构,很象自然界中的树那样。树结构在客观世界中广泛存在,如人类社会的族谱和各种社会组织机构都可用树形象表示。树在计算机领域中也得到广泛应用,如在编译源程序如下时,可用树表示源源程序如下的语法结构。又如在数据库系
阅读全文
虚拟内存-linux快速入门教程
摘要:1. 简介 虚拟内存允许进程使用计算机上物理上可用的更多内存。 在本教程中,我们将详细介绍虚拟内存基础知识。我们将介绍两个关键的虚拟内存实现,即暂存和分页。最后,我们将比较它们。 2. 基础知识 虚拟内存将物理内存(随机存取内存,RAM)与逻辑内存分开。它基于一个属性,即在任何时候都必须将进程的一部
阅读全文
微服务架构十大设计模式详解
摘要:微服务设计模式: 分解 接口网关 聚合 链式或责任链 异步消息传递 数据库或共享数据 事件溯源 分支 命令查询责任隔离器 断路器 微服务架构已成为现代应用程序开发的实际选择。虽然它解决了我们开发中不少问题,但它并不是完美无瑕,也是有不少缺点。在使用此架构时,必须解决注意采用不同手段来解决好这些问题。
阅读全文
微服务架构的流行设计模式
摘要:几十年来,应用程序一直使用整体架构构建;但是,许多人现在正在转向微服务架构。微服务架构为我们提供了更快的开发速度、可扩展性、可靠性、使用适合的最佳技术堆栈开发每个组件的灵活性等等。微服务架构依赖于可独立部署的微服务。每个微服务都有自己的业务逻辑和数据库,由特定的域上下文组成。每个服务的测试、增强和缩
阅读全文
微服务概念快速了解
摘要:近几年来,“微服务体系结构”这个术语出现了,它描述了将软件应用程序设计为可独立部署的服务套件的特定方式。尽管这种架构风格没有确切的定义,但围绕业务能力,自动化部署,智能终端以及数据的分散控制等方面存在着某些共同特征。 “微服务” - 这一个在软件架构拥挤的街道上的又一个新名词。尽管我们的自然倾向是以
阅读全文
关系型数据库的分片原则
摘要:来自Citus的Ozgun Erdogan分享了进行数据库分片的三个原则,并强调应用类型是决定数据库分片最主要的因素。其中B2B类型的应用最容易进行数据库分片。 在数据库很小的时候,可以很容易地通过添加硬件来扩展数据库。但随着数据表数量的不断增长,我们需要寻找其他的方式来伸缩数据库。 分片是伸缩数据
阅读全文
Java 9 变量句柄揭秘-Java快速进阶教程
摘要:1. 简介 Java 9为开发人员带来了许多新的有用功能。 其中之一是java.lang.invoke.VarHandleAPI - 表示变量句柄 - 我们将在本文中探讨。 2. 什么是可变手柄? 通常,变量句柄只是对变量的类型化引用。变量可以是类的数组元素、实例或静态字段。 类在特定条件下提供对变
阅读全文
架构设计系列-前端模式的后端(BFF)翻译PhilCalçado
摘要:本文翻译自PhilCalçado的官网:https://philcalcado.com/2015/09/18/the_back_end_for_front_end_pattern_bff.html 对我们的架构演变保持透明是我们技术战略的一部分。我们在无数场合谈过的但从未真正详细描述过的东西是我们应
阅读全文
分布技术杂谈
摘要:CORBA,RMI/IIOP,COM+,XML-RPC ,SOAP简介 CORBA(Common Object Request Broker Architecture,通用对象请求代理架构)CORBA标准由对象管理组织(OMG)设立并进行控制,CORBA定义了一系列API,通信协议,和对象/服务信息
阅读全文
领域驱动设计-有界上下文
摘要:本文译自马丁福勒的文章“BoundedContext”https://martinfowler.com/bliki/BoundedContext.html 有界上下文是领域驱动设计的核心模式。这是 DDD 战略设计部分的重点,即处理大型模型和团队。DDD 通过将大型模型划分为不同的有界上下文并明确它
阅读全文
微服务架构中的数据库设计
摘要:1. 简介 微服务架构在不断发展。它带来了很多好处,尤其是相对于过时的单体架构。另一方面,使用微服务开发项目时存在多种挑战。最重要的问题之一是数据库设计。在数据设计方面,有两个关键问题。如何组织数据以及在哪里存储数据? 在本教程中,我们将尝试回答它们。 2. 每个服务的数据库 使用微服务体系结构时,
阅读全文
事件风暴
摘要:本文译自事件风暴提出编写文件:http://ziobrando.blogspot.com/2013/11/introducing-event-storming.html 免责声明:这是关于 EventStorming 的开创性文章。这是一切开始的地方,所以我认为保留原件是相关的。同时, 自从我写这篇
阅读全文
LiveJournal发展历程
摘要:因近期打算对公司应用架构进行调整, 其中的一些思路值得借鉴. 以下为转载内容: 一、LiveJournal发展历程 LiveJournal是99年始于校园中的项目,几个人出于爱好做了这样一个应用,以实现以下功能: 博客,论坛社会性网络,找到朋友聚合,把朋友的文章聚合在一起 LiveJournal采用
阅读全文
面向对象三大基本特性,五大基本原则
摘要:透切理解面向对象三大基本特性是理解面向对象五大基本原则的基础. 三大特性是:封装,继承,多态 所谓封装,也就是把客观事物封装成抽象的类,并且类可以把自己的数据和方法只让可信的类或者对象操作,对不可信的进行信息隐藏。封装是面向对象的特征之一,是对象和类概念的主要特性。 简单的说,一个类就是一个封装了数
阅读全文
REST 架构-架构快速进阶教程
摘要:1. 简介 REST 是一种软件架构风格,它依赖于描述如何定义和访问资源的规则。很难想象没有RESTful API的现代互联网。在本文中,我们将深入探讨 REST 和相关 HTTP 概念。 2. REST 架构 正如我们提到的,REST是一种软件架构风格。另一方面,它不是标准化的(如SOAP)。它在
阅读全文
DRY 软件设计原则-架构快速进阶教程
摘要:1. 概述 在本教程中,我们将了解 DRY 软件设计原理。 2. 定义 DRY 代表 不要重复自己。这是一个软件开发原则,目标是消除逻辑重复。 DRY 最初是在《The Pragmatic Programmer》一书中引入的,它确保特定逻辑在代码库中只出现一次。 3. 一个例子 例如,编写一个包含特
阅读全文
面向对象设计的 SOLID 原则-架构快速进阶教程
摘要:1. 概述 在本教程中,我们将讨论面向对象设计的 SOLID 原则。 首先,我们将从探索它们出现的原因以及为什么我们在设计软件时应该考虑它们开始。然后,我们将概述每个原则以及一些示例代码。 2. SOLID 原则的原因 SOLID 原则是由 Robert C. Martin 在他 2000 年的论文
阅读全文
KISS软件设计原理-架构快速进阶教程
摘要:1. 概述 在本教程中,我们将了解 KISS 软件设计原理。 2. 定义 KISS 代表保持简单。该软件设计原则指出,设计、解决方案、系统和产品如果保持简单,效果最好。 这意味着我们应该偏爱简单而不是复杂性,并尽可能避免复杂性。 3. 为什么要使用KISS? 在我们的代码中遵循 KISS 原则的原因
阅读全文
领域驱动架构设计之命令查询职责分离
摘要:本文译自Martin Flower的文件:https://martinfowler.com/bliki/CQRS.html QRS 代表命令查询职责分离。这是我第一次听到Greg Young描述的模式。其核心概念是,您可以使用与用于读取信息的模型不同的模型来更新信息。在某些情况下,这种分离可能很有价
阅读全文
一致性哈希的基本概念
摘要:一致性哈希算法在1997年由麻省理工学院提出的一种分布式哈希(DHT)实现算法,设计目标是为了解决因特网中的热点(Hot spot)问题,初衷和CARP十分类似。一致性哈希修正了CARP使用的简单哈希算法带来的问题,使得分布式哈希(DHT)可以在P2P环境中真正得到应用。 一致性hash算法提出了在
阅读全文
浙公网安备 33010602011771号