系统架构设计高级技能 · 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)

实现技术对比表

维度 HibernateMyBatis
对比 强大、复杂、间接、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)感知层 ,传感器芯片通信模组感知类智能设备/装置。

十五、大数据架构

在这里插入图片描述

点击返回主目录

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

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

相关文章

计算机组成原理 | 第一章 计算机系统概述

目录 计算机发展历程 计算机系统层次结构 计算机的性能指标 计算机发展历程 电子计算机的发展已经历了4代,这4代计算机的主要元件分别是电子管、晶体管、中小规模集成电路、大规模集成电路。微型计算机的发展以微处理器技术为标志。可以在计算机中直接执行的语…

快到家了【经济学人】

Refugees Almost home China has successfully absorbed many refugees from Vietnam. But it is ill-prepared for another influx Oct 10th 2015 | QIAOGANG, GUANGXI PROVINCE | From the print edition 来源:Economist 翻译:Z.K. IN A restaurant…

军事物联网如何改变未来战争模式?

军事物联网如何改变未来战争模式? 2017-05-08 17:45:17.0 你是否听说,在物联网的世界里,每一粒沙子都将拥有自己的IP地址。 互联网为我们创造了虚拟世界,与其一字之差的物联网,却为我们开辟了一个从虚拟转向现实的窗口…

去越南旅游,2万人民币能承担几天的花销?

2万人民币可以兑换6600多万越南盾,三年前我有一个同学带着一万块人民币,当时在越南生活了差不多三个月的时间。他之所以会去越南,主要是当时听人家说在越南农村好找老婆,并且彩礼会非常的少,所以就带着一万块钱先去看一看。虽然人回来的时候瘦了点黑了点,但是三个多月只花…

基于springboot学生社团管理系统/基于Java的高校社团管理系统的设计与实现

摘 要 随着信息技术和网络技术的飞速发展,人类已进入全新信息化时代,传统管理技术已无法高效,便捷地管理信息。为了迎合时代需求,优化管理效率,各种各样的管理系统应运而生,各行各业相继进入信息管理时代&…

QChart——折线

Qchart的图形显示依附于QChartView,创建一个QChartView继承类,通过窗口部件的提升进行图表的显示 一、简单认识QLineSeries QLineSeries属于折线类,它继承于QXYSeries类,可以使用QXYSeries类所有方法,对折线进行属性设…

前端需要理解的性能优化知识

优化的目的是展示更快、交互响应快、页面无卡顿情况。 1 性能指标 2 分析方法 使用 ChromeDevTool 作为性能分析工具来观察页面性能情况。其中Network观察网络资源加载耗时及顺序,Performace观察页面渲染表现及JS执行情况,Lighthouse对网站进行整体评分…

基于android的学生公寓后勤系统/学生公寓管理系统APP

摘 要 随着网络科技的发展,移动智能终端逐渐走进人们的视线,相关应用越来越广泛,并在人们的日常生活中扮演着越来越重要的角色。因此,关键应用程序的开发成为影响移动智能终端普及的重要因素,设计并开发实用、方便的应…

PCB设计常见问题

Fill Mode中存在3个选项 Solid(Copper Regions) Hatched(Tracks/arcs) None(outlines) 区别Solid(Copper Regions)过大电流的能力更强,且对于电路板存在的分布电容的干扰…

第三张鼠标键盘的高效使用

