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

目录

一、复杂系统组成

二、接入系统 (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.mzph.cn/news/665480.shtml

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

相关文章

React中的事件处理逻辑

在React中,事件处理逻辑是通过在组件上添加事件监听器来实现的。事件监听器是一个函数,它会在特定的事件发生时被调用。可以通过以下几个步骤来处理事件逻辑: 在组件类中定义事件处理函数。例如,可以在组件类中定义一个叫做handleClick的事件…

比瓴科技入围软件供应链安全赛道!为关键信息基础设施安全建设注入新动力

1月20日,中关村华安关键信息基础设施安全保护联盟会员大会暨关键信息基础设施安全保护论坛在北京成功举办,比瓴科技作为会员单位受邀出席。 本次论坛发布了《关键信息基础设施安全保护支撑能力白皮书(2023)》,比瓴科技…

蓝桥杯客观题练习笔记

1、蓝桥杯单片机开发板供电为几V? 5V DS18B20是单工通讯,还是半双工通讯?为什么? 将时钟线,数据线,控制线和电源线合并为一根线,只要符合单总线协议的器件都能以从机的身份挂接到单总线上与主…

【开源】SpringBoot框架开发大学计算机课程管理平台

目录 一、摘要1.1 项目介绍1.2 项目录屏 二、功能模块2.1 实验课程档案模块2.2 实验资源模块2.3 学生实验模块 三、系统设计3.1 用例设计3.2 数据库设计3.2.1 实验课程档案表3.2.2 实验资源表3.2.3 学生实验表 四、系统展示五、核心代码5.1 一键生成实验5.2 提交实验5.3 批阅实…

许昌路280号3号办公楼室内精装修项目

许昌路280号3号办公楼室内精装修项目 (招标编号:2024-上水管线-201) 项目所在地区:上海市 一、招标条件 本许昌路280号3号办公楼室内精装修项目已由项目审批/核准/备案机关批准,项目资金来源为国有资金0万元:私有资金0万元;境外资金0万元;自筹资金480万元;外国政府及…

获取真实 IP 地址(二):绕过 CDN(附链接)

一、DNS历史解析记录 DNS 历史解析记录指的是一个域名在过去的某个时间点上的DNS解析信息记录。这些记录包含了该域名过去使用的IP地址、MX记录(邮件服务器)、CNAME记录(别名记录)等 DNS 信息。DNS 历史记录对于网络管理员、安全研…

架构师为什么要写文档?又该如何写文档呢?

大家好,我是冰河~~ 最近有很多小伙伴,也不乏身边的一些同事问我:哎,架构师为什么要写这么多文档啊?有啥用呢?不能跟开发一样多写写代码吗?天天写文档,又感觉自己的文档写不好&#…

2023年12月CCF-GESP编程能力等级认证Python编程五级真题解析

Python等级认证GESP(1~6级)全部真题・点这里 一、单选题(共15题,共30分) 第1题 通讯卫星在通信网络系统中主要起到( )的作用。 A:信息过滤 B:信号中继 C:避免攻击 D:数据加密 答案:B 第2题 小杨想编写一个判断任意输入的整数N是否为素数的程序,下面哪个方法…

怪物联萌小游戏

欢迎来到程序小院 怪物联萌 玩法:将怪物连体,怪物只能直线上下左右移动,躲过障碍物,共16关卡, 不同关卡不同界面,遇到金币记得吃掉金币哦,会获得更高分数,快去闯关吧^^。开始游戏ht…

纯血鸿蒙来了,鸿蒙App开发该如何提速

“全世界做产品挣钱的公司很多,但有能力打造操作系统的公司没有几家,最后世界上的操作系统就只有三套:鸿蒙、iOS和安卓。” --- 360集团创始人、董事长周鸿祎 “HarmonyOS实现了AI框架、大模型、设计系统、编程框架、编程语言、编译器等全栈…

git的分支操作

目录 简介: 操作:查看 操作:创建 操作:切换​编辑 操作:本地分支推送到远程 操作:git merge [name]合并分支​编辑 简介: 在Git中,可以通过分支来管理和处理不同的版本和功能。分…

一文读懂C++的类和对象以及多态的原理

现实生活中,关于类和对象最好的例子是自然界的动物类,本文将以此为场景逐步引入C的概念,达到学习的目的。因为C这门语言本身有很多繁杂的内容,而网上的资源也是参差不齐,有的人见山谈山遇水聊水,有多人故弄…

已解决!AttributeError: ‘Sequential‘ object has no attribute ‘session‘ 问题

博主猫头虎的技术世界 🌟 欢迎来到猫头虎的博客 — 探索技术的无限可能! 专栏链接: 🔗 精选专栏: 《面试题大全》 — 面试准备的宝典!《IDEA开发秘籍》 — 提升你的IDEA技能!《100天精通Golang》…

事件在状态流程图中的工作方式

什么是事件? 事件是一个Stateflow对象,它可以触发以下对象中一个动作: Simulink触发子系统 Simulink函数调用子系统 状态流程图 何时使用事件 当你想: 激活Simulink触发的子系统 激活Simulink函数调用子系统 在状态流程图…

MySQL进阶之触发器

触发器 触发器是与表有关的数据库对象,指在insert/update/delete之前(BEFORE)或之后(AFTER),触 发并执行触发器中定义的SQL语句集合。触发器的这种特性可以协助应用在数据库端确保数据的完整性 , 日志记录 , 数据校验等操作 。 使用别名OLD和NEW来引用…

EtherCAT转ModbusTCP网关

一、功能概述 1.1设备简介 本产品是EtherCAT和Modbus TCP网关,使用数据映射方式工作。 本产品在EtherCAT侧作为EtherCAT从站,接TwinCAT、CodeSYS、PLC等;在ModbusTCP侧做为ModbusTCP主站(Client)或从站(…

openstack

在虚拟机上安装完openstack之后,根据你想提供的服务,再去安装一些组件(服务),比如说 (Nova):用于虚拟机的管理、调度和协调。 (Neutron):用于管理虚拟网络和网络服务。 (Cinder):提供块级存储服务&#…

c语言---操作符(详解)

目录 一、操作符的分类二、算术操作符三、 移位操作符3.1<<左移操作符3.1.1移位规则3.1.2直接上代码以及解释 3.2>> 右移操作符3.2.1移位规则3.2.2画图解释 3.3注意 四、位操作符&#xff1a;&、|、^、~4.1&按位与4.1.1按位与的计算逻辑4.1.2代码4.1.3运行…

2024程序员就业咋办?

国际研究机构Gartner会在每年10月份左右发布下一年度的战略发展趋势预测&#xff0c;并在次年3月左右发布和网络安全相关的趋势预测。绿盟科技通过将近3年的趋势预测进行分组对比分析后发现&#xff0c;除了众人皆知的AI技术应用外&#xff0c;数据模块化、身份优先安全、行业云…

阿里云OSS对象存储

一、前言 阿里云对象存储OSS作用&#xff1a;用于存储图片、视屏、文件等数据。 参考阿里云文档地址&#xff1a;阿里云对象存储教程 二、总体思路 说明&#xff1a;客户端给服务端发送请求&#xff0c;获取policy和signature等数据&#xff08;服务端提供&#xff09;&#…