当前位置: 首页 > news >正文

第一章:绪论

1.1 系统架构概述

架构是体现在组件中的一个系统的基本组织、它们彼此的关系与环境的关系以及指导它的设计和发展的原则。

系统是组织起来完成某一特定功能火一组功能的组件集。系统这个术语包括了单独的应用程序、传统意义上的系统、子系统、系统之系统、产品线、整个企业及感兴趣的其他集合。系统用于完成其环境中的一个或多个任务。

环境或上下文决定了对这个系统的开发、运作、政策以及会对系统造成其他影响的环境和设置。

任务是由一个或多个利益相关者通过系统达到一些目标的系统的一个用途或操作。

通俗的说,系统架构是系统的一种整体的高层次的结构表示,是系统的骨架和根基,支撑和链接各个部分,包括组件、连接件、约束规范以及指导这些内容设计与演化的原理。系统架构设计的目的是对需要开发的系统进行一系列相关的抽象,用于指导系统各个方面的设计与实现,架构设计在系统开发过程中起着关键性作用,架构设计的优劣决定了系统的健壮性和生命周期的长短。

多年来架构的概念经过不断地演化,目前已形成了不同用途的架构模式,比较典型的架构模型包括分层架构、事件驱动架构、微核架构、微服务架构和云架构等5类。

分层架构

分层架构是最常见的架构,也是事实上的标准结构。这种架构降软件分为若干个水平层,每一层都有清晰的角色和分工,且不需要其他层的细节。层与层之间通过接口进行通信。

  • 表现层:用户界面,负责视觉和用户互动;
  • 业务层:实现业务逻辑;
  • 持久层:提供数据,存储SQL语句;
  • 数据库:保存数据。

事件驱动架构

事件是状态发生变化时软件发出的通知,事件驱动架构是通过事件进行通信的软件架构,它分为以下四个部分:

  • 事件队列:接收事件的入口;
  • 分发器:将不同的事件分发到不同的业务逻辑单元;
  • 事件通道:分发器与处理器之间的联系渠道;
  • 事件处理器:实现业务逻辑,处理完成后会发出事件,触发下一步操作。

微核架构

微核架构也称为插件架构,是指软件的内核相对较小,主要功能和业务逻辑都通过插件实现。内核通常只包含系统允许的最小功能,而插件则是互相独立的,插件之间的通信应该减少到最低,避免出现互相依赖的问题。

微服务架构

微服务架构是服务导向架构的升级,每一个服务都是一个独立的部署单元,这些单元都是分布式且互相解耦的,彼此之间通过远程通信协议联系。

微服务分为三种实现模式:

  • RESTful API模式:服务通过API提供;
  • RESTful应用模式:服务通过传统的网络协议或应用协议提供,背后通常是一个多功能的应用程序,常见于企业内部;
  • 集中消息模式:采用消息代理可以实现消息队列、负载均衡、统一日志和异常处理,缺点是会出现单点失败,消息代理需要做成集群。

云架构

云架构主要解决扩展性和并发的问题,是最容易扩展的架构。它的高扩展性体现在将数据都复制到内存中,变成可复制的内存数据单元,然后将业务处理能力封装成一个个的处理单元。如果访问量增加,则新建处理单元;如果访问量减少,则关闭处理单元。

云架构主要分层两部分:处理单元和虚拟中间件。

  • 处理单元:主要负责实现业务逻辑;
  • 虚拟中间件:负责通信、保持会话控制、数据复制、分布式处理和处理单元的部署。

其中虚拟中间件又包含以下四个组件:

  • 消息中间件:主要用于管理用户请求和会话控制,当一个请求进来,由消息中间件决定分配给哪一个处理单元;
  • 数据中间件:将数据复制到每一个处理单元,即数据同步,保证每个处理单元都得到相同的数据;
  • 处理中间件:可选,如果一个请求涉及不同类型的处理单元,改中间件负责协调处理单元;
  • 部署中间件:负责处理单元的启动和关闭,监控负载和响应时间,当负载增加,就新启动处理单元;当负载减少,就关闭处理单元。

