系统架构设计高级技能 · Web架构
现在的一切都是为将来的梦想编织翅膀,让梦想在现实中展翅高飞。
Now everything is for the future of dream weaving wings, let the dream fly in reality.
点击进入系列文章目录
系统架构设计高级技能 · Web架构
- 一、Web架构介绍
- 1.1 Web架构涉及技术
- 1.2 单台服务器到数据库与Web服务器分离
- 1.3 应用服务器集群
- 二、负载均衡
- 2.1 引入负载均衡
- 2.2 负载均衡技术
- 2.3 应用层负载均衡
- 2.3.1 HTTP重定向
- 2.3.2反向代理服务器
- 2.4 传输层负载均衡
- 2.4.1 DNS域名解析负载均衡
- 2.4.2 基于NAT的负载均衡
- 2.5 负载均衡 - 静态与动态算法
- 2.6 Session共享机制
- 2.7 有状态与无状态
- 三、持久化技术 - ORM
- 四、数据库技术
- 五、缓存技术
- 五、并发分流 - CDN
- 六、数据编码
- 6.1 XML
- 6.2 JSON
- 七、Web应用服务器
- 八、REST
- 九、响应式Web设计
- 十、中台
- 十一、云计算
- 十二、边缘计算
- 十三、Web系统分层
- 十四、物联网架构
- 十五、大数据架构

一、Web架构介绍
Web架构 高性能、高可用、可维护、应变、安全。
1.1 Web架构涉及技术

1.2 单台服务器到数据库与Web服务器分离

1.3 应用服务器集群

应用服务器集群,将产生如下问题:
- 用户的请求由谁来转发到具体的应用服务器。
- 用户如果每次访问到的服务器不一样,那么如何维护session的一致性(负载均衡和有无状态问题)。
那如何解决呢?可以用负载均衡技术解决。
二、负载均衡
2.1 引入负载均衡

2.2 负载均衡技术

2.3 应用层负载均衡
2.3.1 HTTP重定向
HTTP重定向就是应用层的 请求转发。用户的请求其实已经到了HTTP重定向负载均衡服务器,服务器根据算法要求用户重定向,用户收到重定向请求后,再次请求真正的集群。
特点:实现简单,但性能较差。
2.3.2反向代理服务器
在用户的请求到达 反向代理 服务器时(已经到达网站机房),由反向代理服务器根据算法转发到具体的服务器。常用的apache、nginx都可以充当反向代理服务器。
特点:部署简单,但代理服务器可能成为性能的瓶颈。
2.4 传输层负载均衡
2.4.1 DNS域名解析负载均衡
DNS域名解析负载均衡就是在用户请求DNS服务器,获取域名对应的IP地址时,DNS服务器直接给出负载均衡后的服务器IP。
特点:效率比HTTP重定向高,减少维护负载均衡服务器成本。但一个应用服务器故障,不能及时通知DNS,而且DNS负载均衡的控制权在域名服务商那里,网站无法做更多的改善和更强大的管理。
2.4.2 基于NAT的负载均衡
基于NAT的负载均衡将一个外部IP地址映射为多个IP地址,对每次连接请求动态地转换为一个内部节点的地址。
特点:技术较为成熟,一般在网关位置,可以通过硬件实现。像四层交换机一般就采用了这种技术。
2.5 负载均衡 - 静态与动态算法
-
静态算法(不考虑动态负载)
(1)轮转算法,轮流将服务请求(任务)调度给不同的节点(即:服务器)。
(2)加权轮转算法,考虑不同节点处理能力的差异。
(3)源地址哈希散列算 法,根据请求的源IP地址,作为散列键从静态分配的散列表找出对应的节点。
(4)目标地址哈希散列算法,根据请求目标IP做散列找出对应节点。
(5)随机算法,随机分配,简单,但不可控。 -
动态算法(考虑动态负载)
(1)最小连接数算法,每个节点处理能力相同的情况下,新请求分配给当前活动请求数量最少的节点。
(2)加权最小连接数算法:考虑节点处理能力不同,按最小连接数分配。
(3)加权百分比算法:考虑了节点的利用率、硬盘速率、进程个数等,使用利用率来表现剩余处理能力。 -
硬件负载均衡:F5
-
软件负载均衡:LVS、Nginx、HAprox
2.6 Session共享机制

