系分 - 案例分析 - 架构设计(Web架构)

news2024/11/29 0:38:52

在这里插入图片描述

个人总结,仅供参考,欢迎加好友一起讨论

文章目录

  • 案例分析 - 系统设计(Web架构)
  • Web架构知识点
  • 单台机器 到 数据库与Web服务器分离
  • 应用服务器集群
  • 负载均衡
    • 负载均衡技术
    • 静态与动态算法
    • Session共享机制
    • 有状态与无状态
  • 持久化技术ORM
  • 数据库技术
  • CND内容分发网络
  • XML与JSON
  • Web应用服务器
  • REST
  • 响应式Web设计
  • 中台
  • 云计算
  • 边缘计算
  • Web系统分层
  • 物联网架构
  • 大数据架构
  • 典型例题
    • 题目描述
    • 参考答案

案例分析 - 系统设计(Web架构)

Web架构知识点

高性能、高可用、可维护、应变、安全

在这里插入图片描述

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

在这里插入图片描述

应用服务器集群

在这里插入图片描述

应用服务器集群,将产生如下问题:

  • 用户的请求由谁来转发到具体的应用服务器
  • 用户如果每次访问到的服务器不一样,那么如何维护session的一致性(负载均衡和有无状态问题)

负载均衡

在这里插入图片描述

负载均衡技术

在这里插入图片描述

应用层负载均衡

http重定向

HTTP重定向就是应用层的请求转发。用户的请求其实已经到了HTTP重定向负载均衡服务器,服务器根据算法要求用户重定向,用户收到重定向请求后,再次请求真正的集群。

特点:实现简单,但性能较差。

反向代理服务器

在用户的请求到达反向代理服务器时(已经到达网站机房),由反向代理服务器根据算法转发到具体的服务器。常用的apache、nginx都可以充当反向代理服务器。

特点:部署简单,但代理服务器可能成为性能的瓶颈。

传输层负载均衡

DNS域名解析负载均衡

DNS域名解析负载均衡就是在用户请求DNS服务器,获取域名对应的IP地址时,DNS服务器直接给出负载均衡后的服务器IP。

特点:效率比HTTP重定向高,减少维护负载均衡服务器成本。但一个应用服务器故障,不能及时通知DNS,而且DNS负载均衡的控制权在域名服务商那里,网站无法做更多的改善和更强大的管理。

基于NAT的负载均衡

基于NAT的负载均衡将一个外部IP地址映射为多个IP地址,对每次连接请求动态地转换为一个内部节点的地址。

特点:技术较为成熟,一般在网关位置,可以通过硬件实现。像四层交换机一般就采用了这种技术。

静态与动态算法

静态算法(不考虑动态负载)

  • 轮转算法,轮流将服务请求(任务)调度给不同的节点(即:服务器)。
  • 加权轮转算法,考虑不同节点处理能力的差异。
  • 源地址哈希散列算法,根据请求的源IP地址,作为散列键从静态分配的散列表找出对应的节点。
  • 目标地址哈希散列算法,根据请求目标IP做散列找出对应节点。
  • 随机算法,随机分配,简单,但不可控。

动态算法(考虑动态负载)

  • 最小连接数算法,每个节点处理能力相同的情况下,新请求分配给当前活动请求数量最少的节点。
  • 加权最小连接数算法:考虑节点处理能力不同,按最小连接数分配。
  • 加权百分比算法:考虑了节点的利用率、硬盘速率、进程个数等,使用利用率来表现剩余处理能力。

硬件负载均衡:F5

软件负载均衡:LVS、Nginx、HAprox

Session共享机制

在这里插入图片描述

有状态与无状态

无状态服务(stateless service)对单次请求的处理,不依赖其他请求,也就是说,处理一次请求所需的全部信息,要么都包含在这个请求里,要么可以从外部获取到(比如说数据库),服务器本身不存储任何信息。

有状态服务(stateful service)则相反,它会在自身保存一些数据,先后的请求是有关联的。

判断以下构件是有状态服务还是无状态服务:

  • ldentification Bean(身份认证构件)
  • ResPublish Bean(资源发布构件)
  • ResRetrieval Bean(资源检索构件)
  • onlineEdit Bean(在线编辑构件)
  • Statistics Bean(统计分析构件)

持久化技术ORM

ORM (Object Relational Mapping),对象与关系数据之间的映射。

映射关系表

面向对象关系数据库
类(class)数据库的表(table)
对象(object)记录(record,行数据)
对象的属性(attribute)字段(field)