1.2 系统架构设计师概述

架构设计师是系统开发的主体角色,他们通过执行一系列的活动来实施架构设计。架构设计通过生成过程形成最终的产品架构,架构设计师的成功是创建架构。

架构设计师是负责系统架构的人,是系统或产品线的设计责任人,是一个负责理解和管理并最终确认和评估非功能性系统需求(如软件的可维护性、性能、复用性、可靠性等),给出开发规范,搭建系统实现的核心架构,对整个软件架构、关键构件和接口进行总体设计兵澄清关键技术细节的高级技术人员。

架构设计师在项目中的主要任务刻概述如下:

  1. 领导与协调整个项目中的技术活动,如分析、设计和实施等;
  2. 推动主要的技术决策ing最终表达为系统架构;
  3. 确定系统架构,并促使其架构设计的文档化,包括需求、设计、实施和部署等视图。

一个优秀的架构设计师通常可以做到在软件开发知识和业务领域知识之间的平衡,因此架构设计师应该具备以下专业知识:

  • 掌握业务领域的知识;
  • 掌握技术领域的知识;
  • 掌握设计技能;
  • 具备编程能力;
  • 具备沟通能力;
  • 具备决策能力;
  • 知道组织策略。

相关文章:

第一章:绪论

1.1 系统架构概述 架构是体现在组件中的一个系统的基本组织、它们彼此的关系与环境的关系以及指导它的设计和发展的原则。 系统是组织起来完成某一特定功能火一组功能的组件集。系统这个术语包括了单独的应用程序、传统意义上的系统、子系统、系统之系统、产品线、整个企业及…...

C++面试知识点总结

知识点总结 <<符号表示该语句将把这个字符串发送给cout&#xff1b;该符号指出了信息流动的路径&#xff1b;cout的对象属性包括一个插入运算符&#xff08;<<&#xff09;&#xff0c;它可以将其右侧的信息插入到流中&#xff0c;endl:重起一行。在输出流中插入en…...

从智能手机到智能机器人:小米品牌的高端化之路

原创 | 文 BFT机器人 前言 在前阵子落幕的2023世界机器人大会“合作之夜”上&#xff0c;北京经济技术开发区管委会完成了与世界机器人合作组织、小米机器人等16个重点项目签约&#xff0c;推动机器人创新链和产业链融合&#xff0c;其中小米的投资额达到20亿&#xff01; 据了…...

深度学习推荐系统(八)AFM模型及其在Criteo数据集上的应用

深度学习推荐系统(八)AFM模型及其在Criteo数据集上的应用 1 AFM模型原理及其实现 沿着特征工程自动化的思路&#xff0c;深度学习模型从 PNN ⼀路⾛来&#xff0c;经过了Wide&#xff06;Deep、Deep&#xff06;Cross、FNN、DeepFM、NFM等模型&#xff0c;进⾏了大量的、基于不…...

【Spring】aop的底层原理

&#x1f384;欢迎来到边境矢梦的csdn博文&#x1f384; &#x1f384;本文主要梳理 Spring 中的切面编程aop的底层原理和重点注意的地方 &#x1f384; &#x1f308;我是边境矢梦&#xff0c;一个正在为秋招和算法竞赛做准备的学生&#x1f308; &#x1f386;喜欢的朋友可以…...

微信小程序开发---基本组件的使用

目录 一、scroll-view &#xff08;1&#xff09;作用 &#xff08;2&#xff09;用法 二、swiper和swiper-item &#xff08;1&#xff09;作用 &#xff08;2&#xff09;用法 三、text &#xff08;1&#xff09;作用 &#xff08;2&#xff09;使用 四、rich-tex…...

SpringBoot国际化配置组件支持本地配置和数据库配置

文章目录 0. 前言i18n-spring-boot-starter1. 使用方式0.引入依赖1.配置项2.初始化国际化配置表3.如何使用 2. 核心源码实现一个拦截器I18nInterceptorI18nMessageResource 加载国际化配置 3.源码地址 0. 前言 写个了原生的SpringBoot国际化配置组件支持本地配置和数据库配置 背…...