2.7 有状态与无状态
-
无状态服务(stateless service) 对单次请求的处理,不依赖其他请求,也就是说,处理一次请求所需的全部信息,要么都包含在这个请求里,要么可以从外部获取到(比如说数据库),服务器本身不存储任何信息。
-
有状态服务(stateful service) 则相反,它会在自身保存一些数据,先后的请求是有关联的。
判断以下构件是有状态服务还是无状态服务:
(1)ldentification Bean(身份认证构件)有状态
(2)ResPublish Bean(资源发布构件)无状态
(3)ResRetrieval Bean(资源检索构件)无状态
(4)onlineEdit Bean(在线编辑构件)有状态
(5)Statistics Bean(统计分析构件)无状态
三、持久化技术 - ORM
ORM (Object Relational Mapping),对象与关系数据之间的映射。
映射关系表
| 面向对象 | 关系数据库 |
|---|---|
| 类(class | 数据库的表(table) |
| 对象(object) | 记录(record,行数据) |
| 对象的属性(attribute | 字段(field) |
实现技术对比表
| 维度 Hibernate | MyBatis |
|---|---|
| 对比 强大、复杂、间接、SQL无关(HQL语句) | 小巧、简单、直接、SQL有关 |
| 可移植性 好(不关心具体数据库) | 差(根据数据库SQL编写) |
| 复杂多表关联 | 不支持 |
四、数据库技术

五、缓存技术


五、并发分流 - CDN
CDN的全称是Content Delivery Network ,即内容分发网络。其基本思路是尽可能避开互联网上有可能影响数据传输速度和稳定性的瓶颈和环节,使内容传输得更快、更稳定。
CND内容分发网络

六、数据编码
6.1 XML
扩展标记语言(Extensible Markup Language,XML) ,用于标记电子文件使其具有结构性的标记语言,可以用来标记数据、定义数据类型,是一种允许用户对自己的标记语言进行定义的源语言。
-
优点:
(1)格式统一,符合标准。
(2)容易与其他系统进行远程交互,数据共享比较方便。 -
缺点:
(1)XML文件庞大,文件格式复杂,传输占带宽。
(2)服务器端和客户端都需要花费大量代码来解析XML,导致服务器端和客户端代码变得异常复杂且不易维护。
(3)客户端不同浏览器之间解析XML的方式不一致,需要重复编写很多代码。
(4)服务器端和客户端解析XML花费较多的资源和时间。
6.2 JSON
JSON(JavaScript 0bject Notation) 一种轻量级的数据交换格式,具有良好的可读和便于快速编写的特性。可在不同平台之间进行数据交换。
-
优点:
(1)数据格式比较简单,易于读写,格式都是压缩的,占用带宽小。
(2)易于解析,客户端JavaScript可以简单的通过eval()进行JSON数据的读取。
(3)支持多种语言,包括ActionScript、C、 C#、ColdFusion、Java、JavaScript、Perl、PHP、Python、Ruby等服务器端语言,便于服务器端的解析。
(4)因为JSON格式能直接为服务器端代码使用,大大简化了服务器端和客户端的代码开发量,且完成任务不变,并且易于维护。 -
缺点:
(1)某些领域XML更通用。
七、Web应用服务器
Web应用服务器可以理解为两层意思:
(1)WEB服务器,其职能较为单一,就是把浏览器发过来的Request请求返回Html页面。
(2)应用服务器,进行业务逻辑的处理。
-
Apache:Web服务器,市场占有率60%左右。它可以运行在几乎所有的Unix、Windows、Linux系统平台上。
-
IIS,早期Web服务器,目前小规模站点仍有应用。
-
Tomcat,开源、运行Servlet和JSP Web应用软件的基于Java的Web应用软件容器。
-
JBOSS,JBOSS是基于J2EE的开放源代码的应用服务器。一般与Tomcat或Jetty绑定使用。
-
WebSphere,一种功能完善、开放的Web应用程序服务器,它是基于Java的应用环境,用于建立、部署和管理lnternet和Intranet Web应用程序。
-
WebLogic,BEA WebLogic Server是一种多功能、基于标准的web应用服务器,为企业构建自己的应用提供了坚实的基础。
-
Jetty, Jetty是一个开源的servlet容器,它为基于Java的web内容,例如JSP和servlet提供运行环境。
八、REST
REST (Representational State Transfer,表述性状态转移) 是一种通常使用HTTP和XML进行基于Web通信的技术,可以降低开发的复杂性,提高系统的可伸缩性。
REST的5个原则:
(1)网络上的所有事物都被抽象为资源。
(2)每个资源对应一个唯一的资源标识。
(3)通过通用的连接件接口对资源进行操作。
(4)对资源的各种操作不会改变资源标识。
(5)所有的操作都是无状态的。
九、响应式Web设计
响应式Web设计是一种网络页面设计布局 ,其理念是:集中创建页面的图片排版大小,可以智能地根据用户行为以及使用的设备环境进行相对应的布局。例如,满足手机端,平板,PC端等多种设备下的全部适应。
方法与策略:
(1)采用流式布局和弹性化设计:使用相对单位,设定百分比而非具体值的方式设置页面元素的大小。
(2)响应式图片:不仅要同比的缩放图片,还要在小设备上降低图片自身的分辨率。
十、中台
__中台是一套结合互联网技术和行业特性,将企业核心能力以共享服务形式沉淀,形成“大中台、小前台”的组织和业务机制,供企业快速低成本的进行业务创新的企业架构。中台又可以进一步细分,比如业务中台、数据中台、XX中台。本质上,都是对企业通用能力在不同层面的沉淀,并对外能力开放。
中台的践行者
Supercell,芬兰移动游戏巨头,2015年世界游戏前10占5席,员工仅200多人,因使用中台,具有小团队快速开发能力,后被腾讯86亿美金收购。
阿里,2015年参观Supercell,而后推行中台。

-
业务中台 :提供重用服务,例如学员中心、课程中心之类的开箱即用可重用能力。
-
数据中台 :提供数据整合分析能力,帮助企业从数据中学习改进,调整方向。
-
技术中台 :提供技术重用组件能力,帮助解决基础技术平台的复用。如,中间件、分布式存储、AI、负载均衡等基础设施。

业务中台 vs 数据中台
(1)多个电商渠道使用一个下单服务,一个订单接口同时为多个前台系统提供服务。
(2)多个前台系统,根据一个用户的手机号,获取对应的画像、用户的标签。
(3)将多个支付通道,抽象建立成一个支付API,暴露给前台业务系统。
(4)通过一个订单编号,来获取可能的商品推荐清单,从而做到交叉销售。
数据中台必备的4个核心能力:
(1)数据汇聚整合能力
(2)数据提纯加工能力
(3)数据服务可视化
(4)价值变现方面
十一、云计算
云计算 是集合了大量计算设备和资源,对用户屏蔽底层差异的分布式处理架构,其用户与提供实际服务的计算资源是相分离的。
优点:超大规模、虚拟化、高可靠性、高可伸缩性、按需服务、成本低【前期投入低、综合使用成本也低】。
-
按照服务类型分类:
(1) Saas(软件即服务) ,基于多租户技术实现,直接提供应用程序。
(2) Paas(平台即服务) ,虚拟中间件服务器、运行环境和操作系统。
(3) laaS(基础设施即服务) ,包括服务器、存储和网络等服务。 -
按照部署方式分类:
(1) 公有云,面向互联网用户需求,通过开放网络提供云计算服务。
(2) 私有云,面向企业内部提供云计算服务。
(3) 混合云,兼顾以上两种情况的云计算服务,公有云和私有云通过网络进行数据与应用的交互。
架构图如下:

(1)管理层,提供对所有层次云计算服务的管理功能。
(2)用户访问层,方便用户使用云计算服务所需的各种支撑服务,针对每个层次的云计算服务都需要提供相应的访问接口。
(3)应用层,提供软件服务,如:财务管理、客户关系管理、商业智能。
(3)平台层,为用户提供对资源层服务的封装,使用户可以构建自己的应用。
(4)资源层,提供虚拟化的资源,从而隐藏物理资源的复杂性。如:服务器、存储。
十二、边缘计算
边缘计算 是指在靠近物或数据源头的一侧,采用网络、计算、存储、应用核心能力为一体的开放平台,就近提供最近端服务,其本质是计算处理职能的本地化。


十三、Web系统分层

十四、物联网架构

(1)应用层 ,应用服务智能终端。
(2)平台层 ,操作系统软件开发设备管理平台连接管理平台。
(3)网络层 ,接入网核心网业务网专有网络通信标准/协议。
(3)感知层 ,传感器芯片通信模组感知类智能设备/装置。
十五、大数据架构

点击返回主目录
相关文章:
系统架构设计高级技能 · Web架构
现在的一切都是为将来的梦想编织翅膀,让梦想在现实中展翅高飞。 Now everything is for the future of dream weaving wings, let the dream fly in reality. 点击进入系列文章目录 系统架构设计高级技能 Web架构 一、Web架构介绍1.1 Web架构涉及技术1.2 单台服务…...
再写CentOS7升级OpenSSL-1.0.1U
本文在CentOS7.4以及TencentOS 2.4上测试通过。 原系统自带OpenSSL 1.0.2k-fips。 编译安装方法跟之前的没啥区别。 从官网下载1.0.1u版https://www.openssl.org/source/ 使用tar解包 tar xfz openssl-1.0.1u.tar.gz 依次执行如下: cd openssl-1.0.1u ./con…...
HBase--技术文档--基本概念--《快速扫盲》
官网 Apache HBase – Apache HBase™ Home 阿里云hbase 云数据库HBase_大数据存储_订单风控_数据库-阿里云 云数据库 HBase-阿里云帮助中心 基本概念 HBase是一种分布式、可扩展、支持海量数据存储的NoSQL数据库。它基于Hadoop,采用列式存储方式,可…...
如何利用SFTP协议远程实现更安全的文件传输 ——【内网穿透】
🎬 鸽芷咕:个人主页 🔥 个人专栏: 《高效编程技巧》《cpolar》 ⛺️生活的理想,就是为了理想的生活! 文章目录 1. 安装openSSH1.1 安装SSH1.2 启动ssh 2. 安装cpolar2.1 配置termux服务 3. 远程SFTP连接配置3.1 查看生成的随机公…...
深度学习8:详解生成对抗网络原理
目录 大纲 生成随机变量 可以伪随机生成均匀随机变量 随机变量表示为操作或过程的结果 逆变换方法 生成模型 我们试图生成非常复杂的随机变量…… …所以让我们使用神经网络的变换方法作为函数! 生成匹配网络 培养生成模型 比较基于样本的两个概率分布 …...
sql入门-多表查询
案例涉及表 ----------------------------------建表语句之前翻看之前博客文章 多表查询 -- 学生表 create table studen ( id int primary key auto_increment comment id, name varchar(50) comment 姓名, no varchar(10) comment 学号 ) comment 学生表; insert…...
软考A计划-网络工程师-必考知识点-上
点击跳转专栏>Unity3D特效百例点击跳转专栏>案例项目实战源码点击跳转专栏>游戏脚本-辅助自动化点击跳转专栏>Android控件全解手册点击跳转专栏>Scratch编程案例点击跳转>软考全系列点击跳转>蓝桥系列 👉关于作者 专注于Android/Unity和各种游…...
kafka复习:(17)seekToBeginning的用法
从分区的开始进行消费,因为kafka会定期清理历史数据,所以分区开始的位移不一定为0。seekToBeginning只是从目前保留的数据中最小的offset进行消费 package com.cisdi.dsp.modules.metaAnalysis.rest.kafka2023;import org.apache.kafka.clients.consume…...
C# textBox1.Text=““与textBox1.Clear()的区别
一、区别 textbox.Text "" 和 textbox.Clear() 都可以用于清空文本框的内容,但它们之间有一些细微的区别。 textbox.Text "": 这种方式会将文本框的 Text 属性直接设置为空字符串。这样会立即清除文本框的内容,并将文本框显示为空…...
CnetSDK .NET OCR SDK Crack
CnetSDK .NET OCR SDK Crack CnetSDK.NET OCR库SDK是一款高度准确的.NET OCR扫描仪软件,用于使用手写、文本和其他符号等图像进行字符识别。它是一款.NET OCR库软件,使用Tesseract OCR引擎技术,可将字符识别准确率提高99%。通过将此.NET OCR扫…...
Python最新面试题汇总及答案
一、基础部分 1、什么是Python?为什么它会如此流行?Python是一种解释的、高级的、通用的编程语言。Python的设计理念是通过使用必要的空格与空行,增强代码的可读性。它之所以受欢迎,就是因为它具有简单易用的语法 2、为什么Pytho…...
设计模式(单例模式,工厂模式),线程池
目录 什么是设计模式? 单例模式 饿汉模式 懒汉模式 工厂模式 线程池 线程池种类 ThreadPoolExcutor的构造方法: 手动实现一个线程池 什么是设计模式? 计算机行业程序员水平层次不齐,为了让所有人都能够写出规范的代码,于是就有了设计模式,针对一些典型的场景,给出一…...
在mybatis中的mapper.xml中如何使用parameterType实现方法单个传参,对象传参,多参数传参.
在MyBatis的mapper.xml文件中,可以使用parameterType属性来指定方法的参数类型。parameterType属性用于指定传递给映射方法的参数类型,这将影响到MyBatis在映射方法执行时如何处理参数。 以下是三种不同情况下如何在mapper.xml中使用parameterType实现方…...
No120.精选前端面试题,享受每天的挑战和学习
文章目录 浏览器强制缓存和协商缓存cookie,localStorage、sessionStoragejs闭包,原型,原型链箭头函数和普通函数的区别promise的状态扭转 浏览器强制缓存和协商缓存 浏览器缓存是浏览器用于提高网页加载速度的一种机制。浏览器缓存分为强制缓…...
c# 访问sqlServer数据库时的连接字符串
//sql server 身份验证的场合, 连接字符串 private string ConnstrSqlServer "server服务器名称;uid登录名称;pwd登录密码;database数据库名称"; //windows 身份验证连接字符串 private string ConnstrWindows "server服务器名称;database数据库…...
排序算法概述
1.排序算法分类 **比较类算法排序:**通过比较来决定元素的时间复杂度的相对次序,由于其时间复杂度不能突破 O ( n l o g n ) O(nlogn) O(nlogn),因此也称为非线性时间比较类算法 **非比较类算法排序:**不通过比较来决定元素间的…...
ChatGPT在高等教育中的应用利弊探讨
人工智能在教育领域的应用日益广泛。2022年11月OpenAI开发的聊天机器人ChatGPT在全球范围内流传开来,其中用户数量最多的国家是美国(15.22%)。由于ChatGPT应用广泛,具有类似人类回答问题的能力,它正在成为许多学生和教育工作者的可信赖伙伴…...
Java之API详解之Runtime的详细解析
3.1 概述 Runtime表示Java中运行时对象,可以获取到程序运行时设计到的一些信息 3.2 常见方法 常见方法介绍 我们要学习的Object类中的常见方法如下所示: public static Runtime getRuntime() //当前系统的运行环境对象 public void exit(int statu…...
机器学习之softmax
Softmax是一个常用于多类别分类问题的激活函数和归一化方法。它将一个向量的原始分数(也称为 logits)转换为概率分布,使得每个类别的概率值在0到1之间,同时确保所有类别的概率之和等于1。Softmax函数的定义如下: 对于…...
npm script命令
1 串行/并行执行命令 //串行 npm-run-all text test npm run text && npm run test //并行改成& npm-run-all --parallel text test npm run text & npm run test2 传递参数 {"lint": "eslint js/*.js","lint:fix":…...
手游刚开服就被攻击怎么办?如何防御DDoS?
开服初期是手游最脆弱的阶段,极易成为DDoS攻击的目标。一旦遭遇攻击,可能导致服务器瘫痪、玩家流失,甚至造成巨大经济损失。本文为开发者提供一套简洁有效的应急与防御方案,帮助快速应对并构建长期防护体系。 一、遭遇攻击的紧急应…...
k8s业务程序联调工具-KtConnect
概述 原理 工具作用是建立了一个从本地到集群的单向VPN,根据VPN原理,打通两个内网必然需要借助一个公共中继节点,ktconnect工具巧妙的利用k8s原生的portforward能力,简化了建立连接的过程,apiserver间接起到了中继节…...
Swagger和OpenApi的前世今生
Swagger与OpenAPI的关系演进是API标准化进程中的重要篇章,二者共同塑造了现代RESTful API的开发范式。 本期就扒一扒其技术演进的关键节点与核心逻辑: 🔄 一、起源与初创期:Swagger的诞生(2010-2014) 核心…...
九天毕昇深度学习平台 | 如何安装库?
pip install 库名 -i https://pypi.tuna.tsinghua.edu.cn/simple --user 举个例子: 报错 ModuleNotFoundError: No module named torch 那么我需要安装 torch pip install torch -i https://pypi.tuna.tsinghua.edu.cn/simple --user pip install 库名&#x…...
HarmonyOS运动开发:如何用mpchart绘制运动配速图表
##鸿蒙核心技术##运动开发##Sensor Service Kit(传感器服务)# 前言 在运动类应用中,运动数据的可视化是提升用户体验的重要环节。通过直观的图表展示运动过程中的关键数据,如配速、距离、卡路里消耗等,用户可以更清晰…...
使用Spring AI和MCP协议构建图片搜索服务
目录 使用Spring AI和MCP协议构建图片搜索服务 引言 技术栈概览 项目架构设计 架构图 服务端开发 1. 创建Spring Boot项目 2. 实现图片搜索工具 3. 配置传输模式 Stdio模式(本地调用) SSE模式(远程调用) 4. 注册工具提…...
基于PHP的连锁酒店管理系统
有需要请加文章底部Q哦 可远程调试 基于PHP的连锁酒店管理系统 一 介绍 连锁酒店管理系统基于原生PHP开发,数据库mysql,前端bootstrap。系统角色分为用户和管理员。 技术栈 phpmysqlbootstrapphpstudyvscode 二 功能 用户 1 注册/登录/注销 2 个人中…...
Linux入门课的思维导图
耗时两周,终于把慕课网上的Linux的基础入门课实操、总结完了! 第一次以Blog的形式做学习记录,过程很有意思,但也很耗时。 课程时长5h,涉及到很多专有名词,要去逐个查找,以前接触过的概念因为时…...
比较数据迁移后MySQL数据库和ClickHouse数据仓库中的表
设计一个MySQL数据库和Clickhouse数据仓库的表数据比较的详细程序流程,两张表是相同的结构,都有整型主键id字段,需要每次从数据库分批取得2000条数据,用于比较,比较操作的同时可以再取2000条数据,等上一次比较完成之后,开始比较,直到比较完所有的数据。比较操作需要比较…...
【R语言编程——数据调用】
这里写自定义目录标题 可用库及数据集外部数据导入方法查看数据集信息 在R语言中,有多个库支持调用内置数据集或外部数据,包括studentdata等教学或示例数据集。以下是常见的库和方法: 可用库及数据集 openintro库 该库包含多个教学数据集&a…...
