玩转云计算:教你在Akamai Linode上构建IT架构—确定需求

时至今日,选择以云计算方式来运维业务,已经成为大部分情况下的最优选。那么如果要从零开始开发一个新应用,并依托云平台来设计、开发、部害和远维,具体该从何处下手?这一系列文章将介绍如何基于Akamai Linode平台实现这个目标。

如果现在需要从零开始开发一个新应用,那么直接选择依托云平台来设计、开发、部署和运维,这无疑是最好的方式。不过到底该从何处下手?这篇文章就是你所需要的。

非功能性需求是什么

在系统工程和需求工程中,非功能性需求(NFR,Non-Functional Requirement)是一种规定了可用于判断系统运行标准而非具体行为的需求。它们与定义具体行为或功能的功能性需求不同。功能性需求的实施计划通常会在系统设计中有着详细规定。非功能性需求的实施计划往往在系统架构中进行详细说明,因为它们通常是对架构有重要意义的需求。

广义上,功能性需求定义了系统应该做什么,而非功能性需求则定义了系统应该是怎样的。功能性需求通常采用“系统应做(system shall do)<某项需求>”的形式,即系统的单个动作或部分,也许可以明确地用数学函数、黑盒描述输入、输出、流程和控制功能模型或IPO模型来表示。与此相反,非功能性需求的形式是“系统应是(system shall be)<某项需求>”,是系统作为一个整体或一个特定方面的整体属性,而不是具体的功能。系统的整体特性通常决定着开发项目的成败。

非功能性需求通常被称为系统的“质量属性”。此类需求通常也可以使用其他术语来称呼,例如“质量”、“质量目标”、“服务质量需求”、“约束”、“非行为需求”或“技术需求”等。质量(即非功能性需求)可分为两大类:

  1. 在运行过程中(运行时)可观察到的执行质量,如安全性、保密性和可用性。
  2. 演进特性,如可测性、可维护性、可扩展性和可伸缩性,这些特性往往体现在系统的静态结构中。

我们必须以具体、可衡量的方式阐述非功能性需求。

功能性需求是什么

在软件工程和系统工程领域,功能性需求(FR,Functional Requirement)定义了系统或其组件的功能,其中功能可被描述为输入和输出之间的行为规范。

功能性需求可能涉及计算、技术细节、数据操作和处理,以及定义系统应该完成的其他具体功能。行为需求描述了系统使用功能性需求的所有情况,这些情况被记录在用例中。功能性需求由非功能性需求(也称为“质量需求”)支撑,非功能性需求对设计或实现施加限制(如性能需求、安全性或可靠性)。功能性需求的实施计划是系统设计的一部分,而非功能性需求是系统架构的一部分。

根据需求工程学的定义,功能性需求指定了系统的特定结果。这一点应与非功能性需求相对照,后者规定了系统的整体特性,如成本和可靠性。功能性需求驱动系统的应用架构,而非功能性需求则驱动了系统的技术架构。

