信息系统常见的系统架构
1.1单文件架构
现在很多企业内部虽然已经建设了一些信息系统,但还是有不少业务没有用专门的信息系统管理起来,普遍都是采用Excel表格来实现这些业务数据的填报和查询统计。Excel就是属单文件架构,这种架构是指整个系统就是一个文件,打开文件就可以直接操作,优点是简单易用,电脑上安装相应的软件就能使用,不需要专门的服务器,适合个人办公使用,如果有多个人需要查看或操作同一个表格文件时,就很不方便,需要把文件传来传去,每个人改完,还得跟其他人改的内容手动合并,不仅效率很低,而且很容易出错。
1.2两层架构
二十年前,随着PC电脑的普及,很多企事业单位内部开始建设信息系统,那时候的信息系统基本都是采用C/S模式的两层架构,C是指客户端软件(Client),S是指服务器端软件(Server),服务器一般都是指关系型数据库,就是客户端软件通过网络直接连接数据库进行数据的增删改查操作。这种架构相对上面的单文件架构来说,可以实现功能更加强大和更加完善的信息系统,支持多人同时操作同一个业务的数据,而且,支持数据格式和业务逻辑校验,防止无效数据录入;支持操作权限管控,防止非法操作。
但随着信息化建设的不断发展,使用信息系统的人越来越多,这种模式的弊端也逐步显现出来,就是在用户量比较大时,这种客户端软件直接连数据库的模式会造成整个系统卡顿,甚至宕机。因为这种模式,每个客户端都会与数据库至少建立一个连接,且一直保持,当用户比较多时,就会建立大量的数据库连接,造成数据库性能急剧下降,最终影响整个系统的访问,所以,这种模式现在已经很少见了。
1.3多层架构
现在的信息系统基本都是采取多层架构,最典型的就是三层架构,即:客户端软件+应用服务器+数据库,我们常说的B/S架构就属于这种,B是指Web浏览器(Browser),S是指应用服务器(包含Web服务器),实际后面还有关系型数据库,采用HTTP协议通信的手机APP、微信小程序等,也可以看做是B/S架构里的客户端,因为他们可以和Web页面共用服务器。
采用这种架构,客户端和数据库之间增加了一个应用服务器,客户端不能直接连接数据库,如果客户端需要对某项业务的数据进行增删改查操作,需要先连接到应用服务器,并发送具体的操作请求和参数,应用服务器进行相关校验后,再连接数据库执行实际的增删改查操作,并把结果返回给客户端,然后就关闭与数据库和客户端的连接,也就是说,应用服务器与数据库和客户端之间都不会一直连接,而是用完就关闭,这种方式可以大幅提升整个系统的性能。而且,这种架构把业务系统分成了前端界面和后台服务两个部分,前端界面负责填报和展示数据,后台服务负责执行必要的数据校验和业务逻辑处理,并连接数据库执行实际的数据增删改查操作,前端代码由Web浏览器或手机APP等客户端软件执行,后台服务由应用服务器执行。这种将前后端解耦分别开发和执行的模式,一是可以让软件系统的各个部分分工更加清晰明确,各自可以专注去解决各自层面的问题,二是可以实现资源复用,例如同一个后台服务,可以供Web页面、手机APP或微信小程序调用,而不需要针对每种终端都重复开发。
对于大多数中小型信息系统来说,这种三层架构基本就能满足要求了,如果还想提升性能,可以增加缓存服务器,将需要频繁访问的热数据保存到缓存中,需要查询时,可以直接从缓存获取,从而减轻关系型数据库的压力,提升系统的承载能力。
对于大型信息系统来说,由于要承受大量并发访问,则上面这种简单的三层架构也无法满足要求,于是又衍生出了集群架构和微服务架构等多层架构,在这些架构下,服务器端不只是简单的一个服务器为客户端提供服务,可能有好多台服务器组成集群,然后在前面加上负债均衡服务器进行统一的业务受理和任务调度,从而可以承载更多的并发访问。采用这种架构,每台应用服务器上的代码都是一样的,当客户端请求某个后台服务时,由负债均衡服务器按照随机、轮询等策略,将请求分派给其中一台处理,然后将处理结果返回给客户端。
如果采用微服务架构,还需要在应用服务器集群前面增加微服务网关,在网关中配置每个后台服务都由哪些服务器提供服务,从而可以实现针对不同的后台服务,可以分配不同的服务器或服务器集群进行处理,访问量小的,可以多个后台服务放在一台服务器上,访问量大的,可以单独放在一台服务器或者多台服务器上。在数据库层面,关系型数据库和缓存数据库也都可以由多台服务器组成集群。另外,根据需求,还可以部署单独的消息服务器、身份认证和鉴权服务器等。这些服务器端软件可以部署在物理主机或虚拟主机上,也可以部署在容器内,总之,部署方式可以非常灵活,可以按需扩容,是目前很多大型互联网平台普遍采用的架构。
1.4 TaskBuilder支持的系统架构
用TaskBuilder开发的应用具体采用的什么架构取决于使用的什么版本的任擎,共享版的任擎采取的是最简单的三层架构,即在服务器端,由一个单独的任擎进程统一为客户端提供所有服务,包括静态文件访问、动态服务执行、数据库操作、身份验证、数据缓存等等,可以满足中小型信息系统的需求。
如果系统用户较多,并发访问量较大,则可以使用任擎企业版或集群版。
任擎企业版支持在一台服务器上运行多个任擎进程,一个主进程,多个从进程,由主进程统一受理客户端请求,然后再分发给从进程进行处理,处理完再将结果返回给主进程,主进程再返回给客户端,从而实现负载均衡,满足大量用户的并发访问。并且,主进程负责实时监控各个从进程的运行状态,如果发现某个从进程出现异常,可以主动重启该从进程,保证整个系统能长期稳定运行。
任擎集群版支持基于微服务架构的分布式部署,可以将整个系统的各个后台服务分别部署在多个主机或容器中,可以根据各个后台服务的负载灵活分配服务器资源或弹性扩容,可以支持海量用户的并发访问,适合用来运行大型信息系统或互联网平台。
不管使用什么版本的任擎,核心功能都是一样的,只是架构不一样,将任擎从一个版本切换为另外一个版本时,用TaskBuilder开发的应用不需要进行任何修改,可以平滑切换。
相关文章:
信息系统常见的系统架构
1.1单文件架构 现在很多企业内部虽然已经建设了一些信息系统,但还是有不少业务没有用专门的信息系统管理起来,普遍都是采用Excel表格来实现这些业务数据的填报和查询统计。Excel就是属单文件架构,这种架构是指整个系统就是一个文件࿰…...
AngularJS 过滤器:提升用户体验的数据处理利器
AngularJS 过滤器:提升用户体验的数据处理利器 AngularJS,作为一款由Google维护的开源JavaScript框架,以其独特的双向数据绑定和MVVM(Model-View-ViewModel)架构在Web应用开发领域占据着重要地位。其中,AngularJS的过滤器(Filters)功能,为开发者提供了一种轻量级、高…...
Upload-labs 第四关(学习记录)
上传.htaccess文件 SetHandler application/x-httpd-php <IfModule mime_module> SetHandler application/x-httpd-php #在当前目录下,所有文件都会被解析成php代码执行 </IfModule> 上传一句话木马 保存为 1.png 文件 成功解析...
金融租赁系统的创新与发展推动行业效率提升
金融租赁系统的技术升级与创新 在当今快速发展的金融市场中,金融租赁系统的技术升级与创新充满了无限可能。想象一下,传统的租赁方式就像一位沉闷的老师,而新兴技术就如同一位活泼的学生,不断追求新鲜事物。通过自动化、人工智能…...
MYSQL在Windows平台上的限制
以下限制适用于在Windows平台上使用MySQL: 程序内存 在windows32位上,一个进程(包括MySQL)内默认使用超过2GB的内存是不可能的。这是因为windows 32位的物理地址限制是4GB,视窗内的默认设置是在内核(2GB&a…...
Rust 泛型、特征与生命周期详解
Rust 泛型、特征与生命周期详解 泛型编程 泛型函数 // 泛型函数:找出最大值 fn largest<T: PartialOrd>(list: &[T]) -> &T {let mut largest &list[0];for item in list {if item > largest {largest item;}}largest }fn main() {let…...
基于 Python 虎扑网站的 NBA 球员大数据分析与可视化
标题:基于 Python 虎扑网站的 NBA 球员大数据分析与可视化 内容:1.摘要 摘要:本文介绍了一种基于 Python 的虎扑网站 NBA 球员大数据分析与可视化方法。通过网络爬虫技术获取球员数据,利用数据分析和可视化工具对数据进行处理和展示,帮助用户…...
小程序组件 —— 26 组件案例 - 跳转到商品列表
在上一节实现了商品导航区域,这一节实现跳转到商品列表的功能;当用户在点击商品导航时,需要能够跳转到商品列表页面;在微信小程序中,如果需要进行跳转,需要使用 navigator 组件,navigator 组件有…...
【Spring学习】为什么Spring中的IOC(控制反转)能够降低耦合性(解耦)?
为什么Spring中的IOC能够降低耦合性? 前言1.传统方式2.使用接口3.工厂方法4.反射改造工厂类5.IOC总结参考 前言 本文目标:本文旨在讲解为什么IOC能够降低耦合性。 情景:假设你是一个爱摸鱼的程序员,现在需要测试一个游戏&#x…...
机场安全项目|基于改进 YOLOv8 的机场飞鸟实时目标检测方法
目录 论文信息 背景 摘要 YOLOv8模型结构 模型改进 FFC3 模块 CSPPF 模块 数据集增强策略 实验结果 消融实验 对比实验 结论 论文信息 《科学技术与工程》2024年第24卷第32期刊载了中国民用航空飞行学院空中交通管理学院孔建国, 张向伟, 赵志伟, 梁海军的论文——…...
卸载干净 IDEA(图文讲解)
目录 1、卸载 IDEA 程序 2、注册表清理 3、残留清理 1、卸载 IDEA 程序 点击屏幕左下角 Windows 图标 -> 设置-控制面板->intellij idea 勾选第一栏 Delete IntelliJ IDEA 2022.2 caches and local history,表示同时删除 IDEA 本地缓存以及历史。 Delete I…...
云端微光,AI启航:低代码开发的智造未来
文章目录 前言一、引言:技术浪潮中的个人视角初次体验腾讯云开发 Copilot1.1 低代码的时代机遇1.1.1 为什么低代码如此重要? 1.2 AI 的引入:革新的力量1.1.2 Copilot 的亮点 1.3 初学者的视角1.3.1 Copilot 带来的改变 二、体验记录ÿ…...
工程师了解的Lua语言
1、关于lua语言 lua语言是用于嵌入式领域当中的一门脚本语言,其实在大学期间,我也没有接触过这门语言,但是在未来的发展之路当中,需要用到这门语言,所以在我的知识库当中添加这门语言知识是必要而且重要的,…...
著名的软件都用什么语言编写?
你是否曾经好奇,身边那些耳熟能详的软件,它们究竟是用什么语言编写的?从操作系统到浏览器、从数据库到编程工具,每一款软件背后都承载着开发者们的智慧与技术选型。那么,究竟哪些编程语言成就了这些世界级的软件呢&…...
设计模式 结构型 代理模式(Proxy Pattern)与 常见技术框架应用 解析
代理模式(Proxy Pattern)是一种常见的设计模式,在软件开发中有着广泛的应用。其核心思想是通过创建一个代理类来控制对另一个对象的访问,从而实现对目标对象功能的扩展、保护或其他附加操作。 一、核心思想 代理模式的核心思想在…...
Linux环境(CentOs7) 安装 Node环境
Linux环境(CentOs7) 安装 Node环境 使用NodeSource安装Node.js 1、清除缓存(可选但推荐) sudo yum clean all2、添加NodeSource仓库,根据你想要安装的Node.js版本,选择相应的NodeSource安装脚本。例如&am…...
Tailwind CSS 实战:现代登录注册页面开发
在前端开发中,登录注册页面是最常见的需求之一。一个设计精美、交互友好的登录注册页面不仅能提升用户体验,还能增加产品的专业度。本文将详细介绍如何使用 Tailwind CSS 开发一个现代化的登录注册页面。 设计思路 在开始编码之前,我们先明…...
Unity2022接入Google广告与支付SDK、导出工程到Android Studio使用JDK17进行打包完整流程与过程中的相关错误及处理经验总结
注:因为本人也是第一次接入广告与支付SDK相关的操作,网上也查了很多教程,很多也都是只言片语或者缺少一些关键步骤的说明,导致本人也是花了很多时间与精力踩了很多的坑才搞定,发出来也是希望能帮助到其他人在遇到相似问…...
反向传播算法的偏置更新步骤
偏置的更新步骤 假设我们有一个三层神经网络(输入层、隐藏层和输出层),并且每层的激活函数为 sigmoid 函数。我们需要更新隐藏层和输出层的偏置。以下是详细的步骤: 1. 计算误差项(Error Term) 输出层的…...
条款47:请使用 traits classes 表现类型信息(Use traits classes for information about types)
条款47:请使用 traits classes 表现类型信息 1.1 提出问题 想一想,下面的功能如何实现?(可以查看std::advance源码) template<typename IterT, typename DistT> void advance(IterT& iter, DistT d); /…...
MPNet:旋转机械轻量化故障诊断模型详解python代码复现
目录 一、问题背景与挑战 二、MPNet核心架构 2.1 多分支特征融合模块(MBFM) 2.2 残差注意力金字塔模块(RAPM) 2.2.1 空间金字塔注意力(SPA) 2.2.2 金字塔残差块(PRBlock) 2.3 分类器设计 三、关键技术突破 3.1 多尺度特征融合 3.2 轻量化设计策略 3.3 抗噪声…...
Xshell远程连接Kali(默认 | 私钥)Note版
前言:xshell远程连接,私钥连接和常规默认连接 任务一 开启ssh服务 service ssh status //查看ssh服务状态 service ssh start //开启ssh服务 update-rc.d ssh enable //开启自启动ssh服务 任务二 修改配置文件 vi /etc/ssh/ssh_config //第一…...
练习(含atoi的模拟实现,自定义类型等练习)
一、结构体大小的计算及位段 (结构体大小计算及位段 详解请看:自定义类型:结构体进阶-CSDN博客) 1.在32位系统环境,编译选项为4字节对齐,那么sizeof(A)和sizeof(B)是多少? #pragma pack(4)st…...
Psychopy音频的使用
Psychopy音频的使用 本文主要解决以下问题: 指定音频引擎与设备;播放音频文件 本文所使用的环境: Python3.10 numpy2.2.6 psychopy2025.1.1 psychtoolbox3.0.19.14 一、音频配置 Psychopy文档链接为Sound - for audio playback — Psy…...
Matlab | matlab常用命令总结
常用命令 一、 基础操作与环境二、 矩阵与数组操作(核心)三、 绘图与可视化四、 编程与控制流五、 符号计算 (Symbolic Math Toolbox)六、 文件与数据 I/O七、 常用函数类别重要提示这是一份 MATLAB 常用命令和功能的总结,涵盖了基础操作、矩阵运算、绘图、编程和文件处理等…...
MySQL中【正则表达式】用法
MySQL 中正则表达式通过 REGEXP 或 RLIKE 操作符实现(两者等价),用于在 WHERE 子句中进行复杂的字符串模式匹配。以下是核心用法和示例: 一、基础语法 SELECT column_name FROM table_name WHERE column_name REGEXP pattern; …...
【C++从零实现Json-Rpc框架】第六弹 —— 服务端模块划分
一、项目背景回顾 前五弹完成了Json-Rpc协议解析、请求处理、客户端调用等基础模块搭建。 本弹重点聚焦于服务端的模块划分与架构设计,提升代码结构的可维护性与扩展性。 二、服务端模块设计目标 高内聚低耦合:各模块职责清晰,便于独立开发…...
dify打造数据可视化图表
一、概述 在日常工作和学习中,我们经常需要和数据打交道。无论是分析报告、项目展示,还是简单的数据洞察,一个清晰直观的图表,往往能胜过千言万语。 一款能让数据可视化变得超级简单的 MCP Server,由蚂蚁集团 AntV 团队…...
Linux --进程控制
本文从以下五个方面来初步认识进程控制: 目录 进程创建 进程终止 进程等待 进程替换 模拟实现一个微型shell 进程创建 在Linux系统中我们可以在一个进程使用系统调用fork()来创建子进程,创建出来的进程就是子进程,原来的进程为父进程。…...
elementUI点击浏览table所选行数据查看文档
项目场景: table按照要求特定的数据变成按钮可以点击 解决方案: <el-table-columnprop"mlname"label"名称"align"center"width"180"><template slot-scope"scope"><el-buttonv-if&qu…...