Shell编程之sort

sort 命令将文件的每一行作为比较对象&#xff0c;通过将不同行进行相互比较&#xff0c;从而得到最终结果。从首字符开始&#xff0c;依次按ASCII码值进行比较&#xff0c;最后将结果按升序输出。 基本语法 sort (选项)(参数) 常用选项 常用选项 -n根据字符串的数字比较-r…...

windows docker 容器启动报错:Ports are not available

docker 启动容器报错&#xff1a; (HTTP code 500) server error - Ports are not available: listen tcp 0.0.0.0:6379: bind: An attempt was made to access a socket in a way forbidden by its access permissions. 问题排查 检查端口是否被其它程序占用&#xff1a;nets…...

300. 最长递增子序列

题目描述 给你一个整数数组 nums &#xff0c;找到其中最长严格递增子序列的长度。 子序列 是由数组派生而来的序列&#xff0c;删除&#xff08;或不删除&#xff09;数组中的元素而不改变其余元素的顺序。例如&#xff0c;[3,6,2,7] 是数组 [0,3,1,6,2,2,7] 的子序列。 示…...

DNS(域名解析系统)

含义 当我们在上网要访问莫个服务器的时候&#xff0c;就需要知道服务器的IP地址&#xff0c;但IP地址是一串数字&#xff0c;虽然这串数字用点分十进制已经清晰不少了&#xff0c;但还是不利于人们记忆和传播&#xff0c;于是人们使用单词来代替IP地址&#xff08;例如baidu&a…...

解决jsp/html界面跳转servlet出现404错误的方法

解决jsp/html界面跳转servlet出现404错误的方法 最近在学习黑马项目过程中遇到的问题 问题一&#xff1a; 检查页面的跳转路径和名称拼写是否正确 问题二&#xff1a; tomcat发布项目时所使用的路径名称与项目不同 在idea右上角点击如图圈住的按钮 在deployment中更改出现…...

catface,使用Interface定义Controller,实现基于Http协议的RPC调用

catface 前言cat-client 模块EnableCatClientCatClientCatMethodCatNoteCatResponesWrapperCatClientConfigurationCatClientProviderCatClientFactoryCatSendInterceptorCatHttpCatPayloadResolverCatObjectResolverCatLoggerProcessorCatResultProcessorCatSendProcessorAbst…...

Linux:LVS (NAT群集搭建)

模拟环境 外网入口服务器 外网 192.168.8.88 内网ip 192.168.254.4 web1 服务器 ip 192.168.254.1 网关&#xff1a; 192.168.254.4 web2 服务器 ip 192.168.254.2 网关&#xff1a; 192.168.254.4 共享存储服务器 ip 192.168.254.3 介绍 访问 外网192.16…...

音乐格式转换mp3怎么转?跟着步骤操作一遍

音乐格式转换mp3怎么转&#xff1f;mp3&#xff0c;一种音频数据压缩格式&#xff0c;由于其极具优势的文件尺寸小和高质量音效&#xff0c;自诞生之日起就占据了主流音乐格式的头把交椅&#xff0c;并且至今仍然受到用户的青睐&#xff0c;稳居音乐领域的霸主地位。在我们繁忙…...

it监控系统可以电脑吗?有什么效果

IT业务监控已经成为公司不可或缺的一部分&#xff0c;以确保业务的正常运行&#xff0c;提高企业的竞争能力。本文将详细介绍IT业务监控的必要性、实施方法以及如何选择合适的监控工具。 IT业务监控的必要性 确保业务稳定运行  IT业务监控可以实时检测公司的工作流程&#x…...

jvs-智能bi(自助式数据分析)9.1更新内容

​jvs-智能bi更新功能 1.报表增加权限功能&#xff08;服务、模板、数据集、数据源可进行后台权限分配&#xff09; 每个报表可以独立设置权限&#xff0c;通过自定义分配&#xff0c;给不同的人员分配不同的权限。 2.报表新增执行模式 可选择首次报表加载数据为最新数据和历…...

