一个大型系统有哪些组件构成?

一个大型系统有哪些组件构成?

系统设计往往有很多相似之处,但是细节的地方都是独一无二的。那我们可以把系统设计中这些相似的地方抽离出来作为基础组件,让系统设计变成搭积木。接下来,我会把一个系统设计中可以抽离出哪些通用的组件列举出来。然后一一分析阐述。

域名系统(Domain Name System)

各种不同的计算机都能够在互联网的世界被发现。那每个设备都需要唯一的标识码,不然这些计算机就都乱套了。因此域名系统的作用就是这个,为互联网的设备设计分层和分布式的命名系统。每一个大型系统也会在域名系统中有自己的一席之地。

负载均衡(Load Balance)

一个系统为了扛住大的访问量,那肯定不止一台服务器,所以,如何公平的分配流量到多台服务器,甚至绕开有故障的服务器,这就需要负载均衡了。

数据库(Database)

这个不用多说,数据库让我们有了存储,检索,修改,和删除数据的能力。后面我们会讨论关于数据库的副本,分区和分布式数据库的分析。

键值对存储(Key-Value Store)

这是一个非关系型数据库,那为什么还需要一个键值对存储呢?后面,我们将具体解释键值存储的设计以及实现可扩展性、耐用性和可配置性等重要概念。

内容分发网络(Content Delivery Network)

CDN的主要作用是为了高效率,低延迟的分发内容,例如图片,视频,音频还有一些网页静态资源等等。

定序器(Sequencer)

无论是我们的请求,还是各种数据都需要一个唯一ID。那定序器就是为了生产随机的唯一ID,并且是全局唯一。

服务监控(Service Monitoring)

监控系统对分布式系统至关重要,因为它有助于分析系统,并在出现问题时发出警报。监控系统通常对预警系统非常有用,这样系统管理员就能在即将发生的问题变成大问题之前采取行动。在这里,我们将建立两个监控系统,一个用于服务器端,另一个用于客户端错误。

分布式缓存(Distributed Caching)

分布式缓存能够协调存储频繁访问的数据或者用作分布式锁等等。

分布式消息队列(Distributed Messaging Queue)

分布式消息队列帮助生产者和消费者分离,从而提升课扩展性和可靠性。

发布-订阅系统(Publish-Subscribe System)

发布-订阅系统是一个异步的服务-服务之间关联的系统。这个系统在微服务架构,数据处理系统中非常受欢迎。

访问限制(Rate Limiter)

该系统用于根据预定义的限制来节流对服务的传入请求。它通常用作服务的防御层,以避免服务被过度使用。

Blob 存储

这个存储区别于Database,Blob主要用于存储多文件和二进制可执行文件等等等。

分布式查找(Distributed Search)

搜索系统接收用户的查询,并在几秒钟或更短时间内返回相关内容。

分布式日志(Distributed Logging)

日式是一个I/O频繁且耗时的操作。分布式日志目的就是为了高效的记录这些日志。并且日志系统易于扩展和可靠性高。

分布式任务计划(Distributed Task Scheduling)

我们将设计一个分布式任务调度系统,在任务和资源之间进行调解。它能智能地为任务分配资源,以实现任务级和系统级目标。它通常用于卸载后台处理,以异步方式完成。

分片计数器(Sharded Counters)

该计数器用于解决百万兵法的读写请求,比如文章点赞系统。

需求分类

功能需求:是指设计系统的用户能够使用的功能。例如,系统将允许用户使用搜索栏搜索内容。
非功能性需求(NFR):非功能性需求是系统用户认为系统可用的标准。非功能需求可能包括高可用性、低延迟、可扩展性等要求。

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

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

相关文章

基于RT-Thread(RTT)的HAL库+ADC+DMA多通道采集

前言 在使用到RTT的ADC设备框架进行AD的多通道采集时,发现数据会跳变,觉得可能是没有加DMA的缘故,但RTT好像没有对应的DMA接口函数(或者我没找到),故尝试不使用RTT的ADC设备框架,直接使用HAL库…

指针详解(3)

各位少年,大家好,我是博主那一脸阳光,今天介绍 二级指针 指针数组,还有个指针数组模拟二维数组。 前言:在浩瀚的C语言编程宇宙中,指针犹如一把打开内存世界大门的独特钥匙,它不仅是理解程序运行…

实时聊天系统

这个系统可以用于网站的即时通讯,比如客服系统、在线社区等。这个功能不仅对用户友好,而且也是检验技术实现能力的一个很好的案例。 ### 功能概述 该系统允许用户在网站上实时发送和接收消息。为了保持实时性,我们将使用PHP进行服务器端的逻…

React Hooks 学习笔记

1.useState() 实现对页面数据的存储,当数据改变时候,自动触发render函数 2.useRef 用来解决两个问题: 1).是获取DOM元素或子组件的实例对象 2).存储渲染周期之间共享的数据 3.useEffect 4.useLayoutEffect 5…

CUDA Cpp正电子发射断层扫描仪校准和图像重建—蒙特卡洛3D伊辛模型

要点 GPU对比CPU计算正弦和:使用单CPU、使用OpenMP库和CUDACUDA并行计算:3D网格运行内核:线程块,线程线性处理3D数组,并行归约,共享内存,矩阵乘法/平铺矩阵乘法,基本线性代数子程序…

Javaweb之SpringBootWeb案例之 @ConfigurationProperties的详细解析

