架构师应知必会的缩写大全

架构师应知必会的缩写大全

本文转自 公众号 ByteByteGo,如有侵权,请联系,立即删除

CAP、BASE、SOLID、KISS,这些缩写词是什么意思?

下图解释了系统设计中常见的缩写词。

img

CAP

CAP 定理指出,任何分布式数据存储都只能提供以下三种保证中的两种:

  1. 一致性 - 每次读取都会收到最近的写入或错误。
  2. 可用性 - 每个请求都会收到响应。
  3. 分区容忍度 - 系统在网络故障时仍能继续运行。

然而,有人批评这一定理对分布式系统来说过于狭隘,我们不应该用它来对数据库进行分类。在分布式系统中,网络故障是一定会发生的,我们必须在任何分布式系统中解决这个问题。

您可以在 Martin Kleppmann 撰写的《请停止将数据库称为 CP 或 AP》一文中相关内容。

BASE

关系数据库中使用的 ACID(原子性-一致性-隔离-持久性)模型对于 NoSQL 数据库来说过于严格。BASE 原则提供了更大的灵活性,选择了可用性而非一致性。它指出,状态最终将是一致的。

SOLID

SOLID 原则在 OOP 中相当有名。它有 5 个组成部分。

  1. SRP(Single Responsibility Principle, 单一责任原则) 每个代码单元只有一个责任。
  2. OCP(Open Close Principle, 开放关闭原则) 代码单元应可扩展,但不可修改。
  3. LSP(Liskov Substitution Principle, 利斯科夫替换原则) 子类应能被基类替代。
  4. ISP(Interface Segregation Principle, 接口隔离原则) 公开多个具有特定职责的接口。
  5. DIP(Dependency Inversion Principle, 依赖反转原则) 使用抽象概念来解除系统中的依赖关系。

KISS

"保持简单,傻瓜!"是美国海军在 1960 年首次提出的设计原则。它指出,大多数系统如果保持简单,就能达到最佳效果。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.hqwc.cn/news/444558.html

如若内容造成侵权/违法违规/事实不符,请联系编程知识网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

代码随想录Day37 | 738.单调递增的数字 968.监控二叉树

代码随想录Day37 | 738.单调递增的数字 968.监控二叉树 738.单调递增的数字968.监控二叉树 738.单调递增的数字 文档讲解:代码随想录 视频讲解: 贪心算法,思路不难想,但代码不好写!LeetCode:738.单调自增的数字 状态 本…

QWT开源库使用

源代码地址:Qwt Users Guide: Qwt - Qt Widgets for Technical Applications Qwt库包含GUI组件和实用程序类,它们主要用于具有技术背景的程序。除了2D图的框架外,它还提供刻度,滑块,刻度盘,指南针&#xf…

oracle数据回滚导致业务性能问题排查

问题描述 数据库出现性能问题,应用响应超时持续长达10多分钟。由于每秒有大量insert,业务实时敏感性较高,而且每天凌晨会对前一天的数据进行归档也就是insert进历史表格,原表数据会进行delete清理(数据量每天300W左右…

C语言指针学习(1)

前言 指针是C语言中一个重要概念,也是C语言的一个重要特色,正确而灵活地运用指针可以使程序简洁、紧凑、高效。每一个学习和使用C语言的人都应当深入的学习和掌握指针,也可以说不掌握指针就没有掌握C语言的精华。 一、什么是指针 想弄清楚什…

11. UE5 RPG使用GameplayEffect修改角色属性(二)

上一篇写了一下GameplayEffect的基础操作,这一篇进阶一下,讲解一下GameplayEffect堆叠功能,以及能够基于这个堆叠能够实现一些怎样的效果。 经过几天的查看,发现新版的更新的真不错,而且最上面竟然直接显示编译的错误…

【SpringBoot】SpringBoot的自动配置原理

📝个人主页:五敷有你 🔥系列专栏:SpringBoot ⛺️稳重求进,晒太阳 自动配置 啥叫自动配置呢?简单说就是springboot根据我们开发者的行为猜测你要做什么事情,然后把你要用的bean都给你准备…

vue3使用is动态切换组件报错Vue received a Component which was made a reactive object.

vue3使用is动态切换组件,activeComponent用ref定义报错 Vue received a Component which was made a reactive object. This can lead to unnecessary performance overhead, and should be avoided by marking the component with markRaw or using shallowRef ins…

【Linux】初始进程地址空间

最近,我发现了一个超级强大的人工智能学习网站。它以通俗易懂的方式呈现复杂的概念,而且内容风趣幽默。我觉得它对大家可能会有所帮助,所以我在此分享。点击这里跳转到网站。 目录 一、再谈fork二、程序地址空间2.1代码验证 三、虚拟地址&am…

数据结构+算法(第05篇):数组和链表

作者简介:大家好,我是smart哥,前中兴通讯、美团架构师,现某互联网公司CTO 联系qq:184480602,加我进群,大家一起学习,一起进步,一起对抗互联网寒冬 学习必须往深处挖&…

前端工程化之:webpack1-8(loader)

一、loader webpack 做的事情,仅仅是分析出各种模块的依赖关系,然后形成资源列表,最终打包生成到指定的文件中。 更多的功能需要借助 webpack loaders (加载器)和 webpack plugins (插件)完成。 webpack loader : loader 本质上是…

数据结构哈希表(散列) 之Hash

声明: 此文章仅限于记录学习之用 , 受限于自身水平和理解能力 , 因此结论可能是不正确的. 如果您需要学习,建议参考其他文章 看了下网上一些大佬的教程, 写的云山雾绕的. 简单总结下吧. 以言简意赅为主. 介绍下hash hash 就是把任意输入通过算法生成一个int值. 这个值就是放…

如何使用 Supabase Auth 在您的应用程序中设置身份验证

在本文中,您将学习基本的关键概念,这些概念将帮助您掌握身份验证和授权的工作原理。 您将首先了解什么是身份验证和授权,然后了解如何使用 Supabase auth 在应用程序中实现身份验证。 (本文内容参考:java567.com&…