快速理解复杂系统组成学习内容整合

news2024/11/16 1:41:09

目录

一、复杂系统组成

二、接入系统 (Access System)

三、应用系统 (Application System)

四、基础平台 (Foundation Platform)

五、中间件 (Abundant External Middleware)

六、支撑系统 (Supporting System)

参考文章


一、复杂系统组成

复杂系统是由多个相互关联、相互作用的组件组成的大型系统,通过这些组件的协同工作来完成特定的任务或提供特定的服务。在设计复杂系统时,通常会考虑以下五个关键模块,具体如下:

简单介绍如下:

模块定义例子
接入系统 (Access System)系统与外部世界进行交互的入口,负责处理外部请求、验证身份、收集输入等。用户界面、API端点、外部传感器等
应用系统 (Application System)整个系统的核心,负责处理业务逻辑、执行特定功能和任务,包括系统的主要功能和算法。业务逻辑、数据处理、核心功能模块等
基础平台 (Foundation Platform)提供支持应用系统运行的底层基础设施,包括硬件、操作系统、数据库管理系统等。服务器、存储系统、操作系统、数据库等
大量外部的中间件 (Abundant External Middleware)连接和协调系统不同组件的软件层,系统依赖于多种外部工具和服务,用于增强功能、提高性能或满足特定需求。消息队列、缓存系统、身份验证服务、监控工具等
支撑系统 (Supporting System)包括维护和管理整个系统所需的各种支持服务,如日志记录、监控、安全性、备份等。日志系统、监控系统、安全系统、备份系统等

二、接入系统 (Access System)

接入系统,它负责接收用户的请求,然后把用户的请求分发到某个Web服务器进行处理,接入系统主要包括DNS域名解析、负载均衡、Web服务器这些组件。

想象一个在线购物平台,用户在浏览器中输入商店的域名,触发了以下过程:

  1. DNS域名解析: 用户的域名通过DNS解析得到相应的IP地址,确定了在线购物平台的服务器位置。

  2. 负载均衡: 用户的请求到达后,负载均衡器检测当前各个Web服务器的负载情况,并将请求分发给最空闲的服务器,确保各服务器能够均衡处理流量。

  3. Web服务器: 最终,用户的请求到达Web服务器,该服务器处理并返回相应的页面,展示给用户。如果有大量用户同时访问,负载均衡器会根据负载情况动态调整分发策略,确保整个系统的稳定性和性能。

其中简单的技术点可能如下:

阶段技术实现实现方案
DNS域名解析- 使用专业的DNS解析服务提供商或自建DNS服务器。- 采用Anycast技术,将DNS服务器分布在全球,提高解析速度。
负载均衡- 使用专业的负载均衡设备或软件(如Nginx、HAProxy)。- 采用轮询或基于权重的算法,确保每个Web服务器均衡处理流量。
Web服务器- 高性能的Web服务器(如Nginx、Apache)。- 使用多台Web服务器构建集群,确保高峰时期的大量用户请求。
- 应用服务器(如Tomcat、Node.js)处理动态内容。- 使用自动伸缩技术,根据实时负载动态调整服务器数量。
- CDN缓存静态资源,减轻服务器压力。- 使用缓存技术,提高系统的响应速度。
安全性和高可用性- SSL证书、HTTPS协议保障用户数据传输安全。- 使用防火墙、IDS等安全措施,确保系统的安全性。
- 备份和灾备系统跨可用区和跨地理区域部署。- 使用Web应用防火墙(WAF)进行Web应用层攻击防御。

三、应用系统 (Application System)

应用系统是整个系统的核心,负责处理业务逻辑、执行特定功能和任务,包括系统的主要功能和算法。

构建一个成功的应用系统需要考虑多个方面,具体要根据你的应用系统的性质和目标来调整。在整个开发过程中,与团队合作、进行测试以及定期审查进展。

出发点点上起吗应该具备:

  1. 明确目标和用户需求: 在开始开发之前,确保清楚你的应用系统的目标是什么,以及你的目标用户是谁。了解用户需求,确保你的应用系统解决了真实的问题或提供了有价值的服务。

  2. 用户体验设计(UX): 设计一个直观、易用的界面,确保用户能够轻松地理解和操作你的应用系统。注重用户体验可以提高用户留存率和满意度。鼓励用户提供反馈,并在可能的情况下积极采纳用户建议。

  3. 性能、稳定性可扩展性: 确保你的应用系统具有良好的性能和稳定性。优化代码、数据库查询以及其他关键流程,以确保用户在使用过程中不会遇到延迟或崩溃。考虑到应用系统的未来发展,设计具有良好可扩展性的架构。

  4. 安全性、合规性: 保护用户数据和隐私是至关重要的。采取适当的安全措施,包括加密通信、身份验证和授权机制,以防止潜在的攻击和数据泄露。确保你的应用系统符合法规和行业标准,特别是涉及用户数据和隐私的方面。

  5. 多平台兼容性: 如果可能,考虑设计一个可以在不同平台上运行的应用系统,例如Web、移动端和桌面。这有助于扩大用户基础。

  6. 数据管理和分析: 实施有效的数据管理和分析功能,以便了解用户行为、应用性能和其他关键指标。助于做出基于数据的决策,并不断改进你的应用系统。