4.3 ConfigurationProperties 讲解完了yml配置文件之后,最后再来介绍一个注解ConfigurationProperties。在介绍注解之前,我们先来看一个场景,分析下代码当中可能存在的问题: 我们在application.properties或者application.yml中配…

图论练习2

内容:路径计数DP,差分约束 最短路计数 题目大意 给一个个点条边的无向无权图,问从出发到其他每个点的最短路有多少条有自环和重边,对答案 解题思路 设边权为1,跑最短路 表示的路径数自环和重边不影…

WPS Office18.7软件日常更新

【应用名称】:WPS Office 【适用平台】:#Android 【软件标签】:#WPS 【应用版本】:18.6.1➡18.7 【应用大小】:160MB 【软件说明】:软件日常更新。WPS Office是使用人数最多的移动办公软件。独有手机阅读模…

正点原子--STM32定时器学习笔记(1)

这部分是笔者对基本定时器的理论知识进行学习与总结!,主要记录自己在学习过程中遇到的重难点,其他一些基础点就一笔带过了! 1. 定时器概述 1.1 软件定时原理 使用纯软件(CPU死等)的方式实现定时&#xf…

GetBuffer() 与 ReleaseBuffer() 使用详解

GetBuffer() 与 ReleaseBuffer() 使用详解 大家好,我是免费搭建查券返利机器人赚佣金就用微赚淘客系统3.0的小编,也是冬天不穿秋裤,天冷也要风度的程序猿!今天,我们将深入研究在编程中常用的GetBuffer()与ReleaseBuff…

机器学习_15_贝叶斯算法

文章目录 1 贝叶斯定理相关公式2 朴素贝叶斯算法2.1 朴素贝叶斯算法推导2.2 朴素贝叶斯算法流程 3 高斯朴素贝叶斯4 伯努利朴素贝叶斯5 多项式朴素贝叶斯6 贝叶斯网络6.1 最简单的一个贝叶斯网络6.2 全连接贝叶斯网络6.3 “正常”贝叶斯网络6.4 实际贝叶斯网络:判断…

算法学习——华为机考题库5(HJ31 - HJ35)

算法学习——华为机考题库5(HJ31 - HJ35) HJ31 单词倒排 描述 对字符串中的所有单词进行倒排。 说明: 1、构成单词的字符只有26个大写或小写英文字母; 2、非构成单词的字符均视为单词间隔符; 3、要求倒排后的单…

LeAPI 后端接口开发 - 发布、下线接口

一、上线接口(仅管理员) 1. 校验请求参数 2. 判断(测试)接口是否可以调用 引入调用接口的客户端(自己写的 SDK)注入客户端实例调用接口 3. 修改数据库中接口的状态 /*** 上线(发布&#xff…

机器视觉培训机构的保就业可信吗?就业不了退款是真的吗?

显然是不可能的。某些机器视觉培训机构为了取信于人,请来保险公司再出一份保单,对学员未来的就业薪资承保,如在某机器视觉培训机构培训后就业薪资低于12000元,由某保险公司理赔学员全部培训费用。这种取信于人的操作,我…

爬虫(二)

1.同步获取短视频 1.只要播放地址对Json数据解析,先把列表找出: 2.只想要所有的播放地址,通过列表表达式循环遍历这个列表拿到每个对象,再从一个个对象里面找到Video,再从Video里面找到播放地址(play_addr),再从播放地址找到播放…

动态内存管理 智能指针 shared_ptr、unique_ptr、weak_ptr + 定制删除器

动态内存管理常出现的两种问题: 1.忘记释放内存,造成内存泄漏 2.这块内存还有其他指针指向的情况下,就释放了它,会产生引用非法内存的指针,例如 如果类中有属性指向堆区,做赋值操作时会出现浅拷贝的问题 内存泄漏分…

在jetbrains IDEA/Pycharm/Android Studio中安装官方rust插件,开始rust编程

在idea插件市场搜索rust:JetBrains Marketplace ,就可以找到rust插件: jetbrains官方rust插件地址:[Deprecated] Rust - IntelliJ IDEs Plugin | Marketplace 直接在idea中搜索rust好像是搜不到的: 需要在这个插件市场…

【数据结构】二叉树链式结构的实现

简单不先于复杂,而是在复杂之后。 文章目录 1. 二叉树链式结构的实现1.1 前置说明1.2 二叉树的遍历1.2.1 前序、中序以及后序遍历1.2.2 层序遍历 1.3 节点个数以及高度等1.4 二叉树基础oj练习1.5 二叉树的创建和销毁 1. 二叉树链式结构的实现 1.1 前置说明 在学习二…

Cambalache in Ubuntu

文章目录 前言apt install flatpak这很ok后记 前言 gtkmm4相比gtkmm3有很多改革, 代码也干净了许多, 但在windows上开发 有ui设计器那自然方便很多, 但glade又不支持gtkmm4, windows上装Cambalache很是困难. 各种问题都找不到答案.于是 我用VMware虚拟机Ubuntu20.xx安装Cambal…

macOS虚拟机安装全过程的详细教程

macOS虚拟机安装全过程的详细教程 一、安装虚拟机软件 选择软件:首先,你需要选择一个适合macOS的虚拟机软件。在本教程中,我们以VirtualBox为例。下载与安装:访问VirtualBox的官网,下载适用于macOS的安装包。运行安装…