架构02 - 架构的基础: 特点,本质...

  1. 软件架构简介:

    架构是对系统中各个实体以及它们之间关系的抽象描述,是对功能和形式元素之间对应关系的分配,也是对元素之间关系及与周边环境关系的定义。软件架构的核心价值在于控制系统的复杂性,实现核心业务逻辑和技术细节的解耦和分离。

    软件架构可以视为系统的草图,描述了直接构成系统的抽象组件,并明确和细致地描述了组件之间的通信。在实际实现阶段,这些抽象组件会被细化为具体的组件,比如特定的类或对象。在面向对象领域中,组件之间的连接通常通过接口来实现。

    作为架构师,主要职责是培养思维能力,通过合理的分解和抽象来理解复杂系统,理解并解析需求,创建有用的模型,确认、细化和扩展模型,并管理整个架构过程。同时,架构师还需要进行系统分解,形成整体架构,正确选择技术方案,制定技术规范,并有效推动实施和落地。

  2. 系统复杂性的来源与应对

    在软件开发中,程序员可以通过创造力思维和思维组织能力创造出天马行空的世界。然而,随着系统功能的增加,系统变得越来越复杂,各个模块之间存在微妙的依赖关系。这导致修改系统变得困难,并且容易引入Bug,从而延缓开发进度并增加开发成本。

复杂性的增加在很大程度上是不可避免的,而且往往不受我们主观意愿的影响。复杂性的来源可能包括:

1. 吸积与持续迭代:由于增量式设计和持续重构,软件设计永不结束,需要时刻考虑设计问题并找到更好的设计方案。

2. 交互且无扩展性设计:大规模系统结合了交互特性,使得技术系统更加复杂,并且各个系统之间的交互会增加系统的复杂性。

3. 不合理的业务封装:不合理的业务封装,例如面向过程而不是对象、分层不合理等,也会增加系统的复杂性。

4. 缺乏统一语言:团队成员专注于自己负责的环节,导致缺乏全局视角,影响沟通与理解。

5. 缺乏约束与规范:缺乏规范和约束会损害架构的一致性和代码的可维护性,导致整体复杂性的增加。

要应对复杂性,我们需要不断推陈出新,持续迭代,动态地重塑对软件系统的认识。控制复杂性的途径可以是编写简洁明晰的代码,减少特殊场景的处理,保持变量命名一致性等。另外,对于复杂问题,可以进行抽象和分解,采取分而治之的策略。

最后,需要注意的是,复杂性的应对是一个持续的过程,没有一劳永逸的解决方案。只有不断迭代和改进,才能有效控制和应对系统的复杂性。

大型网站的特点

1、用户多,分布广泛

2、大流量,高并发

3、海量数据,服务高可用

4、安全环境恶劣,易受网络攻击

5、功能多,变更快,频繁发布

6、从小到大,渐进发展

7、以用户为中心

8、免费服务,付费体验

大型网站架构目标

1、高性能:提供快速的访问体验。

2、高可用:网站服务一直可以正常访问。

3、可伸缩:通过硬件增加/减少,提高/降低处理能力。

4、安全性:提供网站安全访问和数据加密,安全存储等策略。

5、扩展性:方便的通过新增/移除方式,增加/减少新的功能/模块。

6、敏捷性:随需应变,快速响应;

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

CES 2024丨引领变革,美格智能为智能终端带来生成式AI能力

作为电子行业的“风向标”,CES 2024(国际消费电子展)于1月9日至12日在美国拉斯维加斯举办。本届展会可谓是AI的盛宴,芯片、AI PC、智能家居、汽车科技、消费电子等领域与AI相关的前沿成果接连发布,引领人工智能领域的科…

Spring Boot - Application Events 的发布顺序_ApplicationEnvironmentPreparedEvent

文章目录 Pre概述Code源码分析 Pre Spring Boot - Application Events 的发布顺序_ApplicationEnvironmentPreparedEvent 概述 Spring Boot 的广播机制是基于观察者模式实现的,它允许在 Spring 应用程序中发布和监听事件。这种机制的主要目的是为了实现解耦&#…

2024年最佳免费简历编辑工具,全功能完全免费使用!

随着科技的不断发展,求职竞争也愈发激烈。在2024年,如何在众多求职者中脱颖而出成为关键问题。为了帮助大家在职业生涯中取得更好的机会,特别推荐一款在2024年最为出色的免费简历编辑工具——芊芊简历。 1. 免费编辑功能 芊芊简历拥有直观易…

rime中州韵小狼毫 生字注音滤镜 汉字注音滤镜

在中文环境下,多音字是比较常见的现象。对于一些不常见的生僻字,或者一些用于地名,人名中的常见字的冷门读音,如果不能正确的阅读,例如把 荥阳 读成了 miāo yng,则会怡笑大方。 今天我们在rime中州韵小狼…

Leetcode349两个数组的交集(java实现,思路超清晰想学会的进来!)

今天,博主分享的题目是leetcode上的349两个数组的交集。题目描述如下: 解题思路:在这里我们分享一个做题的小技巧,我们拿到题如果题目描述中有判断某个集合中有没有哪个元素,类似这种要求的我们首先应该考虑是否可以使用哈希表。…

探索 C# 中的程序运行目录获取方法