实现技术对比表

维度HibernateMyBatis
对比强大、复杂、间接、SQL无关(HQL语句)小巧、简单、直接、SQL有关
可移植性好(不关心具体数据库)差(根据数据库SQL编写)
复杂多表关联不支持支持

数据库技术

详细请跳转案例数据库分析,请移步以下连接:
案例分析 - 数据库设计(基本)
案例分析 - 数据库设计(分布式)

CND内容分发网络

在这里插入图片描述

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

XML与JSON

XML

扩展标记语言(Extensible Markup Language,XML),用于标记电子文件使其具有结构性的标记语言,可以用来标记数据、定义数据类型,是一种允许用户对自己的标记语言进行定义的源语言。

优点:

  • 格式统一,符合标准。
  • 容易与其他系统进行远程交互,数据共享比较方便。

缺点:

  • XML文件庞大,文件格式复杂,传输占带宽。
  • 服务器端和客户端都需要花费大量代码来解析XML,导致服务器端和客户端代码变得异常复杂且不易维护。
  • 客户端不同浏览器之间解析XML的方式不一致,需要重复编写很多代码。
  • 服务器端和客户端解析XML花费较多的资源和时间。

JSON

JSON(JavaScript 0bject Notation)一种轻量级的数据交换格式,具有良好的可读和便于快速编写的特性。可在不同平台之间进行数据交换。

优点:

  • 数据格式比较简单,易于读写,格式都是压缩的,占用带宽小。
  • 易于解析,客户端JavaScript可以简单的通过eval()进行JSON数据的读取。
  • 支持多种语言,包括ActionScript、C、 C#、ColdFusion、Java、JavaScript、Perl、PHP、Python、Ruby等服务器端语言,便于服务器端的解析。
  • 因为JSON格式能直接为服务器端代码使用,大大简化了服务器端和客户端的代码开发量,且完成任务不变,并且易于维护。

缺点:

  • 某些领域XML更通用。

Web应用服务器

Wwb应用服务器可以理解为两层意思:

  • WEB服务器,其职能较为单一,就是把浏览器发过来的Request请求返回Html页面。
  • 应用服务器,进行业务逻辑的处理。

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个原则:

  • 网络上的所有事物都被抽象为资源。
  • 每个资源对应一个唯一的资源标识。
  • 通过通用的连接件接口对资源进行操作。
  • 对资源的各种操作不会改变资源标识。
  • 所有的操作都是无状态的。

响应式Web设计

响应式Web设计是一种网络页面设计布局,其理念是:集中创建页面的图片排版大小,可以智能地根据用户行为以及使用的设备环境进行相对应的布局。例如,满足手机端,平板,PC端等多种设备下的全部适应。

方法与策略:

  • 采用流式布局和弹性化设计:使用相对单位,设定百分比而非具体值的方式设置页面元素的大小。
  • 响应式图片:不仅要同比的缩放图片,还要在小设备上降低图片自身的分辨率。

中台

中台是一套结合互联网技术和行业特性,将企业核心能力以共享服务形式沉淀,形成“大中台、小前台”的组织和业务机制,供企业快速低成本的进行业务创新的企业架构。中台又可以进一步细分,比如业务中台、数据中台、XX中台。本质上,都是对企业通用能力在不同层面的沉淀,并对外能力开放。

中台的践行者

Supercell,芬兰移动游戏巨头,2015年世界游戏前10占5席,员工仅200多人,因使用中台,具有小团队快速开发能力,后被腾讯86亿美金收购。

阿里,2015年参观Supercell,而后推行中台。

例如阿里中台:

在这里插入图片描述

业务中台:提供重用服务,例如学员中心、课程中心之类的开箱即用可重用能力。

数据中台:提供数据整合分析能力,帮助企业从数据中学习改进,调整方向。

技术中台:提供技术重用组件能力,帮助解决基础技术平台的复用。如,中间件、分布式存储、AI、负载均衡等基础设施。

业务中台 vs 数据中台

  • 多个电商渠道使用一个下单服务,一个订单接口同时为多个前台系统提供服务。
  • 多个前台系统,根据一个用户的手机号,获取对应的画像、用户的标签。
  • 将多个支付通道,抽象建立成一个支付API,暴露给前台业务系统。
  • 通过一个订单编号,来获取可能的商品推荐清单,从而做到交叉销售。

