信息系统常见的系统架构
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); /…...
RestClient
什么是RestClient RestClient 是 Elasticsearch 官方提供的 Java 低级 REST 客户端,它允许HTTP与Elasticsearch 集群通信,而无需处理 JSON 序列化/反序列化等底层细节。它是 Elasticsearch Java API 客户端的基础。 RestClient 主要特点 轻量级ÿ…...

XML Group端口详解
在XML数据映射过程中,经常需要对数据进行分组聚合操作。例如,当处理包含多个物料明细的XML文件时,可能需要将相同物料号的明细归为一组,或对相同物料号的数量进行求和计算。传统实现方式通常需要编写脚本代码,增加了开…...
在软件开发中正确使用MySQL日期时间类型的深度解析
在日常软件开发场景中,时间信息的存储是底层且核心的需求。从金融交易的精确记账时间、用户操作的行为日志,到供应链系统的物流节点时间戳,时间数据的准确性直接决定业务逻辑的可靠性。MySQL作为主流关系型数据库,其日期时间类型的…...
【根据当天日期输出明天的日期(需对闰年做判定)。】2022-5-15
缘由根据当天日期输出明天的日期(需对闰年做判定)。日期类型结构体如下: struct data{ int year; int month; int day;};-编程语言-CSDN问答 struct mdata{ int year; int month; int day; }mdata; int 天数(int year, int month) {switch (month){case 1: case 3:…...

VB.net复制Ntag213卡写入UID
本示例使用的发卡器:https://item.taobao.com/item.htm?ftt&id615391857885 一、读取旧Ntag卡的UID和数据 Private Sub Button15_Click(sender As Object, e As EventArgs) Handles Button15.Click轻松读卡技术支持:网站:Dim i, j As IntegerDim cardidhex, …...

如何在看板中有效管理突发紧急任务
在看板中有效管理突发紧急任务需要:设立专门的紧急任务通道、重新调整任务优先级、保持适度的WIP(Work-in-Progress)弹性、优化任务处理流程、提高团队应对突发情况的敏捷性。其中,设立专门的紧急任务通道尤为重要,这能…...

苍穹外卖--缓存菜品
1.问题说明 用户端小程序展示的菜品数据都是通过查询数据库获得,如果用户端访问量比较大,数据库访问压力随之增大 2.实现思路 通过Redis来缓存菜品数据,减少数据库查询操作。 缓存逻辑分析: ①每个分类下的菜品保持一份缓存数据…...
python如何将word的doc另存为docx
将 DOCX 文件另存为 DOCX 格式(Python 实现) 在 Python 中,你可以使用 python-docx 库来操作 Word 文档。不过需要注意的是,.doc 是旧的 Word 格式,而 .docx 是新的基于 XML 的格式。python-docx 只能处理 .docx 格式…...
rnn判断string中第一次出现a的下标
# coding:utf8 import torch import torch.nn as nn import numpy as np import random import json""" 基于pytorch的网络编写 实现一个RNN网络完成多分类任务 判断字符 a 第一次出现在字符串中的位置 """class TorchModel(nn.Module):def __in…...
CSS设置元素的宽度根据其内容自动调整
width: fit-content 是 CSS 中的一个属性值,用于设置元素的宽度根据其内容自动调整,确保宽度刚好容纳内容而不会超出。 效果对比 默认情况(width: auto): 块级元素(如 <div>)会占满父容器…...