探索 C# 中的程序运行目录获取方法 引言 在 C# 开发中,有时需要确定您的应用程序的运行目录。这可能是为了读取配置文件、存储日志,或者访问与应用程序位于同一目录的其他资源。C# 提供了几种方法来获取当前程序的运行目录。本文将探讨这些方法及其使用…

【漏洞复现】天融信TOPSEC static_convert 远程命令执行

漏洞描述 天融信TOPSEC Static_Convert存在严重的远程命令执行漏洞。攻击者通过发送精心构造的恶意请求,利用了该漏洞,成功实现在目标系统上执行任意系统命令的攻击。成功利用漏洞的攻击者可在目标系统上执行恶意操作,可能导致数据泄露、系统瘫痪或远程控制。强烈建议立即更…

google关键词分析怎么做?

想分析关键词那自然是要使用工具,而分析一个关键词比较看重的有两点,搜索量以及竞争程度。 搜索量无非就是关键词在谷歌搜索引擎被搜索的次数,这个数量越大,就证明这个关键词被人搜的越多次,我们要做的词,肯…

水产冷链物流行业零下25℃库架一体 海格里斯HEGERLS四向穿梭式冷藏冷库智能密集仓

随着国内外仓储物流整体规模和低温产品消费需求的稳步增长,冷链市场应用潜力不断释放。在传统“货架叉车”的方式下,货物、人员及机械设备不断进出,容易造成温度波动,导致冷量流失。立体冷库则以更高密度、更具成本效益的方式&…

【C++进阶06】红黑树图文详解及C++模拟实现红黑树

一、红黑树的概念及性质 1.1 红黑树的概念 AVL树用平衡因子让树达到高度平衡 红黑树可以认为是AVL树的改良 通过给每个节点标记颜色让树接近平衡 以减少树在插入节点的旋转 在每个结点新增一个存储位表示结点颜色 可以是Red或Black 通过对任何一条从根到叶子的路径上 各个结点…

go语言中的函数和方法

函数定义 1.1.1. golang函数特点: • 无需声明原型。• 支持不定 变参。• 支持多返回值。• 支持命名返回参数。 • 支持匿名函数和闭包。• 函数也是一种类型,一个函数可以赋值给变量。• 不支持 嵌套 (nested) 一个包不能有两个名字一样的函数。• 不…

PostgreSQL从小白到高手教程 - 第41讲:postgres表空间备份与恢复

PostgreSQL从小白到专家,是从入门逐渐能力提升的一个系列教程,内容包括对PG基础的认知、包括安装使用、包括角色权限、包括维护管理、、等内容,希望对热爱PG、学习PG的同学们有帮助,欢迎持续关注CUUG PG技术大讲堂。 第41讲&#…

OpenCV-Python(33):SURF算法

目标 SUFR 是什么OpenCV 中的SURF 原理 学习了解过SIFT 算法后我们知道,它是对图像关键点进行检测和描述的,具有尺度不变的特性,但是这种算法的执行速度比较慢,人们需要速度更快的算法。2006年Bay,H.,Tuytelaars,T. 和Van Gool,…

盲盒小程序搭建,打造互联网电商模式

当前,盲盒作为年轻人的消费新选择,一度创下“销费奇迹”,深受年轻人的欢迎,成为了一种热门消费模式!盲盒小程序是盲盒市场互联网时代发展下的产物,也是当下盲盒销售中的一种新形式。下面具体分析盲盒小程序…

从传统到智能:机器视觉检测赋能PCB行业数字化转型!

PCB板在现代电子设备中是一个重要的组成部分,它是用来集成各种电子元器件的信息载体。在电子领域中,PCB板有着广泛的应用,而它的质量直接影响到产品的性能。随着电子科技技术和电子制造业的发展,贴片元器件的体积 变小&#xff0c…

RT-Thread 中断管理接口

中断服务程序挂接 系统把用户的中断服务程序(handler)和指定的中断号关联起来,可调用如下的接口挂载一个新的中断服务程序: rt_isr_handler_t rt_hw_interrupt_install(int vector, rt_isr_handler_t handler, void*param, char…

重磅!2024国家自然科学基金项目指南发布

1月11日,国家自然科学基金委员会正式发布《2024年度国家自然科学基金项目指南 》。 相比去年的指南,今年有如下变动: 申请规定具体如下: 各项目申请指南: 来源:国家自然科学基金委员会,爱科会易…

mysql忘记root密码后怎么重置

mysql忘记root密码后重置方法【windows版本】 重置密码步骤停掉mysql服务跳过密码进入数据库在user表中重置密码使用新密码登录mysql到此,密码就成功修改了,完结,撒花~ 重置密码步骤 当我们忘记mysql的密码时,连接mysql会报这样的…

无代码DIY图像检索

软件环境准备 可参见《HuggingFists-低代码玩转LLM RAG-准备篇》中的HuggingFists安装及Milvus安装。 流程环境准备 图片准备 进入HuggingFists内置的文件系统,数据源->文件系统->sengee_fs_settings_201创建Image文件夹将事先准备的多张相同或不同种类的图…

GPCR蛋白一般残基编号(Generic residue numbering)

文章目录 前言定义特殊情况参考连接 前言 在相应的文章中看到对于对于描述GPCR中的序列位置,往往在除了在当前蛋白的氨基酸序列序号意外,会在右上角标注一个类似于6 x 49的编号。经查这个编号有一个统一名称:Generic residue numbering。本文…