MyBatis-Plus-扩展操作(3)

3.扩展 代码生成 逻辑删除 枚举处理器 json处理器 配置加密 分页插件 3.1 代码生成 https://blog.csdn.net/weixin_41957626/article/details/132651552 下载下面的插件 红色的是刚刚生成的。 我觉得不如官方的那个好用&#xff0c;唯一的好处就是勾选的选项能够看的懂得。…...

react 中 antd 的 样式和 tailwind 样式冲突

问题原因&#xff1a;在使用 tailwindcss 时&#xff0c;会导入大量的 tailwindcss 默认属性&#xff0c;而默认样式中 button, [typebutton] 包含了 background-color: transparent; 从而导致 antd Button 按钮背景色变成透明。解决办法&#xff1a;禁止 tailwindcss 的默认属…...

获取该虚拟机的所有权失败,主机上的某个应用程序正在使用该虚拟机

点击“openstack-controller”虚机 打开出现如下错误&#xff0c;点击“获取所有权” 点击“取消” 这时候不要删除虚拟机&#xff0c;这种错误一般是由于虚拟机没有正常关闭引起的。 找到openstack-controller的虚拟磁盘文件及配置文件存放的位置&#xff0c;删除openstack-…...

2024届校招-Java开发笔试题-S4卷

有三种题型&#xff1a;单项选择题&#xff08;10道&#xff09;、不定项选择题&#xff08;10道&#xff09;、编程题&#xff08;3道&#xff09; 下面是一些回忆的题目&#xff1a; 1.哪种设计模式将对象的创建与使用分离&#xff0c;通过工厂类创建对象 答&#xff1a;工…...

数据分析面试题(2023.09.08)

数据分析流程 总体分为四层&#xff1a;需求层、数据层、分析层和结论层 一、统计学问题 1、贝叶斯公式复述并解释应用场景 公式&#xff1a;P(A|B) P(B|A)*P(A) / P(B)应用场景&#xff1a;如搜索query纠错&#xff0c;设A为正确的词&#xff0c;B为输入的词&#xff0c;那…...

jenkins 报错fatal:could not read Username for ‘XXX‘:No such device or address

#原因&#xff1a;机器做迁移&#xff0c;或者断电&#xff0c;遇到突发情况 #解决&#xff1a; 一.排查HOME和USER环境变量 可以在项目执行shell脚本的时候echo $HOME和USER 也可以在构建记录位置点击compare environment 对比两次构建的环境变量 二.查看指定节点的git凭证 查…...

LRU算法之我见

文章目录 一、LRU算法是什么&#xff1f;二、使用原理三、代码实现总结 一、LRU算法是什么&#xff1f; LRU算法又称最近最少使用算法&#xff0c;它是是大部分操作系统为最大化页面命中率而广泛采用的一种页面置换算法。是一种缓存淘汰策略&#xff0c;根据使用频率来淘汰无用…...

【第20例】华为 IPD 体系 | IPD 的底层思考逻辑(限制版)

目录 简介 更新情况 IPD体系 CSDN学院 专栏目录 作者简介 简介 最近随着华为 Mate 60 系列的爆火发布。 这家差不多沉寂了 4 年的企业再次映入大众的眼帘。 其实,华为手机业务发展的元年最早可以追溯...

spaCy库的实体链接踩坑,以及spaCy-entity-linker的knowledge_base下载问题

问题1. spacy Can’t find factory for ‘entityLinker’ 1&#xff09;问题 写了一个实体链接类&#xff0c;代码如下&#xff1a; nlp spacy.load("en_core_web_md")class entieyLink:def __init__(self, doc, nlp):self.nlp nlpself.doc self.nlp(doc)# Che…...

【数据结构】红黑树的插入与验证