具体的非功能性需求

  1. 可扩展性:架构必须支持水平扩展,可根据需求动态添加或移除服务器。它应利用自动扩展组和容器编排平台来有效管理资源的分配。
  2. 高可用性:系统的正常运行时间必须至少达到99.999%,采用容错设计模式,如冗余服务器集群、负载均衡器和自动故障切换机制。系统应采用多区域部署,以确保跨地理分布数据中心的高可用性。
  3. 性能:系统应保持最大50毫秒的网络延迟,所有关键操作的平均响应时间应低于100毫秒。系统应优化数据库查询,利用内存缓存,并采用内容分发网络(CDN)进行有效的内容分发。
  4. 安全性:架构必须采用行业标准加密协议(如TLS)和安全密钥管理方法,对数据传输进行端到端加密。应实施细粒度访问控制、双因素身份验证以及入侵检测和防御系统(IDS/IPS),以保护用户数据的安全。
  5. 数据备份和恢复:架构应定期备份用户配置文件、游戏进度和配置数据,通过增量备份和差异技术有效利用存储空间。必须在多个地理位置分散的数据中心实现备份冗余,并采用自动备份完整性验证。
  6. 地域分布:系统应利用全球分布的数据中心,通过内容交付网络(CDN)和边缘计算技术减少网络延迟。系统应采用地域路由技术,将用户引导到最近的数据中心,以最大限度减少网络跳转。
  7. 负载均衡:架构应根据服务器容量、网络延迟和当前工作量等因素采用动态负载均衡算法。应利用智能负载均衡器,在考虑资源利用率指标的同时,将流量均匀分配给可用服务器。
  8. 弹性:系统应根据实时需求,利用自动扩展策略和云提供商特定的扩展功能,动态扩展计算和存储资源。系统应采用基于历史使用模式和预期流量峰值的预测性扩展算法。
  9. 网络性能:架构必须确保较低的数据丢包率(<0.5%),并保持最低100Gbps的网络带宽,以获得最佳传输体验。应利用先进的网络协议和流量优化技术(如拥塞控制、服务质量),最大限度地减少延迟和数据包抖动。
  10. 跨平台兼容性:系统必须在各平台(Windows、macOS、Linux、Xbox、PlayStation、iOS、Android)上提供一致的游戏体验。应支持特定平台的优化(如DirectX、Vulkan),并采用自适应流媒体技术,根据设备能力调整游戏质量。
  11. 内容交付:架构应利用具有边缘缓存功能的全球分布式内容交付网络(CDN)来加速游戏内容的交付。应利用HTTP/2或QUIC协议实现高效内容传输,并采用delta压缩和差异更新技术,以尽量减少游戏更新和补丁时的带宽占用。
  12. 与第三方服务集成:系统应提供文档齐全的API和SDK,以便与支付网关、社交媒体平台和分析工具无缝集成。系统应支持OAuth 2.0,以确保用户身份验证和授权的安全性,并采用异步消息传递协议(如AMQP)进行可靠的服务间通信。
  13. 合规性和法律要求:架构必须符合相关数据保护法规(如GDPR、CCPA)的要求,确保用户同意管理、个人数据匿名化和安全存储实践。
  14. 监控和分析:架构应包括全面的监控和分析框架,以收集实时性能指标、系统日志和用户行为数据。该框架应利用集中式日志系统、分布式跟踪和日志汇总工具来实现高效监控和故障排除。此外,还应采用机器学习算法和异常检测技术来识别潜在的安全威胁和性能瓶颈。
  15. 模块化和可扩展性:架构设计应采用模块化和可扩展的方法,使用微服务和面向服务的架构(SOA)原则。应能利用容器化技术(如Docker)和编排平台(如Kubernetes),无缝集成新游戏、功能和外部服务。系统应便于在不影响整体系统性能或用户体验的前提下单独部署和扩展各组件。

具体的功能性需求

  1. 游戏存储和管理:基础设施应提供可扩展的高效存储解决方案,用于托管游戏文件、补丁、更新和可下载内容。应支持大型文件存储,并提供组织和管理游戏资产的机制。
  2. 内容分发:基础设施应包含内容分发网络(CDN)或类似机制,以便向全球用户分发游戏文件和更新。应确保低延迟和高带宽的内容分发,以获得最佳的用户体验。
  3. 文件压缩和优化:基础设施应包括压缩和优化游戏文件的工具和程序,以在不影响质量的情况下减小文件大小。这有助于最大限度减少带宽需求,缩短下载和安装时间。
  4. 带宽管理:基础设施应有效监控和管理带宽使用情况,确保公平分配,防止高峰期出现拥塞。基础设施应实施流量整形或速率限制机制,以优化网络性能。
  5. 动态扩展:基础设施应支持动态扩展,以适应用户对游戏下载和更新需求的波动。应自动扩展资源,如存储容量和网络带宽,以应对激增的流量并保障快速可靠的文件交付。
  6. 冗余和数据复制:基础设施应实施冗余和数据复制机制,以确保高可用性和数据持久性。应在多个存储节点或数据中心之间复制游戏文件,以降低数据丢失的风险并尽量减少停机时间。
  7. 并行处理:基础设施应利用并行处理技术优化大型游戏文件的分发。应将文件分割成小块并同时分发,以加快下载速度并确保有效利用网络资源。
  8. 文件完整性验证:基础架构应包含在存储和传输过程中验证游戏文件完整性的机制。应使用校验和或其他哈希算法来检测和处理损坏或篡改的文件,确保用户收到无误的游戏内容。
  9. 元数据管理:基础设施应提供强大的元数据管理系统,以存储和检索与游戏文件有关的信息。应支持高效的游戏元数据索引和搜索,使用户能够轻松发现和访问相关游戏内容。
  10. 版本控制和回滚:基础设施应便于对游戏文件和更新进行版本控制和回滚。应能让用户访问以前的游戏版本,并在新版本出现问题时轻松恢复到稳定版本。
  11. 安全文件传输:基础设施应确保通过网络安全地传输游戏文件和更新。应利用加密协议(如SSL/TLS)在传输过程中保护数据,防止未经授权的访问或篡改。
  12. 地域复制和区域缓存:基础设施应支持游戏文件的地域复制和区域缓存,以降低延迟并提高不同地理位置用户的下载速度。基础设施应战略性地将存储节点或缓存服务器放置在用户附近,以便高效地传输内容。
  13. 用户账户存储:基础设施应为用户账户数据(包括个人资料、偏好和游戏库)提供安全、可扩展的存储。应确保快速检索用户特定信息,以便在不同设备上实现个性化体验。
  14. 内容管理API:基础设施应提供应用程序接口,以便与游戏开发商和内容提供商无缝集成。应提供以编程方式上传、管理和分发游戏文件的功能,实现自动内容摄取和更新。
  15. 使用分析和报告:基础设施应包括分析和报告功能,以跟踪使用统计数据,如下载次数、带宽消耗和用户参与游戏内容的情况。应能为改进内容交付策略和优化资源分配提供洞察力。

