软件架构设计
文章平均质量分 74
huaqianzkh
路虽远行则将至,事虽难做则必成!
展开
-
面向抽象和面向接口的区别
接口是对类的某种行为的一种抽象,接口和类之间并没有很强的关联关系。抽象类作为很多子类的父类,它是一种模板式设计。而接口是一种行为规范,它是一种辐射式设计。原创 2024-10-10 13:35:34 · 731 阅读 · 0 评论 -
付费电表系统的通用功能和应用过程参考模型(中)
付费表系统的大量功能能被分组,接着归类于图3描述的功能类别里。这个抽象的功能模型是付费表系统的种类的描述,他们缘于其他特定系统的所有实例。每个种类功能被分配一个种类号码(1到17),按照所有到子功能,每一个子功能从他的父类继承。类1到11的功能是商业功能,类12到17是支持功能。原创 2024-09-23 21:52:01 · 661 阅读 · 0 评论 -
付费电表系统的通用功能和应用过程参考模型(上)
Generic functions and application process reference model for the Payment Metering System 付费电表系统的通用功能和应用过程参考模型。原创 2024-09-23 21:34:45 · 849 阅读 · 0 评论 -
了解软件架构的常用分类
多年来,“架构”概念经过不断演化,目前已形成了满足不同用途的,比较典型的架构模型包括分层架构、事件驱动架构、微核架构、微服务架构和云架构等五类。原创 2024-09-20 22:49:37 · 1166 阅读 · 0 评论 -
了解软件架构的演化过程
软件架构的演化过程大概分成以下阶段:单体架构 、SOA架构、微服务架构。这也是软件架构从简单到复杂的演进过程,但正如业界常说的,没有最好的架构,只有最合适的架构。一个合适的架构能够充分考虑到“业务的复杂度+数据规模大小+团队的技术栈+时间成本”,并提供一个最好的结果。以下简单说说架构的发展与其优劣势,便于大家在项目开发过程中选择合适的方案。原创 2024-09-20 22:09:07 · 816 阅读 · 0 评论 -
了解云容器实例云容器实例(Cloud Container Instance)
云容器实例(Cloud Container Instance, CCI)服务提供 Serverless Container(无服务器容器)引擎,让您无需创建和管理服务器集群即可直接运行容器。原创 2024-09-17 21:02:02 · 1127 阅读 · 0 评论 -
了解华为云容器引擎(Cloud Container Engine)
云容器引擎(Cloud Container Engine,简称CCE)提供高度可扩展的、高性能的企业级Kubernetes集群。借助云容器引擎,您可以在华为云上轻松部署、管理和扩展容器化应用程序。云容器引擎是一个企业级的Kubernetes集群托管服务,支持容器化应用的全生命周期管理,为您提供高度可扩展的、高性能的云原生应用部署和管理方案。原创 2024-09-16 19:10:01 · 1435 阅读 · 0 评论 -
了解MySQL 高可用架构:主从备份
为了防止数据库的突然挂机,我们需要对数据库进行高可用架构。是常见的场景,通常情况下都是正常情况下,都是主机进行工作,从机进行备份主机数据,如果主机某天突然意外宕机,从机可以立刻工作而不会数据丢失。原创 2024-09-12 21:09:57 · 956 阅读 · 0 评论 -
什么是API网关(API Gateway)?
在微服务体系结构中,客户端可能与多个前端服务进行交互。位于客户端与服务之间。它充当反向代理,将来自客户端的请求路由到服务。它还可以执行各种横切任务,例如身份验证、SSL 终止和速率限制。如果未部署网关,则客户端必须直接向前端服务发送请求。网关可以通过将客户端与服务分开,来帮助解决这些问题。网关可以执行许多不同的功能,但我们不一定需要所有这些功能。原创 2024-09-11 21:25:09 · 1878 阅读 · 0 评论 -
什么是正向代理与反向代理?
在计算机网络领域,代理服务器扮演着至关重要的角色,它在服务器与客户端之间充当中间人的角色,有效地提高系统的安全性、性能和可扩展性。其中正向代理和反向代理是两种最为常见的代理方式。正向代理主要隐藏客户端身份、访问控制和缓存加速,常用于突破网络限制、网络安全和内容过滤。反向代理实现负载均衡、安全性和缓存优化,常用于Web应用、API网关和CDN加速。两者都能提高访问速度,但代理对象和架设位置不同。原创 2024-09-11 20:41:40 · 1003 阅读 · 0 评论 -
什么是 TDengine?
TDengine 是一款专为物联网、工业互联网等场景设计并优化的大数据平台,其核心模块是高性能、集群开源、云原生、极简的时序数据库。它能安全高效地将大量设备、数据采集器每天产生的高达 TB 甚至 PB 级的数据进行汇聚、存储、分析和分发,对业务运行状态进行实时监测、预警,提供实时的商业洞察。原创 2024-09-08 22:01:40 · 1578 阅读 · 1 评论 -
什么是数据库集群?
下面是其基本架构图。需要注意的是,这里用的是“”,而不是“主备集群”。“从机”的“从”可以理解为“仆从”,仆从是要帮主人干活的,“从机”是需要提供读数据的功能的;而“备机”一般被认为仅仅提供备份功能,不提供访问功能。所以使用“主从”还是“主备”,是要看场景的,这两个词并不是完全等同的。的实现逻辑并不复杂,但有两个细节点将引入设计复杂度:和。原创 2024-09-07 22:09:50 · 675 阅读 · 0 评论 -
什么是Web服务器集群?
Web服务器集群是指将多台服务器组成一个集群,通过负载均衡将客户端请求分发到这些服务器上进行处理,从而提高网站的性能和可用性。每台服务器都运行着相同的应用程序和数据,并且能够相互通信和协调工作。原创 2024-09-07 21:50:33 · 622 阅读 · 0 评论 -
用户认证中的有状态和无状态
在实际的系统设计中,需要充分理解需求,合理的使用技术,不同的技术方案适用不同的场景,技术存在即合理。1、目前大部分的互联网的产品中使用 JWT 的认证方式居多。2、在一些企业内部的管理系统中采用 cookie - session 的居多。原创 2024-09-06 21:04:21 · 939 阅读 · 0 评论 -
API 设计、开发、测试一体化协作平台(Apifox)
Apifox是集 API 文档、API 调试、API Mock、API 自动化测试多项实用功能为一体的 API 管理平台,定位为。旨在通过一套系统、一份数据,解决多个工具之间的数据同步问题。只需在 Apifox 中定义 API 文档,那么 API 调试、API 数据 Mock、API 自动化测试等功能就可以直接使用,无需再次定义。API 文档和 API 开发调试流程在同一个工具内闭环,API 调试完成后即可确保与 API 文档定义完全一致。高效、及时、准确!原创 2024-09-06 20:37:57 · 1145 阅读 · 0 评论 -
了解Redis数据持久化(下)
(先记日志,在执行命令,不会对指令进行语法检查,所以有可能见错误的命令记录,Redis要使用日志恢复数据的话也可能会导致错误)。比如 MySQL Innodb 存储引擎 中的 redo log(重做日志)便是记录修改的数据日志,在实际修改数据前先记录修改日志在执行修改数据。仔细分析的话,你就会发现,这两个风险都是和AOF写回磁盘的时机相关的。这也就意味着,如果我们能够控制一个写命令执行完后AOF日志写回磁盘的时机,这两个风险就解除了。在实际写数据之前,将修改的数据写到日志文件中,故障恢复得以保证。原创 2024-08-26 17:34:14 · 651 阅读 · 0 评论 -
什么是好的架构图?
对架构的呈现业界已经存在不同的框架。有4+1视图、C4 模型、TOGAF 提出的企业架构模型等。不管哪种模型,其核心思想都是从不同的维度对软件架构进行描述。原创 2024-08-24 21:25:55 · 758 阅读 · 0 评论 -
了解基准测试(benchmark test)
基准测试,也称之为性能测试,是一种用于衡量计算机系统,软件应用或硬件组件性能的测试方法。基准测试旨在通过运行一系列标准化的任务场景来测量系统的性能表现,从而帮助评估系统的各种指标,如响应时间、吞吐量、延迟、资源利用率等。指的是被测试系统或组件所要处理的任务、操作或数据集合。为了更好地模拟实际工作负载并提供更准确的性能评估,这些数据集通常模拟真实世界的数据,包括各种数据类型和规模。在计算机领域,benchmark可用于测试多个方面,例如cpu性能,网络性能,Web性能,数据仓库性能等。原创 2024-08-23 16:23:37 · 1250 阅读 · 0 评论 -
Jetpack业务架构—四件套(Lifecycle、ViewModel、LiveData、DataBinding)
Jetpack 是一个由多个库组成的套件,可帮助开发者遵循最佳做法、减少样板代码并编写可在各种 Android 版本和设备中一致运行的代码,让开发者可将精力集中于真正重要的编码工作。 Jetpack推出的主要目的是为了能够让开发者更加快速、方便以及高质量的完成产品开发 Life生命,cycle周期,顾名思义:Lifecycle是生命周期的意思。它是Jetpack中的一个 生命周期感知型组件 ,可执行操作来感知响应另一个组件(如 Activity 和 Fragment)的生命周期状原创 2024-08-22 22:25:50 · 1083 阅读 · 0 评论 -
常见的架构原则
如果您不应使用应用组件存储应用数据和状态,那么您应该改为如何设计应用呢?随着 Android 应用大小不断增加,您定义的架构务必要能允许应用扩缩、提升应用的稳健性并且方便对应用进行测试。应用架构定义了应用的各个部分之间的界限以及每个部分应承担的职责。为了满足上述需求,您应该按照某些特定原则设计应用架构。原创 2024-08-22 19:08:08 · 1057 阅读 · 0 评论 -
软件质量属性>基本质量属性的含义
程序和用其他编程语言编写的软件系统的交互作用就是互操作性的问题,这种互操作性也影响应用的软件体系结构。这一点处理的是重新组织软件系统的构件及构件间的关系,例如通过将构件移动到一个不同的子系统而改变它的位置。:性能是指系统的响应能力,即要经过多长时间才能对某个事件做出响应,或者在某段时间内系统所能处理的事件的个数。经常用单位时间内所处理事务的数量或系统完成某个事务处理所需的时间来对性能进行定量的表示。:是指软件发现故障并隔离、定位其故障的能力特性,以及在一定的时间和成本前提下,进行测试设计、测试执行的能力。原创 2023-12-19 15:29:41 · 409 阅读 · 0 评论 -
软件架构的概念>需求和软件架构设计
将系统需求模型转换为架构模型是软件系统需求分析阶段的一项重要工作,以下描述中,( C )是在转换过程中需要关注的问题。本题中选项A与B是软件架构设计阶段需要考虑的问题,而选项D是软件架构实现阶段中需要考虑的问题。D.如何通过模型转换技术,将高层架构模型逐步细化为细粒度架构模型。保持两者的可追踪性和转换,一直是软件工程领域追求的目标。从本质上看,需求和软件架构设计面临的是不同的对象:一个是。1、如何根据需求模型构建软件架构模型;A.如何通过多视图模型描述软件系统的架构。2、如何保证模型转换的可追踪性。原创 2023-12-08 23:43:06 · 42 阅读 · 0 评论 -
软件质量属性>可修改性(modifiability)
在关于某个特定计算环境的所有假设都集中在一个构件中时,系统是可移植的。如果移植到新的系统需要做些更改,则可移植性就是一种特殊的可修改性。这一点关注的是使用新特性来扩展软件系统,以及使用改进版本来替换构件并删除不需要或不必要的特性和构件。这一点处理的是重新组织软件系统的构件及构件间的关系,例如通过将构件移动到一个不同的子系统而改变它的位置。理想情况下,它们允许开发人员在不影响实现的主体部分的情况下灵活地配置构件。为可维护性做好准备的软件体系结构往往能做局部性的修改并能使对其他构件的负面影响最小化。原创 2023-12-04 14:40:01 · 245 阅读 · 0 评论 -
应用架构(application architecture)
在内的模型和详细资料,我们可以分配数据和过程以创建应用架构的一个概要设计。概要设计通常会受到架构标准、项目目标和。应用架构说明了实现一个或多个信息系统所使用的技术,它作为详细设计、构造和实现的一个大纲,给定了包括。的情况下,我们应该将每个表记为物理数据流图中的一个数据存储,并将其连接到相应的服务器。是大多数关系型数据库支持的两种分布式数据形式。有许多分配方法用于数据分布。接下来是分配数据存储到不同的处理器。需要绘制的第一个物理数据流图是。逻辑数据流图和实体联系图。在不同服务器上存储特定表。原创 2023-11-29 21:31:11 · 60 阅读 · 0 评论 -
架构模式、设计模式和惯用法
则是实现时通过某种特定的程序设计语言来描述构件与构件之间的关系,例如引用-计数就是C++语言中的一种惯用法。是软件设计中的高层决策,例如C/S结构就属于架构模式,架构模式反映了开发软件系统过程中所作的基本设计决策;软件设计中使用的架构模式、设计模式和惯用法的基本概念。主要关注软件系统的设计,与具体的实现语言无关;原创 2023-11-29 21:09:22 · 450 阅读 · 0 评论 -
架构描述语言(ADL)
架构描述语言(Architecture Description Language, ADL)是一种为明确说明软件系统的概念架构和对这些概念架构建模提供功能的语言。ADL主要包括以下组成部分:组件、组件接口、( )和架构配置。原创 2023-11-08 11:02:16 · 1980 阅读 · 0 评论 -
模型驱动的体系结构(MDA)
使用模型驱动的软件开发方法,软件系统被表示为一组可以被自动转换为可执行代码的模型。其中,(计算无关模型)对系统中使用的重要的领域抽象进行建模,因此有时被称为领域模型。模型驱动的体系结构是一种关注模型的软件设计和实现方法,使用了UML模型的一个子集来描述系统,其中会创建不同抽象层次上的模型。原创 2023-11-08 10:26:28 · 611 阅读 · 0 评论 -
软件架构设计>软件产品线
软件产品线(Sofware Product Line)是一个产品集合,这些产品共享一个公共的、 可管理的特征集,这个特征集能满足特定领域的特定需求。软件产品线主要由两部分组成,其中,(核心资源)是领域工程的所有结果的集合,产品线中产品构造的基础。原创 2023-11-03 11:11:33 · 290 阅读 · 0 评论 -
软件架构风格
软件体系结构风格是描述某一特定应用领域中系统组织方式的惯用模式,其中,在批处理风格软件体系结构中,每个处理步骤是一个单独的程序,每一步必须在前一步结束后才能开始,并且数据必须是完整的,以整体的方式传递。基于规则的系统包括规则集、规则解释器、规则/数据选择器及工作内存。原创 2023-11-01 11:24:58 · 107 阅读 · 0 评论 -
软件质量属性>质量属性场景
质量属性场景是一个具体的质量属性需求,是利益相关者与系统的交互的简短陈述,它由刺激源、刺激、环境、制品、基于可用性质量属性场景的刺激为:错误:疏忽(构件对某输入未做出反映)、崩溃、时间不当(响应时间太早或太迟)、响应不当(以一个不正确的值来响应)。质量属性场景是一个具体的质量属性需求,是利益相关者与系统的交互的简短陈述,它由刺激源、刺激、环境、制品、响应和响应度量六部分组成。其中,想要学习系统特性、有效使用系统、使错误的影响最低、适配系统、对系统满意属于易用性质量属性场景的刺激。如系统可能正处于过载情况;原创 2023-11-01 11:16:48 · 1076 阅读 · 0 评论 -
软件架构的概念
首先,软件架构作为软件系统的骨架支撑着整个软件系统,是软件系统具备诸多好的特性的重要保障。因为最终软件系统的性能、可靠性、安全性和易维护性等是软件系统最重要的质量和功能属性,是决定软件系统是否被用户接受、是否具有市场竞争力、是否具有进一步改造升级的可能性、是否具有较长生命周期的重要因素;软件架构自身的好坏直接影响着它们是否满足用户需求,而软件架构演化正是为了保障这些方面向人们预期的方向发展的重要措施。本质上讲,软件架构的演化就是软件整体结构的演化,演化过程涵盖软件架构的全生命周 期,包括。原创 2023-11-01 11:01:39 · 236 阅读 · 0 评论 -
架构”4+1“视图
场景视图可以看作是那些重要系统活动的抽象,它使四个视图有机联系起来,从某种意义上说场景视图是最重要的需求抽象。同时,架构设计师也可以用场景视图来分析一个特定的视图,或描述不同视图的构件之间是如何相互作用的。进程视图强调并发性、分布性、系统集成性和容错能力,以及从逻辑视图中的主要抽象如何适合进程结构等,它也定义了逻辑视图中的各个类的操作具体是在哪一个线程中被执行的。开发视图要考虑软件内部的需求,例如,软件开发的容易性、软件的复用性和软件的通用性,要充分考虑由于具体开发工具的不同而带来的局限性。原创 2023-11-01 10:55:46 · 2347 阅读 · 0 评论 -
特定领域软件架构
对DSSA研究的角度、关心的问题不同导致了对DSSA的不同定义。Hayes Roth对DSSA的定义如下:“DSSA就是专用于一类特定类型的任务(领域)的、在整个领域中能有效地使用的、为成功构造应用系统限定了标准的组合结构的软件构件的集合。Tracz的定义为:“DSSA就是一个特定的问题领域中支持一组应用的领域模型、参考需求、参考体系结构等组成的开发基础,其目标就是支持在一个特定领域中多个应用的生成。通过对众多的 DSSA 的定义和描述的分析,可知DSSA的必备特征如下。原创 2023-11-01 10:50:50 · 177 阅读 · 0 评论 -
基于架构的软件开发方法
ABSDM模型把整个基于体系结构的软件过程划分为体系结构需求、设计、文档化、复审、实现、演化等六个子过程。原创 2023-11-01 10:34:54 · 797 阅读 · 0 评论