在技术方面,选择合适的技术架构和实现方式,要保持灵活性,不断关注技术发展趋势,以确保应用系统始终采用最新、最适合的技术,随时适应变化的需求。比如:

  1. 合适的技术栈、前后端分离: 根据应用系统的需求和目标选择合适的技术栈。考虑到性能、可维护性、开发速度等因素,选择适合项目的编程语言、数据库、框架等技术。采用前后端分离的架构,例如使用RESTful API或GraphQL,可以使前端和后端独立开发、测试和维护,提高团队的灵活性。

  2. 微服务架构、云服务: 如果应用系统规模较大或有复杂的业务逻辑,考虑使用微服务架构可以使系统更容易扩展、部署和维护,并促使团队更好地分工合作。同样考虑使用云服务提供商,如AWS、Azure或Google Cloud等,以便更好地管理基础设施、提高可伸缩性,并受益于云服务的弹性和安全性。

  3. 容器化和编排: 使用容器技术,如Docker,并考虑使用容器编排工具,如Kubernetes,以简化应用部署、管理和维护。

  4. 自动化测试和持续集成/持续交付(CI/CD): 实施全面的自动化测试,包括单元测试、集成测试和端到端测试,以确保代码质量。采用CI/CD流程,实现自动化的构建、测试和部署,提高交付速度和可靠性。

待看的开源项目和文献,后期可以学习:

  • Django: 一个用于构建Web应用的Python框架。
  • Ruby on Rails: 一个用于构建Web应用的Ruby框架。
  • Spring Boot: 一个用于构建Java应用的框架。

四、基础平台 (Foundation Platform)

基础平台:首先是各个语言的运行时,比如说JVM;然后是容器或虚拟机;下面还有操作系统;最底下就是硬件和网络。

  1. 运行时环境: 运行时环境包括各种编程语言的运行时,例如Java Virtual Machine (JVM)、Node.js、.NET Common Language Runtime (CLR)等。每个运行时环境负责解释和执行相应编程语言的代码。

  2. 容器或虚拟机: 容器和虚拟机提供了隔离和虚拟化的环境,使得应用程序可以在独立的容器或虚拟机中运行,而不受外部环境的影响。这有助于确保应用程序在不同环境中的一致性和可移植性。

  3. 操作系统: 操作系统是基础平台的核心组成部分,负责管理硬件资源,提供基本的系统服务,以及为应用程序提供一个抽象的运行环境。常见的操作系统包括Linux、Windows Server等。

  4. 硬件和网络: 这是基础平台的底层,包括服务器、存储设备、网络设备等。硬件提供计算、存储和网络资源,是应用系统正常运行的物理基础。

这部分的学习基本都是基础课程,一些基本学习资料可以后期在看看:

  • Coursera - Operating Systems: Three Easy Pieces: 理解操作系统基本概念基础课程;
  • Docker Documentation: Docker 官方文档,容器化信息学习基础;
  • Kubernetes Documentation: Kubernetes 官方文档,学习容器编排基础;
  • The Java™ Tutorials: Oracle 提供的 Java 官方教程,算Java基础了;
  • "Computer Organization and Design: The Hardware/Software Interface" by David A. Patterson and John L. Hennessy.

  • "Computer Networking: Principles, Protocols and Practice" by Olivier Bonaventure.

五、中间件 (Abundant External Middleware)

中间件在软件架构中发挥着重要而不可忽视的作用。它们通常充当系统中不同组件之间的连接和协调层,提供了一些关键的功能,对于构建可靠、高性能、可扩展的应用系统至关重要。虽然在系统设计中增加中间件会引入一定的复杂性,但在大多数情况下,它们为系统带来的好处远远超过了引入的复杂性。主要的学习架构如下:

六、支撑系统 (Supporting System)

在大型应用系统中,这些支撑系统往往是构建和运营复杂系统不可或缺的组成部分。它们确保了系统的可靠性、安全性、可维护性和高效性。