引言: 对于键盘的熟练使用更是一个网络时的基本技能所有要成为一个好的网络工程师我们应该熟练键盘操作已经能熟练的使用一些常用软件。––键盘和鼠标。速速度的唯一途径就是多演戏打字速快对今后的学习是有好处的。 一 鼠标和键盘 键盘和鼠标是两种常用的输入设备。 (一…

鼠标跟随的实现

鼠标跟随主要根据X,Y轴来计算 主要代码函数是 span[0].style.left event.clientX “px”; 计算X轴 span[0].style.top event.clientY “px”; 计算Y轴 <!DOCTYPE html> <html><head><meta charset"UTF-8"><title></title>&…

虚拟机Ubuntu内鼠标闪烁终极解决方案

话说这个问题很早就遇到了&#xff0c;最近才解决&#xff0c;不免唏嘘。 由于造成鼠标闪烁的原因有很多&#xff0c;鼠标闪烁的特点也有很多&#xff0c;因此网上也充斥着很多解决方案&#xff0c;这里一并做一下梳理&#xff0c;以节约各位看众时间。 1.通用解决方法 这个方…

数据结构--树4.2.1(二叉树)

目录 一、二叉树的存储结构 二、二叉树的遍历 一、二叉树的存储结构 顺序存储结构&#xff1a;二叉树的顺序存储结构就是用一维数组存储二叉树中的各个结点&#xff0c;并且结点的存储位置能体现结点之间的逻辑关系。 链式存储结构&#xff1a;二叉树每个结点最多只有两个孩…

手把手带你学python自动化测试(五)——鼠标键盘操作

在浏览器中&#xff0c;通常会用到鼠标来进行操作&#xff0c;比如右键菜单中选择一个操作&#xff0c;在 selenium 中提供了下列鼠标相关操作。 ActionChains 类似提供了以下方法&#xff1a; context_click() 右击 double_click() 双击 drag_and_drop() 拖拽 鼠标右击 …

7,鼠标学习二

《鼠标学习一》描述的是鼠标在客户区情况下&#xff0c; 当鼠标在非客户区的时候呢&#xff1f; 窗口的非客户区包括&#xff1a;标题栏&#xff0c;菜单和窗口滚动条&#xff0c;系统一般不需要用户处理非客户区消息&#xff0c;只要将其发送个DefWindowProc即可&#xff0c…

Scractch3.0_Arduino_ESP32_图形化编程学习_蓝牙鼠标(四)

蓝牙鼠标 目的器材程序联系我们 目的 通过C02实现蓝牙鼠标。 器材 硬件: 齐护机器人C02 购买地址 软件:scratch3.0 下载地址:官网下载 程序 蓝牙鼠标使用使用ESP32自带的BLE蓝牙&#xff0c;不需要再外接模块。可以实现鼠标移动&#xff0c;左右键的点击动作。 联系我们…

程序员高效技巧系列 -- 完全脱离鼠标的终端

本文将介绍如果在tmux窗口管理环境下完全脱离鼠标完成日常工作 文章欢迎转载&#xff0c;但转载时请保留本段文字&#xff0c;并置于文章的顶部 作者&#xff1a;卢钧轶(cenalulu) 本文原文地址&#xff1a;http://cenalulu.github.io/linux/professional-tmux-skills/ 前言 终…

python模拟鼠标控制思路探讨(一)

前言 近期学了用pynput模块来模拟鼠标操作&#xff0c;可知鼠标移动操作分为两种方式&#xff1a; 设置鼠标坐标&#xff1a;mouse.position (x,y)设置鼠标移动量&#xff1a;mouse.move(dx,dy) 在现实的人为操作中&#xff0c;鼠标移动轨迹不可能是直接的两点直线式移动&a…

方案解读:为什么要选择LPC55系列做电竞鼠标键盘

电竞一词越来越热&#xff0c;农药、LOL、吃鸡不但在手游端大热无比&#xff0c;PC端也是热的发紫&#xff0c;电竞奥运会也指日可待。 随之而来的是电竞类的键盘、鼠标以及耳麦的热销。玩家拼手速的时代要求着键盘鼠标USB Report Rate的提高&#xff0c;不然王者般的手速到了U…

7. 鼠标学习一

鼠标消息&#xff1a; 1.windows只把键盘消息发送到当前具有输入焦点的窗口。鼠标消息则不同&#xff0c;当鼠标经过窗口或在窗口内被单击&#xff0c;则即使该窗口是非活动窗口或不带输入焦点&#xff0c;窗口过程还是会收到鼠标消息。 2.windows定义了21种鼠标消息&#xff…