至此,整个项目的需求已经明确了,而我们的前期“铺垫”也终于全部完成。从本系列的下一篇文章开始,我们将构思整个项目的架构图,并开始深入到写代码的部分。敬请期待!

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

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

相关文章

Java最短路径问题知识点(含面试大厂题和源码)

最短路径问题是图论中的一个经典问题&#xff0c;它寻找图中两点之间的最短路径。这个问题在现实世界中有广泛的应用&#xff0c;比如导航系统中的路线规划、网络中的信息传输等。解决最短路径问题有多种算法&#xff0c;其中最著名的包括&#xff1a; 贝尔曼-福特算法&#xf…

【深度学习】Attention、Self-Attention、Multi-Head Attention

一、Attention 在CV领域&#xff0c;注意力机制通常分为通道注意力和空间注意力或者两者结合。 一张图像经backbone得到的特征通常包括多个通道&#xff0c;每个通道是一个像素矩阵&#xff0c;每个通道对任务的贡献不尽相同&#xff0c;单个通道的特征图中每个像素对任务的贡…

2W 3KVDC 隔离双输出 DC/DC 电源模块——TPD-2W 系列

TPD-2W系列提供双独立输出电压&#xff0c;并且两组电压可以不同&#xff0c;这样就节省一个电源模块&#xff0c;特别适合一块板上有多个不同电压要求的设计&#xff0c;而外形尺寸和TPA一样&#xff0c;工作温度范围广-40℃到 105℃。

K8s: 在Pod里面对容器进行配额管理和相关原理

Pod里面对容器进行配额管理 在生产环境中&#xff0c;内存占用通常很大&#xff0c;如果里面有死循环&#xff0c;会导致内存和cpu过大导致影响其他pod运行资源 需要让资源在受控的环境下运行&#xff0c;一般都是加上 resources limits 的配置才能达到最佳实践 默认cpu是0.5…

LabVIEW连接postgre sql

一、安装ODBC 下载对应postgreSQL版本的ODBC 下载网址&#xff1a;http://ftp.postgresql.org/pub/odbc/versions/msi/ 下载好后默认安装就行&#xff0c;这样在ODBC数据源中才能找到。 二、配置系统DSN 实现要新建好要用的数据库&#xff0c;这里的用户名&#xff1a;postg…

new[]与delete[]

&#xff08;要理解之前关于new,delete的一些概念&#xff0c;看​​​​​​ CSDN&#xff09; 引子&#xff1a; 相比new&#xff0c;new[]不仅仅是个数的增加&#xff0c;还有int大小记录空间的创建&#xff0c; 下图中错误的用模拟多个new来替代new[]&#xff0c;释放步…

tcp网络编程(基础)

目录 一.编程前的一些基础 二.tcp网络编程 1.一个服务器只能有一个客户端连接&#xff08;下面代码&#xff09; Socket.hpp TcpServer.hpp TcpServerMain.cc TcpClientMain.cc 2.一个服务器可以有多个客户端连接&#xff08;多线程&#xff09; 看这篇文章前&#xff0c…

自定义注解+AOP实现日志记录