文章目录 一、基本概念1.时代背景2. 基本概念3.基本性质 二、实现原理1. 插入1.1变色1.2旋转变色①左旋②右旋③右左双旋④左右双旋 2.验证 源码总结 一、基本概念 1.时代背景 1972年鲁道夫拜尔(Rudolf Bayer)发明了一种数据结构&#xff0c;这是一种特殊的B树4阶情况。这些树…...

Pycharm----将Anaconda建立的环境导入

首先打开项目设置&#xff0c;点击添加 随后点击现有环境&#xff0c;点击三个。。。号进行添加 最后找到你Anaconda安装文件夹&#xff0c;envs找到你建立的环境名称&#xff0c;找到python.exe将它导入即可让现在的python环境为你建立的环境&#xff0c;同时还需要更改终端方…...

数字花园的指南针:微信小程序排名的提升之道

微信小程序&#xff0c;是一片数字花园&#xff0c;其中各种各样的小程序竞相绽放&#xff0c;散发出各自独特的芬芳。在这个花园中&#xff0c;排名优化就像是精心照料花朵的园丁&#xff0c;让我们一同走进这个数字花园&#xff0c;探寻如何提升微信小程序的排名优化&#xf…...

LRU与LFU的c++实现

LRU 是时间维度上最少使用 维持一个链表&#xff0c;最近使用的放在表头 淘汰表尾 LFU 是实际使用频率的最少使用 每一个对应的频率维持一个链表&#xff0c; 淘汰最低频率的最后一个 1. LRU LRU&#xff08;Least Recently Used&#xff0c;最近最少使用&#xff09;是一种常…...

asp网站开发/seo整站优化外包

说明&#xff1a;这个名字是从当前电脑的管理员信息获取的&#xff0c;所以要去修改管理员个人信息。 呵呵 如果改了不行的话&#xff0c;就重启Xcode或者电脑试试吧。 转载于:https://www.cnblogs.com/liuw-flexi/p/8534287.html...

上海网页设计公司山东济南兴田德润简介/关键词优化seo多少钱一年

加油站 在一条环路上有 N 个加油站&#xff0c;其中第 i 个加油站有汽油 gas[i] 升。 你有一辆油箱容量无限的的汽车&#xff0c;从第 i 个加油站开往第 i1 个加油站需要消耗汽油 cost[i] 升。你从其中的一个加油站出发&#xff0c;开始时油箱为空。 如果你可以绕环路行驶一周&…...

.net做网站开发/自媒体人15种赚钱方法

也许每个人出生的时候都以为这世界都是为他一个人而存在的&#xff0c;当他发现自己错的时候&#xff0c;他便开始长大 少走了弯路&#xff0c;也就错过了风景&#xff0c;无论如何&#xff0c;感谢经历 转移发布平台通知&#xff1a;将不再在CSDN博客发布新文章&#xff0c;敬…...

wordpress qq聊天窗口/网络推广专员是干什么的

前些天学习了DHCP配置&#xff0c;今天我们是做个DHCP小实验&#xff0c;实验拓扑如下&#xff1a; 要求很简单&#xff0c;路由R2为DHCP服务器&#xff0c;分别为R1、R4分配非同一网段地址&#xff0c;R3为R4做DHCP中继。 首先小小规划一下&#xff0c;R1、R2之间用192.168.1.…...

对网站开发的理解/什么软件可以免费引流

本文大部分摘自极客时间胡忠想老师的《从0开始学微服务》课程&#xff0c;对原文做了简单概括和修改 XML 配置方式的服务发布和引用的具体流程&#xff0c;简单来说就是服务提供者定义好接口&#xff0c;并且在服务发布配置文件中配置要发布的接口名&#xff0c;在进程启动时加…...

给国外b2b网站开发信/百度seo排名培训

Python阶乘求和的方法 题目描述&#xff1a; 获得用户输入的整数n&#xff0c;输出 1!2!…n!的值。 如果输入数值为0、负数、非数字或非整数&#xff0c;输出提示信息&#xff1a;输入有误&#xff0c;请输入正整数。 &#xff08;推荐学习&#xff1a;Python视频教程&…...