架构03 - 理解构架的视角

news2024/9/29 23:35:45

学习架构时,首要任务是弄清楚不同视角对于架构的理解,因为每个人对于架构的理解可能存在差异。不同职位对于架构的关注点也不同。开发人员更多关注开发架构,售前人员更多关注业务架构,运维人员更多关注运维架构,技术支持和部署人员更多关注网络和物理架构。

这样说清楚了一个观点:架构并不仅限于一种视角或者角色,而是综合了多个视角和角色的考虑。每个视角都可以提供不同的信息和关注点,从而帮助我们全面地理解和设计架构。

在学习架构时,应该尝试从不同的视角思考问题,了解各种架构所关注的要素和考虑因素。这样可以帮助我们形成一个更全面、综合的架构知识体系,并且更好地理解不同职位的需求和沟通。

1.架构的视角

在笔者的知识体系中,实际上将架构分为业务架构、应用架构、云基础架构这几大类,业务架构主要着眼于控制业务的复杂性,基础架构着眼于解决分布式系统中存在的一系列问题。无论何种架构,都希望能实现系统的可变的同时保障业务的高可用。

关注公众号:领取架构师面试资料

注意:

在实际情况中,架构的视角和分类并没有明确的边界,而是存在一定的交叉和综合。不同的架构视角之间常常相互关联和影响。

同时,软件架构与所在的部门组织架构之间也存在着直接的关系。组织架构决定了不同职能团队之间的协作方式和沟通渠道。这种组织架构也会反过来影响到软件架构的设计和演进。例如,若开发团队分为前后端开发,他们的组织结构可能会影响到系统的分层架构设计;若运维团队与开发团队合作紧密,运维需求可能会影响到系统的可部署性和可维护性等方面。

因此,我们需要意识到软件架构和组织架构之间的相互关系,充分理解不同视角的人员所关注的重点,并通过良好的沟通协作,以满足组织的需求和目标。这种综合性的考虑可以帮助我们更有效地设计和演化软件架构,使其符合组织的要求并支持业务的成功。

2.业务架构

核心是解决业务带来的系统复杂性,了解客户/业务方的痛点,项目定义,现有环境;梳理高阶需求和非功能性需求,进行问题域划分与领域建模等工作;沟通,方案建议,多次迭代,交付总体架构。

图片

京东业务架构(网上分享图):

图片

3.应用/技术架构

根据具体的业务需求,我们需要设计应用的层次结构,并制定相应的应用规范、接口定义以及数据交互协议等。在此过程中,我们需要尽量控制应用的复杂度,确保它在可接受的水平上运行。这样一方面可以快速支撑业务发展,另一方面也确保了系统的可用性和可维护性,并满足了应用所需的非功能属性要求,如性能、安全性和稳定性等。

在技术架构的设计中,重点考虑系统的非功能性特征。我们需要对系统进行综合的考虑,确保其具有高可用性、高性能、可扩展性、安全性、可伸缩性和简洁性等特点。例如,通过设计容错机制和冗余部署来提高系统的可用性和容错性;通过采用性能优化策略、合理的资源管理和负载均衡技术来实现高性能;通过良好的安全设计和防护措施来保障系统的安全性;通过模块化和解耦等技术手段来实现系统的可扩展性和简洁性。

总之,技术架构的设计旨在在满足业务需求的同时,考虑系统的非功能性特征,确保系统能够高效、稳定地运行,并具备满足未来发展需求的灵活性和可维护性。

4.功能视角

图片

5.技术视角

技术框架是一个可重用的设计,用于构建整个或部分技术系统。它由一组抽象构件和构件实例之间的交互方法组成。另外,技术框架也可以被技术开发者进行定制,作为应用的基本结构。

从技术角度描述,技术框架通常采用分层模型,包括持久层、数据层、逻辑层、应用层和表现层等。每个层次都使用不同的技术框架来支持开发工作。举例来说,持久层可能会使用Hibernate来管理数据库访问,数据层可能会使用Spring JDBC提供数据操作支持,逻辑层可能会采用Spring框架来实现依赖注入和控制反转(IOC),应用层可能会使用成熟的类库和中间件来支持业务逻辑,而表现层可能会采用MVC(模型-视图-控制器)架构来实现用户界面和交互。此外,还可以使用WebService等技术来实现系统间的数据交互和集成。

通过使用这些技术框架,我们能够将整个系统的主要实现概括起来,提供了一种结构化和标准化的方式来处理各个层次的功能和交互。这样的设计不仅可以提高开发效率,还能够增加系统的可维护性和扩展性,并且能够充分利用现有的技术和成熟的解决方案。

6.技术视角-基础架构

7.技术视角-运维架构

负责运维系统的规划、选型、部署上线,建立规范化的运维体系。

图片

8.DDD到各种架构

领域驱动设计的战略核心在于将问题领域与应用架构分开,将业务语义明确化,将原本难以理解的业务算法逻辑通过领域对象和统一语言转化为清晰表达的领域概念。