支撑系统功能常见工具
日志系统收集、存储和分析系统生成的日志,用于故障排查、性能监控、安全审计等ELK Stack(Elasticsearch, Logstash, Kibana)、Splunk、Fluentd
配置系统管理应用程序的配置信息,支持动态配置更新,确保系统配置的一致性和可变性Spring Cloud Config、Consul、etcd
运维系统提供系统的运维和管理功能,包括监控、自动化部署、资源调度、性能优化等Kubernetes、Docker Swarm、Ansible、Chef、Puppet
监控系统实时监控系统的性能指标、日志、错误和异常,帮助及时发现和解决问题Prometheus、Grafana、Nagios、Datadog
安全系统确保系统的安全性,包括身份认证、访问控制、加密、漏洞扫描等OAuth、JWT、Firewall、WAF(Web Application Firewall)

参考文章

1.架构实战案例解析_架构案例_后端架构-极客时间

2.【系统】系统-CSDN博客

3.一文正确理解 分层架构系统 的接入层设计,以及接入层设计常见的问题和解决方案(雪崩、降级、限流、熔断)_业务接入层-CSDN博客

4.Middleware 入门指南:到底什么是中间件?

5.一文带你读懂中间件-腾讯云开发者社区-腾讯云

6.01|中间件生态(上):有哪些类型的中间件? - 知乎

7.中间件核心技术与实战_中间件_丁威_架构_数据库中间件_Redis_MyCat_中通_架构师_-极客时间

8.SOFA中间件包含哪些产品_金融分布式架构(SOFAStack)-阿里云帮助中心

9.

10.

11.

12.

13.

14.

15.

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

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

相关文章

【c++】vector用法详解

vector用法详解 vector定义vector容器的构造函数vector容器内元素的访问1.通过下标 [ ]来访问2.通过迭代器来访问3.通过范围for来访问 vector常用函数的用法解析1.size()2.clear()3.capacity()4.reserve()5.resize()6.shrink_to_fit()7.pop_back()8.push_back()9.erase()10.in…

TQ15EG开发板教程:使用vivado2023.1建立hello world工程

1:打开软件建立工程 2:使用vivado创建设计模块并生成bit文件 3:导出硬件平台,使用vitis建立工程 4:使用vitis创建应用程序项目 5:硬件设置与调试 1:打开软件建立工程 打开VIVADO2023.1 创建一个新的工程 输入项目名称和地址,下面那个选项为是否…

有关使用Lombok@Builder注解构建对象返回为空

目录 问题 原因 解决方案 问题 使用lombokBuilder注解构建对象返回结果为空 原因 Builder注解底层调用setter等方法赋值,你如果没加Data注解就赋值不上,idea也不会错误警示,运行也不会抛出异常,这个平时不注意漏掉这个点还真…

AI Partition(银灿U盘分区工具)V2.0.0.3

AI Partition(银灿U盘分区工具)V2.0.0.3.zip 复制链接下载吧 https://url20.ctfile.com/f/36743220-1017367709-67f1b9?p2024 (访问密码: 2024) 支持IS903B IS902E IS916 AI Partition(银灿U盘分区量产工具) 这个是银灿官方发布的最新版U盘分区工具,版本号V2.0.0…

开源浏览器Firefox:使用Docker本地部署并远程访问进行测试

🌈个人主页:聆风吟 🔥系列专栏:网络奇遇记、数据结构 🔖少年有梦不应止于心动,更要付诸行动。 文章目录 📋前言一. 部署Firefox二. 本地访问Firefox三. Linux安装Cpolar四. 配置Firefox公网地址…

实战打靶集锦-023-oscp

文章目录 1. 主机发现2. 端口扫描3. 服务枚举4. 服务探查4.1 探查ssh4.2 探查Apache4.2.1 爆破admin4.2.2 利用secret.txt 5. 提权5.1 枚举主机信息5.2 查看passwd文件5.3 枚举定时任务5.4 枚举可执行文件5.5 查看EXP5.6 Capabilities位5.7 Linpeas提权 靶机地址:ht…

[python]基于LSTR车道线实时检测onnx部署

【框架地址】 https://github.com/liuruijin17/LSTR 【LSTR算法介绍】 LSTR车道线检测算法是一种用于识别和定位车道线的计算机视觉算法。它基于图像处理和机器学习的技术,通过对道路图像进行分析和处理,提取出车道线的位置和方向等信息。 LSTR车道线…

深入理解网络通信和TCP/IP协议

目录 计算机网络是什么? 定义和分类 计算机网络发展简史 计算机网络体系结构 OSI 七层模型 TCP/IP 模型 TCP/IP 协议族 TCP/IP 网络传输中的数据 地址和端口号 MAC地址 IP 地址 端口号 为什么端口号有65535个? 综述 TCP 特性 TCP 三次握…