定义日志表结构 CREATE TABLE sys_oper_log (id bigint NOT NULL AUTO_INCREMENT COMMENT 日志主键,title varchar(50) DEFAULT COMMENT 模块标题,business_type varchar(20) DEFAULT 0 COMMENT 业务类型&#xff08;0其它 1新增 2修改 3删除&#xff09;,method varchar(100…

9.MMD 基础内容总结及制作成品流程

前期准备 1. 导入场景和模型 在左上角菜单栏&#xff0c;显示里将编辑模型时保持相机和光照勾选上&#xff0c;有助于后期调色 将抗锯齿和各向异性过滤勾掉&#xff0c;可以节省资源&#xff0c;避免bug 在分辨率设定窗口&#xff0c;可以调整分辨率 3840x2160 4k分辨率 1…

【python】图形用户界面学习之tkinter

认识tkinter Tkinter是Python中内置的图形用户界面&#xff08;GUI&#xff09;库。它是Tk GUI工具包的接口&#xff0c;可以创建和管理窗口、按钮、标签、文本框等各种GUI组件&#xff0c;并与用户交互。 使用Tkinter&#xff0c;可以创建各种GUI应用程序&#xff0c;如桌面…

QT Webengine开发过程报错qml: Render process exited with code 159 (killed)

提示&#xff1a;文章写完后&#xff0c;目录可以自动生成&#xff0c;如何生成可参考右边的帮助文档 文章目录 前言一、解决方法二、补充说明总结 前言 基于QT的Webengine开发过程中&#xff0c;QT的官方示例quicknanobrowser也无法成功运行&#xff0c;程序运行后&#xff0…

git的学习

设置用户&#xff08;目的在于可以在远端看到是谁提交了内容&#xff0c;更方便公司的管理&#xff09; 1、设置全局用户&#xff08;在家路径下创建用户&#xff0c;每个项目都用这一个用户&#xff09;>: git config --global user.name manba >: git config --global …

《AI聊天类工具之八——​ 小悟空》

一.简介 官网:小悟空 小悟空是一款集智能对话和辅助推荐功能于一体的强大工具集。它为用户提供了创作生成、学习提升、工作职场、专业咨询、虚拟角色和休闲娱乐等二十余个类别的智能服务,以满足用户在工作、生活和娱乐各方面的需求。 在创作生成方面,小悟空可以帮助用户进…

使用Go语言和chromedp库下载Instagram图片:简易指南

摘要/导言 本文将介绍如何使用Go语言配合chromedp库来下载Instagram上的图片。我们将通过一个简单的示例来展示整个过程&#xff0c;包括如何设置爬虫代理IP以绕过网络限制。 背景/引言 在数据采集和自动化测试领域&#xff0c;Go语言以其出色的执行效率、简洁的语法和卓越的…

【科学研究】那些考进精英大学的农家子弟们

::: block-1 “时问桫椤”是一个致力于为本科生到研究生教育阶段提供帮助的不太正式的公众号。我们旨在在大家感到困惑、痛苦或面临困难时伸出援手。通过总结广大研究生的经验&#xff0c;帮助大家尽早适应研究生生活&#xff0c;尽快了解科研的本质。祝一切顺利&#xff01;—…

智能化转型的得力助手:山海鲸智慧工厂解决方案详解

在数字化浪潮席卷全球的今天&#xff0c;工业领域正迎来一场前所未有的智能化变革。作为这一变革的领军者&#xff0c;山海鲸智慧工厂解决方案以其前瞻性的技术理念和创新的解决方案&#xff0c;为工业发展注入了强大的动力。 山海鲸智慧工厂解决方案的核心在于其高度的集成性…

uniapp读取(获取)缓存中的对象值(微信小程序)

文章目录 问题描述解决方案存值取值 问题描述 大家好&#xff01;我是夏小花&#xff0c;今天是2024年4月24日|农历三月十六&#xff0c;在我们日常开发中&#xff0c;做小程序可能会往缓存中存值或者是存对象&#xff0c;今天这篇博客文章主要是讲如何在微信小程序如何读取缓存…

Windows Server 2012 R2 中 IIS 8.5 安装证书

文章目录 前言一、获取服务器证书二、证书格式转换二、IIS8安装证书1.Win R 键打开运行窗口 → 输入【inetmgr】→ 点击【确定】2.打开【IIS管理器】→ 点击计算机名称 → 双击打开【服务器证书】3.点击【导入】4.选择证书文件 → 输入密码 → 点击【确定】5.选择要使用证书的…

14. Spring AOP(二)实现原理

源码位置&#xff1a;spring_aop 上一篇文章中我们主要学习了AOP的思想和Spring AOP使用&#xff0c;本文讲的是Spring是如何实现AOP的&#xff0c;Spring AOP是基于动态代理来实现AOP的&#xff0c;在将动态代理之前先来了解一下什么是代理模式。 1. 代理模式 在现实中就有许…

深度学习transformer架构详细详解

一、transformer的贡献 transformer架构的贡献&#xff1a;该架构只使用自注意力机制&#xff0c;没有使用RNN或卷积网络。且可以实现并行计算&#xff0c;加快模型训练速度。 &#xff08;将所有的循环层全部换成&#xff1a;multi-headed self-attention&#xff09; 二、t…