换句话说,领域驱动设计注重将业务问题与技术实现相分离,使得业务领域的概念和过程能够更加清晰地表达出来。通过使用领域对象,即具有业务特性和行为的对象,可以将问题领域中的概念和逻辑进行抽象和显性化。同时,建立统一语言,即在组织 ** 享的业务术语和概念,有助于业务团队和开发团队之间的有效沟通和理解。

通过采用领域驱动设计的方法,我们能够更好地关注业务的本质,专注于解决业务问题。将复杂的业务逻辑和概念转化为形式化的领域对象和统一语言可使整个系统的设计更加清晰、可维护性更强,并且使业务需求的变更更容易实现。这种方法强调了业务领域的重要性,在设计和开发过程中以业务为中心,从而提高系统的灵活性和可扩展性。

统一语言,软件的开发人员/使用人员都使用同一套语言,即对某个概念,名词的认知是统一的,建立清晰的业务模型,形成统一的业务语义。将模型作为语言的支柱。确保团队在内部的所有交流中,代码中,画图,写东西,特别是讲话的时候都要使用这种语言。例如账号,转账,透支策略,这些都是非常重要的领域概念,如果这些命名都和我们日常讨论以及 PRD 中的描述保持一致,将会极大提升代码的可读性,减少认知成本。。比如不再会有人在会议中对“工单”、“审核单”、“表单”而反复确认含义了,DDD 的模型建立不会被 DB 所绑架。

面向领域,业务语义显性化,以领域去思考问题,而不是模块。将隐式的业务逻辑从一推 if-else 里面抽取出来,用通用语言去命名、去写代码、去扩展,让其变成显示概念;很多重要的业务概念,按照事务脚本的写法,其含义完全淹没在代码逻辑中没有突显出来。

职责划分,根据实际业务合理划分模型,模型之间依赖结构和边界更加清晰,避免了混乱的依赖关系,进而增加可读性、可维护性;单一职责,模型只关注自身的本职工作,避免“越权”而导致混乱的调用关系。通过建模,更好的表达现实世界中的复杂业务,随着时间的发展,不断增加系统对实际业务的沉淀,也将更好的通过清晰的代码描述业务逻辑,模型的内聚增加了系统的高度模块化,提升代码的可重用性,对比传统三层模式中,很有可能大量重复的功能散落在各个 Service 内部。

关注公众号:领取架构师面试资料

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

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

相关文章

基于SSM的电脑测评系统(有报告)。Javaee项目。ssm项目。

演示视频: 基于SSM的电脑测评系统(有报告)。Javaee项目。ssm项目。 项目介绍: 采用M(model)V(view)C(controller)三层体系结构,通过Spring Spri…

书生·浦语大模型--第二节课作业

书生浦语大模型--第二节课作业 基础部分生成300字小故事hugging face 下载功能 进阶部分浦语灵笔的图文理解及创作部署Lagent 工具调用 Demo 创作部署 基础部分 生成300字小故事 hugging face 下载功能 hugging face被墙了,在本地电脑无论是不是科学上网&#xff…

用通俗易懂的方式讲解:对 embedding 模型进行微调,我的大模型召回效果提升了太多了

QA对话目前是大语言模型的一大应用场景,在QA对话中,由于大语言模型信息的滞后性以及不包含业务知识的特点,我们经常需要外挂知识库来协助大模型解决一些问题。 在外挂知识库的过程中,embedding模型的召回效果直接影响到大模型的回…

使用Sqoop将数据从Hadoop导出到关系型数据库

当将数据从Hadoop导出到关系型数据库时,Apache Sqoop是一个非常有用的工具。Sqoop可以轻松地将大数据存储中的数据导出到常见的关系型数据库,如MySQL、Oracle、SQL Server等。本文将深入介绍如何使用Sqoop进行数据导出,并提供详细的示例代码&…

Android Studio 实现网易新闻App (简单方便易懂)

🍅文章末尾有获取完整项目源码方式🍅 目录 前言 一、任务介绍 1.1 背景 1.2目的和意义 二、 实现介绍 视频演示 2.1 启动页实现 2.2 注册页面实现 2.3 登陆页面实现 2.4 首页实现 2.5 详情页面实现 三、获取源码 前言 随着移动互联网的持续发…

力扣120. 三角形最小路径和(Java 动态规划)