数据中台必备的4个核心能力:

  • 数据汇聚整合能力
  • 数据提纯加工能力
  • 数据服务可视化
  • 价值变现方面

云计算

云计算是集合了大量计算设备和资源,对用户屏蔽底层差异的分布式处理架构,其用户与提供实际服务的计算资源是相分离的。

优点:超大规模、虚拟化、高可靠性、高可伸缩性、按需服务、成本低【前期投入低、综合使用成本也低】。

按照服务类型分类:

  • Saas(软件即服务),基于多租户技术实现,直接提供应用程序。
  • Paas(平台即服务),虚拟中间件服务器、运行环境和操作系统。
  • laaS(基础设施即服务),包括服务器、存储和网络等服务。

按照部署方式分类:

  • 公有云,面向互联网用户需求,通过开放网络提供云计算服务。
  • 私有云,面向企业内部提供云计算服务。
  • 混合云,兼顾以上两种情况的云计算服务,公有云和私有云通过网络进行数据与应用的交互。

架构图如下:

在这里插入图片描述

  • 管理层,提供对所有层次云计算服务的管理功能。
  • 用户访问层,方便用户使用云计算服务所需的各种支撑服务,针对每个层次的云计算服务都需要提供相应的访问接口。
  • 应用层,提供软件服务,如:财务管理、客户关系管理、商业智能。
  • 平台层,为用户提供对资源层服务的封装,使用户可以构建自己的应用。
  • 资源层,提供虚拟化的资源,从而隐藏物理资源的复杂性。如:服务器、存储。

边缘计算

边缘计算是指在靠近物或数据源头的一侧,采用网络、计算、存储、应用核心能力为一体的开放平台,就近提供最近端服务,其本质是计算处理职能的本地化。

在这里插入图片描述
在这里插入图片描述

Web系统分层

在这里插入图片描述

物联网架构

应用层,应用服务智能终端。

平台层,操作系统软件开发设备管理平台连接管理平台。

网络层,接入网核心网业务网专有网络通信标准/协议。

感知层,传感器芯片通信模组感知类智能设备/装置。

在这里插入图片描述

大数据架构

在这里插入图片描述

典型例题

题目描述

阅读以下关于Web系统架构设计的叙述,在答题纸上回答问题1至问题3。

某电子商务企业因发展良好,客户量逐步增大,企业业务不断扩充,导致其原有的B2C商品交易平台已不能满足现有业务需求。因此,该企业委托希赛公司重新开发一套商品交易平台。该企业要求新平台应可适应客户从手机、平板设备、电脑等不同终端设备访问系统,同时满足电商定期开展“秒杀”“限时促销”等活动的系统高并发访问量的需求。面对系统需求,希赛公司召开项目组讨论会议,制定系统设计方案。讨论会议上,王工提出可以应用响应式Web设计满足客户从不同设备正确访问系统的需求。同时,采用增加镜像站点、CDN内容分发等方式解决高并发访问量带来的问题。李工在王工的提议上补充,仅仅依靠上述外网加速技术不能完全解决高用户并发访问问题,如果访问量持续增加,系统仍存在崩溃可能。李工提出应同时结合负载均衡、缓存服务器、Web应用服务器、分布式文件系统、分布式数据库等方法设计系统架构。经过项目组讨论,最终决定综合王王和李工的思路,完成新系统的架构设计。

【问题1】

请用200字以内的文字描述什么是“响应式Web设计”,并列举2个响应式Web设计的实现方式。

【问题2】

综合王工和李工的提议,项目组完成了新商品交易平台的系统架构设计方案。新系统架构图如下图所示。请从选项(a)~(j)中为架构图中(1)~(8)处空白选择相应的内容,补充支持高并发的Web应用系统架构设计图。

在这里插入图片描述

(a)Web应用层(b)界面层(c)负载均衡层(d)CDN内容分发(e)主数据库

(f)缓存服务器集群(g)从数据库(h)写操作(i)读操作(j)文件服务器集群

【问题3】

根据李工的提议,新的B2C商品交易平台引入了主从复制机制。请针对B2C商品交易平台的特点,简要叙述引入该机制的好处。

参考答案

【问题1】

响应式web设计是指我们设计与开发的页面可以根据用户的行为和不同的设备环境做出相应的响应来调整页面的布局,以提供用户可感知的、流畅的阅读和操作体验。

实现方式:(1)流式布局(2)弹性布局,如弹性图片(3)媒体查询

【问题2】

(1):(d)

(2):(c)

(3):(f)

(4):(a)