【Linux】统信服务器操作系统V20 1060a-AMD64 Vmware安装

目录 ​编辑 一、概述 1.1 简介 1.2 产品特性 1.3 镜像下载 二、虚拟机安装 一、概述 1.1 简介 官网:统信软件 – 打造操作系统创新生态 统信服务器操作系统V20是统信操作系统(UOS)产品家族中面向服务器端运行环境的,是一款…

外贸流程的基本流程图怎么画?这样画简单快速

外贸流程的基本流程图怎么画?随着全球化的不断深入,外贸行业逐渐成为了国家经济发展的重要支柱。对于许多企业和个人来说,掌握外贸基本流程是非常必要的。但是,很多人在初次接触外贸时,对于流程的各个环节并不熟悉&…

c语言--二进制和其他进制之间的转换

目录 一、前言二、二进制、十进制、十六进制、八进制的组成2.1二进制的组成2.2十进制的组成2.3八进制的组成2.4十六进制的组成 三、二进制转换为十进制3.1 二进制转换为十进制3.2十进制转换为二进制 四、二进制转八进制和十六进制4.1二进制转八进制4.2二进制转换为十六进制 五、…

【Iot】什么是串口?什么是串口通信?串口通信(串口通讯)原理,常见的串口通信方式有哪些?

串口通信原理 1. 串口2. 串口通信4. 波特率与比特率5. 帧格式3. 串口通讯的通讯协议3.1. RS2323.2. RS485 总结 1. 串口 串行接口简称串口,也称串行通信接口或串行通讯接口(通常指COM接口),是采用串行通信方式的扩展接口。 串口可…

浅谈安科瑞消防产品在酒店行业的应用-安科瑞 蒋静

摘要:进入 21 世纪以来,随着网络技术的发展,世界经济呈现全球化趋势,作为消费者衣食住行的重要组成部分,酒店行业也是生活服务市场重要的组成部分。在经济发展的环境下,在旅游业兴起的趋势下,酒…

Multisim14.0仿真(四十七)基于74LS161计数器设计

一、74LS161简介: 74LS161是4位二进制同步计数器,该计数器能同步并行预置数据,具有清零置数、计数和保持功能,具有进位输出端。可串接计数器使用。 二、74LS161引脚定义及说明: CLR:为异步清零控制端。 LOAD:为同步置数控制端 ENP,ENT:为计数控制端 D , C , B , A :为…

如何提高销售线索的质量和数量?这篇文章教会您

提高销售线索质量和数量的方法有:一、优化网站和营销内容;二、利用社交媒体和网络营销;三、提供优质的客户服务和体验;四、定期的市场调研和数据分析;五、建立合作关系和联盟;六、持续学习和创新。通过这些…

多名汇友爆料:在Primemax平台怎么也提不了现!

近期,有多名汇友向我站爆料,称其交易的Primemax平台怎么也出不了金。多名用户在Primemax平台无法出金 据一汇友描述,骗子最初是通过Line加了她好友,聊天中,对方俨然一副阳光帅气的精英人士形象,然后套近乎获…

C++初阶:适合新手的手撕string类(模拟实现string类)

上次讲了常用的接口:C初阶:初识STL、String类接口详细讲解(万字解析) 今天就来进行模拟实现啦 文章目录 1.基本结构与文件规划2.构造函数(constructor)2.1构造函数2.1.1无参有参分开2.1.2利用缺省参数合起来 2.2拷贝构…

Vue 学习随笔系列九 -- 表格中插入图片、背景、自定义表头

表格中插入图片和icon 文章目录 表格中插入图片和icon一、如何插入图片1、代码2、效果 二、文字添加背景1、代码2、效果 三、表头悬浮提示语四、表头添加图标 一、如何插入图片 1、代码 <template><div><el-tablesize"small"borderv-loading"l…

WordPress每天发布60s插件

源码名称:WordPress每天发布60s插件 适用平台:WordPress Wordpress还是比较适合个人博客网站&#xff0c;这个60秒插件适合一些喜欢自动发新闻早报晚报人员 喜欢的赶紧下手。找 万能工具箱合集 小程序即可找到资源

乐鑫与 Elektor 杂志合作推出特刊,聚焦 AIoT 创新

在新一年的起始之际&#xff0c;我们很荣幸地与 Elektor 合作推出由乐鑫领衔编辑的杂志特刊。欢迎点此阅读电子版本。 Elektor 杂志作为国际电子工程和科技创新的重要平台&#xff0c;自 20 世纪 60 年代起&#xff0c;就引领着电子制造的发展潮流。如今&#xff0c;它已经发展…