Problem: 120. 三角形最小路径和 文章目录 题目描述思路解题方法复杂度Code 题目描述 思路 Problem:64. 最小路径和 本题目可以看作是在上述题目的基础上改编而来,具体的思路: 1.记录一个int类型的大小的 n 乘 n n乘n n乘n的数组(其中 n n n为…

第九讲 单片机驱动彩色液晶屏 控制RA8889软件:显存操作

单片机驱动TFT彩色液晶屏系列讲座 目录 第一讲 单片机最小系统STM32F103C6T6通过RA8889驱动彩色液晶屏播放视频 第二讲 单片机最小系统STM32F103C6T6控制RA8889驱动彩色液晶屏硬件框架 第三讲 单片机驱动彩色液晶屏 控制RA8889软件:如何初始化 第四讲 单片机驱动彩色液晶屏 控…

日志审计系统Agent项目创建——读取日志文件(Linux版本)

紧接着上一篇的分享,继续做日志文件的读取,点击连接即可日志文件初始化https://blog.csdn.net/wjl990316fddwjl/article/details/135553238 1、将指针移动到文件末尾 //文件移动到结尾fseek(fp, 0, SEEK_END); 2、定义当前指针的位置 lastPosition ft…

人工智能:我的学习之旅与认知探索(第1版)

🌟🌌 欢迎来到知识与创意的殿堂 — 远见阁小民的世界!🚀 🌟🧭 在这里,我们一起探索技术的奥秘,一起在知识的海洋中遨游。 🌟🧭 在这里,每个错误都…

2024年第1周,第一期技术动态

大家好,才是真的好。 今天周五,我们继续介绍与Domino相关产品新闻,以及互联网或其他IT行业动态等。 一、Notes/Domino V9和V10技术支持结束和假消息 今年2024年6月1号,HCL将结束IBM Notes/Domino 9.0.x和10.0.x产品的技术支持声…

【发票识别】支持pdf、ofd、图片格式(orc、信息提取)的发票

背景 为了能够满足识别各种发票的功能,特地开发了当前发票识别的功能,当前的功能支持pdf、ofd、图片格式的发票识别,使用到的技术包括文本提取匹配、ocr识别和信息提取等相关的技术,用到机器学习和深度学习的相关技术。 体验 体…

强化学习应用(三):基于Q-learning的无人机物流路径规划研究(提供Python代码)

一、Q-learning简介 Q-learning是一种强化学习算法,用于解决基于马尔可夫决策过程(MDP)的问题。它通过学习一个价值函数来指导智能体在环境中做出决策,以最大化累积奖励。 Q-learning算法的核心思想是通过不断更新一个称为Q值的…

类图作业

类图作业 一. 简答题(共5题,100分) (简答题) 在对类名、属性 /方法名时,通常会遵循什么样的规则?请举例说明。 正确答案: 对于类名通常采用 CamelCase格式(大写字母开头、混合大小写&#xff0…

Spark---RDD持久化

文章目录 1.RDD持久化1.1 RDD Cache 缓存1.2 RDD CheckPoint 检查点1.3 缓存和检查点区别 1.RDD持久化 在Spark中,持久化是将RDD存储在内存中,以便在多次计算之间重复使用。这可以显著减少不必要的计算,提高Spark应用程序的性能。 val line…

MATLAB - 四旋翼飞行器动力学方程

系列文章目录 前言 本例演示了如何使用 Symbolic Math Toolbox™(符号数学工具箱)推导四旋翼飞行器的连续时间非线性模型。具体来说,本例讨论了 getQuadrotorDynamicsAndJacobian 脚本,该脚本可生成四旋翼状态函数及其雅各布函数…

Hive基础知识(十):Hive导入数据的五种方式

1. 向表中装载数据(Load) 1)语法 hive> load data [local] inpath 数据的 path[overwrite] into table student [partition (partcol1val1,…)]; (1)load data:表示加载数据 (2)local:表示…

蓝桥杯练习题(五)

📑前言 本文主要是【算法】——蓝桥杯练习题(五)的文章,如果有什么需要改进的地方还请大佬指出⛺️ 🎬作者简介:大家好,我是听风与他🥇 ☁️博客首页:CSDN主页听风与他 …

UE4工程升级UE5教程及注意事项

原文链接:https://mp.weixin.qq.com/s/vSVu0VsNub0J62Nz7vM6cA虚幻引擎5迁移指南 | 虚幻引擎5.3文档 (unrealengine.com) 官方教程应该是从英文直接翻译过来的,过多词汇没修改,本篇重新整理修改一下,供各位参考。 本教程介绍&…

基于JAVA的数据可视化的智慧河南大屏 开源项目

目录 一、摘要1.1 项目介绍1.2 项目录屏 二、功能模块三、系统展示四、核心代码4.1 数据模块 A4.2 数据模块 B4.3 数据模块 C4.4 数据模块 D4.5 数据模块 E 五、免责说明 一、摘要 1.1 项目介绍 基于JAVAVueSpringBootMySQL的数据可视化的智慧河南大屏,包含了GDP、…

分裂联邦学习论文-混合联邦分裂学习GAN驱动的预测性多目标优化

论文标题:《Predictive GAN-Powered Multi-Objective Optimization for Hybrid Federated Split Learning》 期刊:IEEE Transactions on Communications, 2023 一、论文介绍 背景:联邦学习作为一种多设备协同训练的边缘智能算法&#xff0…