系统中非功能性需求的思考
概要
设计系统时不仅要考虑功能性需求,还要考虑一些非功能性需求,比如:
- 扩展性
- 可靠性和冗余
- 安全和隐私
- 服务依赖
- SLA要求
下面对这5项需要考虑的事项做个简单的说明
1. 可扩展性
数据量增长如何扩展?
流量增长如何扩展?
业务功能增长如何扩展?
你的系统最少需要多少资源?你应该做好高利用率的打算,并且要知道使用过多的资源可能会阻碍服务的扩展。
同时还要考虑当前的硬件支持状况:添加更多的资源可能比预料的时间多得多,或者成本太过昂贵。
2. 可靠性和冗余
如何处理瞬间突发错误,比如临时中断等情况?
如何发现数据存储中的数据损坏或丢失?
有哪些因素会造成数据丢失?比如用户操作错误、程序漏洞、数据库故障。
如何应对数据丢失,数据丢失有什么影响?数据丢失如何修复,在恢复之间会发生什么?
如果只丢失了部分数据,你能继续提供服务吗?
3. 安全和隐私
列出所有已知的漏洞和潜在的不安全依赖关系。
考虑可能潜在的攻击,如何预防或缓解攻击?
考虑是否有可能泄露隐私数据的可能,如何应对?
如果出于某种原因,你的应用程序没有考虑安全或隐私,需要明确说明原因。
4. 服务依赖
应用程序启动时必须要依赖哪些服务?
如果你依赖的其他服务在一段时间内不可用,会发生什么情况?
引入的服务是否存在循环依赖,即依赖环?比如你依赖服务A,服务A依赖服务B,服务B依赖你的服务。
5. SLA 要求
有什么机制可以审计和监控应用程序的服务等级保证(SLG)?
你如何保证承诺的可靠性水平?
相关文章:
系统中非功能性需求的思考
概要 设计系统时不仅要考虑功能性需求,还要考虑一些非功能性需求,比如: 扩展性可靠性和冗余安全和隐私服务依赖SLA要求 下面对这5项需要考虑的事项做个简单的说明 1. 可扩展性 数据量增长如何扩展? 流量增长如何扩展…...
力扣第215题“数组中的第K个最大元素”
在本篇文章中,我们将详细解读力扣第215题“数组中的第K个最大元素”。通过学习本篇文章,读者将掌握如何使用快速选择算法和堆排序来解决这一问题,并了解相关的复杂度分析和模拟面试问答。每种方法都将配以详细的解释,以便于理解。…...
java.util.function实现原理和Java使用场景【Function、Predicate集合转换过滤,BiConsumer事件处理】
简介 java.util.function 是 Java 8 引入的一个功能包,它包含了多种函数式接口的定义,使得在 Java 中进行函数式编程变得更为方便。下面我将分别介绍 java.util.function 的作用、实现原理、常用 Java 使用场景以及代码示例。 作用 java.util.function 的主要作用是为 Jav…...
《每天5分钟用Flask搭建一个管理系统》 第6章:数据库集成
第6章:数据库集成 6.1 数据库的选择和配置 在Flask中集成数据库,首先需要选择一个数据库系统。常见的选择包括SQLite、MySQL、PostgreSQL等。选择后,需要配置数据库连接字符串。 示例代码:配置数据库 from flask import Flask…...
pandas读取和处理Excel文件的基础应用1
Pandas如何读取Excel文件并处理数据 引言: Pandas是一种常用的数据处理和分析工具,它提供了丰富的函数和方法,方便用户对数据进行清洗、转换和分析。在实际工作中,我们经常需要处理Excel格式的数据文件,本文将介绍如何…...
electron vite react 创建一个项目
要使用 Electron、Vite 和 React 创建一个项目,你可以按照以下步骤操作: 1. 安装 Node.js 和 npm 首先,确保你的计算机上安装了 Node.js 和 npm(Node Package Manager)。你可以从 Node.js 官网 下载并安装。 2. 初始化一个新的项目 在你的工作目录下,创建一个新的文件…...
鸿蒙使用 @Builder扩展出来的布局数据更新没法更新UI
由于业务的复杂,所以我们把相关UI抽离出来。但是数据变化了,没法更新UI Builder MyGridLayout() { } 通过日志打印发现数据的确是更新了,但是UI就没没办法,如何解决呢 Entry Component struct Page35 {// State sArray: bool…...
湖南省教育网络协会莅临麒麟信安调研教育网络数字化建设及教育信创发展情况
6月28日下午,湖南省教育网络协会理事长张智勇、秘书长刘志勇、副理事长黄旭、胡洪波、周中伟等协会相关负责人一行莅临麒麟信安,就湖南省教育网络数字化建设、教育信创工作等主题进行深入调研。麒麟信安副总裁王攀热情接待。 协会成员一行来到麒麟信安展…...
论文阅读_优化RAG系统的检索
英文名称: The Power of Noise: Redefining Retrieval for RAG Systems 中文名称: 噪声的力量:重新定义RAG系统的检索 链接: https://arxiv.org/pdf/2401.14887.pdf 作者: Florin Cuconasu, Giovanni Trappolini, Federico Siciliano, Simone Filice, Cesare Campag…...
STC8/32 软硬件I2C通讯方式扫描I2C设备地址
STC8/32 软硬件I2C通讯方式扫描I2C设备地址 📄主要用于检测挂载在I2C总线上的设备。在驱动I2C设备之前,如果能扫描到该设备,说明通讯设备可以连接的上,在提前未知I2C地址的情况下,可以方便后面的驱动代码的完善。 🔬扫描测试效果:(测试mpu6050以及ssd1306 i2c oled )…...
Linux——数据流和重定向,制作镜像
1. 数据流 标准输入( standard input ,简称 stdin ):默认情况下,标准输入指从键盘获取的输入 标准输出( standard output ,简称 stdout ):默认情况下,命令…...
Windows 11的市场份额越来越大了,推荐你升级!
7月1日,系统之家发布最新数据,显示Windows 11操作系统的市场份额正在稳步上升。自2021年10月Windows 11发布以来,Windows 10一直占据着市场主导地位,当时其市场份额高达81.44%。然而,随着时间的推移,Window…...
微服务架构中的调试难题与分布式事务解决方案
微服务架构作为现代软件开发的一种主要趋势,因其灵活性、高可维护性和易于扩展的特点,得到了广泛的应用。然而,在享受微服务架构带来的诸多优点的同时,开发者也面临着一些新的挑战。调试的复杂性和分布式事务的处理是其中两个较为…...
银行家算法-操作系统中避免死锁的最著名算法
背景 有很多文章都会介绍银行家算法。在百度和CSDN上搜一搜能搜出很多来。很多同学会觉得这个算法很深奥,有些文章写的又很复杂,其实真的很简单。这里简单记录一下基本原理,然后大家再配合其他文章看,就能加深理解。 算法原理 …...
PCL 基于点云RGB颜色的区域生长算法
RGB颜色的区域生长算法 一、概述1.1 算法定义1.2 算法特点1.3 算法实现二、代码示例三、运行结果🙋 结果预览 一、概述 1.1 算法定义 点云RGB区域生长算法: 是一个基于RGB颜色信息的区域生长算法,用于点云分割。该算法利用了点云中相邻点之间的颜色相似性来将点云分割成…...
cube-studio开源一站式机器学习平台,在线ide,jupyter,vscode,matlab,rstudio,ssh远程连接,tensorboard
全栈工程师开发手册 (作者:栾鹏) 一站式云原生机器学习平台 前言 开源地址:https://github.com/tencentmusic/cube-studio cube studio 腾讯开源的国内最热门的一站式机器学习mlops/大模型训练平台,支持多租户&…...
1976 ssm 营地管理系统开发mysql数据库web结构java编程计算机网页源码Myeclipse项目
一、源码特点 ssm 营地管理系统是一套完善的信息系统,结合springMVC框架完成本系统,对理解JSP java编程开发语言有帮助系统采用SSM框架(MVC模式开发),系统具有完整的源代码和数据库,系统主要采用B/S模式开…...
技术派全局异常处理
前言 全局的异常处理是Java后端不可或缺的一部分,可以提高代码的健壮性和可维护性。 在我们的开发中,总是难免会碰到一些未经处理的异常,假如没有做全局异常处理,那么我们返回给用户的信息应该是不友好的,很抽象的&am…...
对于mysql 故障的定位和排查
故障表现 他的执行时间超过规定的限制(比如1000ms)CPU使用率高大量业务失败,数据连接异常执行sql越来越慢,失败越来越多 解决方案 定位 应急 故障恢复 定位 查询慢sql的日志查看mysql 的performance schena(里面…...
什么是电航空插头插座连接器有什么作用
航空插头概述 定义与功能 航空插头,又称航空连接器,是一种专门用于航空领域的电连接器,因其最初在航空领域得到广泛应用而得名。航空插头的主要功能是实现电源或信号的连接,尤其适用于芯数较多、结构复杂的线束连接,…...
变量 varablie 声明- Rust 变量 let mut 声明与 C/C++ 变量声明对比分析
一、变量声明设计:let 与 mut 的哲学解析 Rust 采用 let 声明变量并通过 mut 显式标记可变性,这种设计体现了语言的核心哲学。以下是深度解析: 1.1 设计理念剖析 安全优先原则:默认不可变强制开发者明确声明意图 let x 5; …...
shell脚本--常见案例
1、自动备份文件或目录 2、批量重命名文件 3、查找并删除指定名称的文件: 4、批量删除文件 5、查找并替换文件内容 6、批量创建文件 7、创建文件夹并移动文件 8、在文件夹中查找文件...
线程同步:确保多线程程序的安全与高效!
全文目录: 开篇语前序前言第一部分:线程同步的概念与问题1.1 线程同步的概念1.2 线程同步的问题1.3 线程同步的解决方案 第二部分:synchronized关键字的使用2.1 使用 synchronized修饰方法2.2 使用 synchronized修饰代码块 第三部分ÿ…...
大数据零基础学习day1之环境准备和大数据初步理解
学习大数据会使用到多台Linux服务器。 一、环境准备 1、VMware 基于VMware构建Linux虚拟机 是大数据从业者或者IT从业者的必备技能之一也是成本低廉的方案 所以VMware虚拟机方案是必须要学习的。 (1)设置网关 打开VMware虚拟机,点击编辑…...
【Redis技术进阶之路】「原理分析系列开篇」分析客户端和服务端网络诵信交互实现(服务端执行命令请求的过程 - 初始化服务器)
服务端执行命令请求的过程 【专栏简介】【技术大纲】【专栏目标】【目标人群】1. Redis爱好者与社区成员2. 后端开发和系统架构师3. 计算机专业的本科生及研究生 初始化服务器1. 初始化服务器状态结构初始化RedisServer变量 2. 加载相关系统配置和用户配置参数定制化配置参数案…...
【碎碎念】宝可梦 Mesh GO : 基于MESH网络的口袋妖怪 宝可梦GO游戏自组网系统
目录 游戏说明《宝可梦 Mesh GO》 —— 局域宝可梦探索Pokmon GO 类游戏核心理念应用场景Mesh 特性 宝可梦玩法融合设计游戏构想要素1. 地图探索(基于物理空间 广播范围)2. 野生宝可梦生成与广播3. 对战系统4. 道具与通信5. 延伸玩法 安全性设计 技术选…...
Scrapy-Redis分布式爬虫架构的可扩展性与容错性增强:基于微服务与容器化的解决方案
在大数据时代,海量数据的采集与处理成为企业和研究机构获取信息的关键环节。Scrapy-Redis作为一种经典的分布式爬虫架构,在处理大规模数据抓取任务时展现出强大的能力。然而,随着业务规模的不断扩大和数据抓取需求的日益复杂,传统…...
沙箱虚拟化技术虚拟机容器之间的关系详解
问题 沙箱、虚拟化、容器三者分开一一介绍的话我知道他们各自都是什么东西,但是如果把三者放在一起,它们之间到底什么关系?又有什么联系呢?我不是很明白!!! 就比如说: 沙箱&#…...
Java详解LeetCode 热题 100(26):LeetCode 142. 环形链表 II(Linked List Cycle II)详解
文章目录 1. 题目描述1.1 链表节点定义 2. 理解题目2.1 问题可视化2.2 核心挑战 3. 解法一:HashSet 标记访问法3.1 算法思路3.2 Java代码实现3.3 详细执行过程演示3.4 执行结果示例3.5 复杂度分析3.6 优缺点分析 4. 解法二:Floyd 快慢指针法(…...
yaml读取写入常见错误 (‘cannot represent an object‘, 117)
错误一:yaml.representer.RepresenterError: (‘cannot represent an object’, 117) 出现这个问题一直没找到原因,后面把yaml.safe_dump直接替换成yaml.dump,确实能保存,但出现乱码: 放弃yaml.dump,又切…...