(5):(e)

(6):(h)

(7):(g)

(8):(i)

【问题3】

(1)提升性能,交易平台要求高并发,主从复制方式一主多从,不同的用户请求可以从不同的从数据库读取数据,提高并发度

(2)可扩展性更优,如果采用单台数据库服务器,则访问量持续增加时,数据库瓶颈暴露,且无法迅速解决问题。而主从结构可以快速增加从服务器数量,以满足需求。

(3)提升可用性,一主多从,一台从服务器出现故障不影响整个系统正常工作。

(4)相当于负载均衡,一主多从分担任务,相当于负载均衡。

(5)提升数据安全性,系统中的数据冗余存放多份,不会因为某台机器硬件故障而导致数据丢失。

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

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

相关文章

22.Isaac教程--使用 Isaac Sight可视化

使用 Isaac Sight可视化 本节介绍如何使用 Isaac Sight 检查导航堆栈,机器人上当前发生的情况。 Sight 使用 Isaac 节点,该节点运行可在设备上连接的 Web 服务。 通过在 Chrome 网络浏览器中导航到 http://localhost:3000 来启动 Isaac Sight。 &#x…

(详解)java:无效的目标发行版: 11

目录 背景 解决方法 1.打开文件下的Project Structure 如下图: 2. 3. 4.完毕 背景 其实出现问题的真正原因是你下载别人的代码,但是别人的JDK属于java11 或者java9,但是你的为java8 或者更低 解决方法 1.打开文件下的Project Structure 如下图&a…

微信小程序——视图与逻辑,页面导航(导航到 tabBar 页面,导航到非 tabBar 页面)

一.页面导航1.什么是页面导航页面导航指的是页面之间的相互跳转。例如&#xff0c;浏览器中实现页面导航的方式有如下两种&#xff1a;a.< a &#xff1e;链接b.location . href2&#xff0e;小程序中实现页面导航的两种方式声明式导航在页面上声明一个&#xff1c; navigat…

nodejs框架koa,egg以及es6一起学

文章目录前言问题关于ES6-Generatoregg中的处理Promisenode的fsWorksheet Object参考文档前言 大家知道&#xff0c;eggjs框架是基于Koa开发的。关于koa&#xff0c;有一张经典的洋葱图&#xff1a; 这张图比较形象地展示了koa对于request和response的处理。每一层都留下扩展…

【RabbitMQ】高级篇,学习纪录+笔记

目录 一.高级特性 1.1消息的可靠投递 2.1Consumer Ack 3.1消费端限流 4.1TTL 5.1死信队列 6.1延迟队列 7.1日志与监控 7.1.1日志 7.1.2监控 8.1消息追踪 8.1.1Firehose 8.1.2rabbitmq_tracing 9.1消息可靠性保障&#xff08;思路&#xff09; 9.2消息幂等性保障&…

Hash算法,插入排序,希尔排序,选择排序,冒泡排序,归并排序,快速排序,堆排序,基数排序

Hash算法hash就是散列表&#xff0c;就是把任意长度的输入通过散列算法变换成固定长度的输出&#xff0c;该输出就是散列值。实质就是压缩映射&#xff0c;散列值的空间通常远小于输入的空间。常利用hash算法&#xff0c;将输入的一千万个检索串转化为题目中所说大约三百万个不…

《Linux Shell脚本攻略》学习笔记-第七章

7.1 简介 随着磁盘存储技术的发展&#xff0c;最简单地备份方法是添加新的磁盘设备或是使用云存储&#xff0c;而不再是依赖磁盘。 但是也需要压缩备份数据&#xff0c;降低存储空间需求以及传输时间。把数据存放在云端之前应该对其加密。数据在加密之前通常都要先进行归档和压…

2.2总线的性能指标

文章目录一、总线传输周期二、总线时钟周期三、总线工作频率四、总线时钟频率五、总线宽度六、总线带宽1.概念2.注意点3.案例分析4.总结补充七、总线复用八、信号线数九、总结这一节我们一起学习评价 总线性能的指标&#xff0c;这些指标很可能在选择题或者大题第一小题出现。一…

Git团队协作及分支策略

目录 分布式版本控制系统 访问模型 分支策略-Git flow feature 分支策略-Github flow 分支策略-Gitlab flow 主干开发模式 总结 分布式版本控制系统 分布式相比于集中式的最大区别在于开发者可以提交到本地&#xff0c;每个开发者通过克隆&#xff08;git clone&#…

Pytest参数化-下篇

&#x1f60e;&#x1f60e;原文出自&#xff1a;测个der&#xff0c;博主的公众号&#xff0c;格式美观一些。 关于参数化的其他案例 数据嵌套及多参数传参 import pytestpwd_datas [["QINGAN",{"user":"SHIER","pwd":"1234…

5个关键词回顾2022年个推技术实践

作为一家数据智能服务商&#xff0c;2022年每日互动&#xff08;个推&#xff09;在为开发者和行业客户提供优质服务的同时&#xff0c;不断砥砺创新&#xff0c;追逐技术前沿。个推还持续参与开发者生态建设&#xff0c;积极总结、分享自身技术实战经验&#xff0c;面向行业输…

该如何测客户端专项测试?

整个行业现在越来越重视客户端的专项测试了。像接口的性能测试、webview 测试、H5性能分析等&#xff0c;每一项都需要测试。而对于卡顿的分析、系统资源分析、耗电量测试及弱网测试这块&#xff0c;也变得越来越重要了&#xff01;后面也会有相关的文章更新。大家可以戳此关注…

快解析远程访问解决方案——安全稳定,部署简单

我们说的远程办公通常指狭义上的远程办公&#xff0c;是指通过远程技术&#xff0c;或远程控制软件&#xff0c;对远程电脑进行操作办公&#xff0c;实现非本地办公&#xff0c;如在家办公、异地办公、移动办公等远程办公模式。这种技术的关键在于:穿透内网和远程控制的安全性。…

Wisej.NET 3.1.6 Crack

新功能 Wisej.NET 3.1 通过添加几个新的独特功能和简化的安装过程增强了里程碑 3.0 版本。 除了大量错误修复和对我们库的显着性能增强之外&#xff0c;3.1 还包括以下值得注意的新功能&#xff1a; 视觉工作室市场 Wisej.NET 现在比以往任何时候都更容易使用。或 Visual Studi…

联合证券|五大国际巨鳄集体爆雷,美股期指大跳水!

商场现已进入到雷雨季&#xff01; 周五晚间&#xff0c;花旗、摩根大通、高盛、富国和贝莱德团体爆雷。 花旗集团上一年第四季度每股收益低于预期&#xff0c;尽管营收好于预期。花旗集团Q4每股收益1.16美元&#xff0c;预期为1.17美元。财报发布之后一度暴降超3%&#xff1b;…

【机器学习之模型融合】Stacking堆叠法

目录 1、Stacking的基本思想&#x1f48d; 2、思考&#x1f48e; 3、在sklearn中实现Stacking&#x1f3af; 3.1、导入工具库和数据&#x1f455; 3.2、定义交叉验证评估函数&#x1f457; 3.3、个体学习器与元学习器的定义&#x1f357; 3.4、模型构建&#x1f36a; 4…

【Linux】创建新用户 sudo配置,添加信任

目录 一、创建新用户 二、sudo不被允许 三、添加信任用户 一、创建新用户 相关指令&#xff1a; adduser [用户名]&#xff1a;创建新用户 passwd [用户名]&#xff1a;修改用户密码 su [用户名]&#xff1a;切换到该用户 设置密码&#xff0c;重复输入两遍之后&#xff0…

大数据技术架构(组件)——Hive:环境准备1

1.0.1、环境准备1.0.1.0、maven安装1.0.1.0.1、下载软件包1.0.1.0.2、配置环境变量1.0.1.0.3、调整maven仓库打开$MAVEN_HOME/conf/settings.xml文件&#xff0c;调整maven仓库地址以及镜像地址<settings xmIns"http://maven.apache.org/SETTINGS/1.0.0"xmIns:xsi…

电脑磁盘占用率高怎么办?

Windows磁盘占用率高是一种普遍存在的问题&#xff0c;相信很多用户遇到过不止一次&#xff0c;它可能是在刚开机时、可能是在下载文件时、也可能是在开启关闭应用程序时……当磁盘占用高之后&#xff0c;您的计算机运行速度会变得像蜗牛一样缓慢&#xff0c;更糟糕的是有些电脑…

python 代码注释

文章目录写在前面使用方法plainEpytextGoogleNumpyreStructuredText相关程序包其他写在前面 如果说高效率的算法是一个项目的内核&#xff0c;那么完备的文档注释、API 接口则是项目的外壳&#xff0c;直接与客户交互。 pycharm 提供了 5 种 代码注释格式。 分别是 plain, epy…