项目3 构建移动电商服务器集群

项目引入

    经过前期加班加点地忙碌,我们的网站顺利上线了!年中促销活动也如约而至,虽然公司全体对这次活动进行多方面地准备和“布防”,可是意外还是发生了。就在促销优惠购物活动的当天,猛然增加的用户访问量直接导致浏览器购物车提交页面显示“server is too busy”,如此巨大的访问量是我们没有预计到的,服务器繁忙导致许多用户的订单提交不成功,公司客服部的电话响个不停,我们运维部门的压力徒增。

    Philip立刻召开了部门紧急会议。

    Philip:这次年终促销活动对我们的网站平台是一次真实的“压力”测试,测试结果是我们的平台显然还有亟待完善的地方。George你之前和Amanda处理了平台系统搭建的大部分工作,关于这次事件,你认为是什么原因。

    George:用户访问频次的巨量提升是客观因素,对我们的服务器是不小的冲击。但我估计我们对数据库的容量设计没有到位,这次访问压力事件的爆发很可能出在数据库访问瓶颈上。

    Philip:是的,业务情况总有淡旺季,这次促销活动能吸引到这么多用户也是市场那边都没有预估到的。Amanda你觉得数据库设计这块,我们应该从什么方向下手。

    :老大您有一点提醒我了,网站上的用户访问总是有常态和“非常态”,我们的数据库应该有成熟的伸缩架构设计,能够在像这次事件的情况下快速对数据库扩容,尽快缓解用户访问压力。

    解决此类问题,会上决定重新设计构建电商系统集群,先测试稳定后再将现有系统迁移过来

知识总图

任务一:认识服务器集群

1.任务描述

随着mobileshop的业务量增加,规模扩大,对服务器的要求也原来越高,单台服务器已经不能满足业务增长的访问请求,这时候我们所采用的办法是在不影响原有的业务情况下增加服务器数量,下面我们深入学习服务器集群相关知识

2.认识服务器集群

集群(cluster)是将若干台相互独立的计算机,通过网络连接,使它们协同工作,共同完成一项或者多项工作,这样的计算机群体,我们把它叫做计算机集群。集群技术是一种主流技术、也是当前大型移动电商系统部署主要的解决手段。

3.服务器集群的分类

高可用集群,简称HAC

负载均衡,简称LBC

高性能集群,简称HPC

1、高可用集群

       高可用集群高可用集群的英文全称是High Availability,简称HAC。高可用的含义是最大限度地可以使用。从集群的名字上可以看出,此类集群实现的功能是保障用户的应用程序持久、不间断地提供服务。

2、负载均衡集群

       负载均衡集群负载均衡集群也是由两台或者两台以上的服务器组成。分为前端负载调度和后端服务两个部分。负载调度部分负责把客户端的请求按照不同的策略分配给后端服务节点,而后端节点是真正提供应用程序服务的部分。与HA Cluster不同的是,负载均衡集群中,所有的后端节点都处于活动状态,它们都对外提供服务,分摊系统的工作负载。

3、高性能集群

       科学计算集群高性能计算集群,简称HPC集群。这类集群致力于提供单个计算机所不能提供的强大计算能力,包括数值计算和数据处理,并且倾向于追求综合性能。HPC与超级计算类似,但是又有不同,计算速度是超级计算追求的第一目标。最快的速度、最大的存储、最庞大的体积、最昂贵的价格代表了超级计算的特点。随着人们对计算速度需求的提高,超级计算也应用到各个领域,对超级计算追求单一计算速度指标转变为追求高性能的综合指标,即高性能计算。

4.常用集群软硬件的介绍及选型

企业运维中常用的集群软硬件产品

在互联网企业中常用开源负载均衡软件有:LVSNginxHaproxy,常用于高可用开源软件有:KeepalivedHeartbeat

常用负载均衡硬件有:F5NetscalerRadwareA10等,工作模式相当于Haproxy的工作模式。

对于集群负载均衡产品如何选型

现在对网络负载均衡的使用,是随着网站规模的提升,根据不同的阶段来使用不同的技术。

第一阶段:利用Nginx或者Haproxy进行单点载均衡

第二阶段:随着网络服务进一步扩大这时使用LVS或者商用F5就是首要选择

第三阶段:这时网络服务已经成为主流产品开源的LVS,已经成为首选,这时LVS会成为主流。

如何选择开源集群软件产品

中小型互联网企业网站首选Nginx负载均衡考虑负载均衡的高可用功能,建议首先Keepalived软件

大型互联网企业,负载均衡产品可以选择LVS+ Keepalived在前端做四层转发再后面是应用服务器

任务二:负载均衡部署

1.任务描述

在项目2中我们了解了Nginx作为Web服务器的特点,此外Nginx还能作为负载均衡来使用。Nginx作为负载均衡具有很多优点,本节中将深入解析Nginx作为负载均衡的配置和管理

2.负载均衡部署

负载均衡知识网结构

正向代理:

         局域网中的电脑用户想要直接访问网络是不可行的,只能通过代理服务器来访问,这种代理服务就被称为正向代理。

反向代理:

         客户端无法感知代理,因为客户端访问网络不需要配置,只要把请求发送到反向代理服务器,由反向代理服务器去选择目标服务器获取数据,然后再返回到客户端,此时反向代理服务器和目标服务器对外就是一个服务器,暴露的是代理服务器地址,隐藏了真实服务器IP地址。

         客户端发送多个请求到服务器,服务器处理请求,有一些可能要与数据库进行交互,服务器处理完毕之后,再将结果返回给客户端。

普通请求和响应过程

         但是随着信息数量增长,访问量和数据量飞速增长,普通架构无法满足现在的需求。

         可以增加服务器的数量,构建集群,将请求分发到各个服务器上,将原来请求集中到单个服务器的情况改为请求分发到多个服务器,也就是我们说的负载均衡。

         图解负载均衡:假设有15个请求发送到代理服务器,那么由代理服务器根据服务器数量,平均分配,每个服务器处理5个请求,这个过程就叫做负载均衡。

负载均衡介绍

为了解决大容量、高并发访问的问题,移动电商采取集群分布

部署的方式,将应用拆分后,部署到不同的服务器,实现

规模集群分布式系统

负载均衡原理

负载均衡(Load Balance),就是将负载(工作任务,访问

请求)进行平衡、分摊到多个操作单元(服务器,组件)上进行执行。

应用集群:将同一应用部署到多台机器上,组成处理集群,接收负载均衡设备分发的请求,

进行处理,并返回相应数据。

负载均衡设备:将用户访问的请求,根据负载均衡算法,分发到集群中的一台处理服务器。

这是一种把网络请求分散到一个服务器集群中的可用服务器上去的设备。

负载均衡的作用

1.提高响应速度

2.实现服务器高可用

3.扩展性

4.安全防护

5.对外提供一个IP地址

负载均衡分类

1.DNS负载均衡

       历用域名解析实现负载均衡,在DNS服务器配置多个A记录,这些A记录对应的服务器构成

集群。一般部分使用DNS解析,作为第一级负载均衡,如图所示:

1.DNS负载均衡

       在实践应用中,将DNS作为第一级负载均衡,A记录对应着内部负载均衡的多个IP地址,

通过内部负载均衡将请求分发到真实的应用服务器上,如图所示:

2. IP负载均衡  

在网络层通过修改请求目标地址进行负载均衡,称为IP负载均衡。

         后端服务器处理完成后,响应数据包回到负载均衡服务器,负载均衡服务器再将数据包

源地址修改为自身的IP地址,发送给用户浏览器。如图所示:

3.链路层负载均衡

         在通信协议的数据链路层修改MAC地址,进行负载均衡,称为链路层负载均衡。

         实际处理服务器IP和数据请求目的IP一致,不需要经过负载均衡服务器进行地址转换,

可将相应数据包直接返回给用户浏览器,避免负载均衡服务器网卡带宽称为瓶颈,也称为

直接路由模式(DR模式),如图所示:

4.混合型负载均衡

         把多个服务器群当作一个新的服务器群,即为混合型负载均衡。此种方式有时也用于

单台均衡设备的性能 不能满足大量连接请求的情况。是目前大型互联网公司普遍使用的方式。

根据适用的场景不同分为两种方式,方式一:

4.混合型负载均衡

         方式二:

负载均衡算法

1.轮询

       将所有请求一次按顺序分发到后端服务器上,不关心服务器实际连接数和系统负载。

适合服务器硬件相同的场景。

2.随机

       通过系统的随机算法,将请求随机分配到各个服务器。

3.最少链接

       根据后端服务器当前的连接情况,动态地选取其中当前积压连接数最少的一台服务器来处理

当前的请求。

4.Hash(源地址散列)

       根据IP地址进行Hash计算,得到IP地址。

5.加权

       在轮询、随机、最少链接、Hash等算法的基础上,通过分配不同的权重,进行负载服务器

分配。

Nginx负载均衡概述

Ngnix具有反向代理负载均衡功能及环境缓存功能,是工作在七层Http协议的负载均衡系统。在反向代理负载均衡功能方面,它类似于大名鼎鼎的LVS负载均衡及Haproxy等专业代理软件,但是Nginx部署起来更为简单方便;在缓存服务功能方面,它又类似于Squid等专业的缓存服务软件

均衡策略

nginx的负载均衡策略可以划分为两大类:内置策略和扩展策略内置策略包含加权轮询和ip hash。扩展策略包含fair通用hashconsistent hash

Nginx负载均衡

Nginx一般作为入口负载均衡或内部负载均衡,结合反向代理服务器使用,具体使用根据场景而定。

1)入口负载均衡架构

Nginx服务器在用户访问的最前端,根据用户请求再转发到具体的应用服务器或二级负载均衡服务器(LVS)。如图所示:

2)内部负载均衡架构

LVS作为入口负载均衡,将请求转发到二级Nginx服务器,Nginx再根据请求转发到具体的应用服务器。如图所示:

3Nginx高可用

Nginx高可用,至少包含两个Nginx服务器,即一台主服务器和一台备服务器,两者之间使用

Keepalived做健康监控和故障检测。开放VIP端口,通过防火墙进行外部映射。如图所示:

Nginx负载均衡安装

1.安装依赖包 2.编译安装Nginx (查看实验指导书)

Nginx负载均衡配置与调试

Nginx配置文件详解

Nginx主配置文件主要分成四个部分:main(全局设置)server(主机设置)upstream(负载均衡服务器设置)location(URL匹配特定位置的设置)

其中main部分设置的命令将影响其他所有设置,server部分设置主要用于指定主机和对应的端口,upstream部分设置主要用于负载均衡后端对应的服务器,location部分设置用于匹配网页位置。这四者之间的关系为:server继承mainlocation继承serverupstream既不会继承其他部分的设置也不会被继承。

Nginx配置文件结构

任务实现服务器集群的高可用

1.任务描述

单台服务器部署存在隐患,一旦服务器故障,其所在的业务应用将不能使用,必须提高服务器对业务持续支持访问

2.Keepalived是什么?

          Keepalived起初是为LVS 设计的,专门用来监控集群系统中各个服务节点的状态。它根据layer3,4&5交换机制检测每个服务节点的状态,如果某个服务节点出现异常,或工作出现故障,Keepalived将检测到,并将出现故障的服务节点从集群系统中剔除,而在故障节点恢复正常后,Keepalived又可以自动将此服务节点重新加入到服务器集群中,这些工作全部自动完成,不需要人工干涉,需要人工完成的只是修复出现故障的服务节点。

          Keepalived后来又加入了VRRP的功能,VRRP是Virtual Router Redundancy Protocol(虚拟路由器冗余协议)的缩写。它出现的目的是为了解决静态路由出现的单点故障问题,通过VRRP可以实现网络不间断地、稳定地运行。因此,Keepalived一方面具有服务器状态检测和故障隔离功能,另一方面也具有HA cluster 功能.下面详细介绍下VRRP协议的实现过程

3.Keepalived工作原理

在 Keepalived 服务之间,只有作为主节点会一直发送 VRRP 广播包,告诉备它还活着,此时备节点不会枪占主,当主不可用时,即备监听不到主发送的广播包时,就会启动相关服务接管资源,保证业务的连续性.接管速度最快可以小于1秒。

          Keepalived工作在TCPIP参考模型的第三、第四和第五层,也就是网络层、传输层和应用层。根据TCP/IP参考模型各层所能实现的功能,Keepalived运行机制如下:

         在网络层,运行着四个重要的协议:互联网协议IP、互联网控制报文协议ICMP、地址转换协议ARP以及反向地址转换协议RARP。Keepalived在网络层采用的最常见的工作方式是通过ICMP协议向服务器集群中的每个节点发送一个ICMP的数据包(类似于ping实现的功能),如果某个节点没有返回响应数据包,那么就认为此节点发生了故障,Keepalived将报告此节点失效,并从服务器集群中剔除故障节点。

       

         在传输层,提供了两个主要的协议:传输控制协议TCP和用户数据协议UDP。传输控制协议TCP可以提供可靠的数据传输服务,IP地址和端口,代表一个TCP连接的一个连接端。要获得TCP服务,须在发送机的一个端口上和接收机的一个端口上建立连接,而Keepalived在传输层就是利用TCP协议的端口连接和扫描技术来判断集群节点是否正常的。比如,对于常见的 Web服务默认的80端口、SSH 服务默认的22端口等,Keepalived一旦在传输层探测到这些端口没有响应数据返回,就认为这些端口发生异常,然后强制将此端口对应的节点从服务器集群组中移除。

         在应用层,可以运行FTP、TELNET、SMTP、DNS等各种不同类型的高层协议,Keepalived的运行方式也更加全面化和复杂化,用户可以通过自定义Keepalived的工作方式,例如用户可以通过编写程序来运行Keepalived,而 Keepalived将根据用户的设定检测各种程序或服务是否允许正常,如果 Keepalived的检测结果与用户设定不一致时,Keepalived将把对应的服务从服务器中移除

 想要深入了解keepalived,就要从vrrp通信来看

VRRP,全称 Virtual Router Redundancy Protocol,中文名为虚拟路由冗余协议,VRRP的出现是为了解决静态路由的单点故障

VRRP是通过一种竟选协议机制来将路由任务交给某VRRP路由器的

VRRP用 ip协议广播的方式(默认多播地址:224.0.0.18)实现高可用对之间通信

工作时主节点发包,备节点接包,当备节点接收不到主节点发的数据包的时候,就启动接管程序接管主节点的开源。备节点可以有多个,通过优先级竞选,但一般 Keepalived系统运维工作中都是一对

VRRP使用了加密协议加密数据,但Keepalived官方目前还是推荐用明文的方式配置认证类型和密码

4.构建高性能主站点集群

Keepalived高可用软件介绍

KeepalivedLinux下一个轻量级的高可用解决方案Keepalived主要是通过虚拟路由冗余来实现高可用功

Keepalived体系结构拓扑图

Keepalived的体系结构从整体上分为两层,分别是用户空间层(User Space)和内核空间层(Kernel Space)。

内核空间层处于最底层,它包括IPVSNETLINK两个模块用户空间层位于内核空间层之上,Keepalived的所有具体功能都在这里实现,包括Scheduler I/O MultiplexerMemory ManagementControl PlaneCore components

5.构建高性能MySQL集群

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

SpringBoot-SchedulingConfigurer源码初识:理解定时任务抛异常终止本次调度,但不会影响下一次执行调度

SchedulingConfigurer源码初识:理解定时任务抛异常终止本次调度,但不会影响下一次执行调度 EnableSchedulingScheduledAnnotationBeanPostProcessor进入finishRegistration方法 ScheduledTaskRegistrar处理触发器任务(TriggerTask&#xff09…

回溯算法之电话号码字母组合

题目: 给定一个仅包含数字 2-9 的字符串,返回所有它能表示的字母组合。答案可以按 任意顺序 返回。 给出数字到字母的映射如下(与电话按键相同)。注意 1 不对应任何字母。 示例 1: 输入:digits "2…

【python】多线程(3)queue队列之不同延时时长的参数调用问题

链接1:【python】多线程(笔记)(1) 链接2:【python】多线程(笔记)(2)Queue队列 0.问题描述 两个线程,但是不同延时时长,导致数据输出…

vue 引用第三方库 Swpier轮播图

本文全程干货,没有废话 1.使用 npm 安装 swiper,使用 save 保存到 packjson 中 npm install --save swiper 2、把 swiper看成是第三方库或者是组件,然后按照,引用,挂载组件,使用组件三步法。 3、在 script…

overleaf 写参考文献引用

目录 1、 新建.bib 文件 2、导入引用 3、在文档中引用参考文献 4、生成参考文献列表 1、 新建.bib 文件 在Overleaf项目中,你可以选择导入现有的 .bib 文件或在项目中创建一个新的 .bib 文件来管理你的参考文献。 导入.bib 文件: 在项目文件树中点击…

1985-2020 年阿拉斯加和育空地区按植物功能类型划分的模型表层覆盖率

ABoVE: Modeled Top Cover by Plant Functional Type over Alaska and Yukon, 1985-2020 1985-2020 年阿拉斯加和育空地区按植物功能类型划分的模型表层覆盖率 简介 文件修订日期:2022-05-31 数据集版本: 1.1 本数据集包含阿拉斯加和育空地区北极和北方地区按…

C语言| 输出菱形*

C语言| 输出*三角形-CSDN博客 输出菱形。 【分析思路】 学会输出*的三角形之后输出菱形就很简单了。我们分析一下,菱形是由两个对称的三角形组成的,也因为是对称的,所以输出的菱形的行数肯定是一个奇数。 1 我们在编程的时候,要…

网络空间安全数学基础·循环群、群的结构

3.1 循环群(重要) 3.2 剩余类群(掌握) 3.3 子群的陪集(掌握) 3.4 正规子群、商群(重要) 3.1 循环群 定义:如果一个群G里的元素都是某一个元素g的幂,则G称为…

【SpringBoot】四种读取 Spring Boot 项目中 jar 包中的 resources 目录下的文件

本文摘要:四种读取 Spring Boot 项目中 jar 包中的 resources 目录下的文件 😎 作者介绍:我是程序员洲洲,一个热爱写作的非著名程序员。CSDN全栈优质领域创作者、华为云博客社区云享专家、阿里云博客社区专家博主。公粽号&#xf…

python dlib 面部特征点检测

运行环境macos m2芯片 Python 3.11.7,python3.9都能通过,windows系统应该也是一样的效果 import dlib import cv2 import matplotlib.pyplot as plt# Load the image image_path path_to_your_image.jpg # Replace with the path to your image image…

React常见的一些坑

文章目录 两个基础知识1. react的更新问题, react更新会重新执行react函数组件方法本身,并且子组件也会一起更新2. useCallback和useMemo滥用useCallback和useMemo要解决什么3. react的state有个经典的闭包,导致拿不到最新数据的问题.常见于useEffect, useMemo, useCallback4. …

LLM——深入探索 ChatGPT在代码解释方面的应用研究

1.概述 OpenAI在自然语言处理(NLP)的征途上取得了令人瞩目的进展,这一切得益于大型语言模型(LLM)的诞生与成长。这些先进的模型不仅是技术创新的典范,更是驱动着如GitHub Copilot编程助手和Bing搜索引擎等广…

基于SpringBoot+Vue的公园管理系统的详细设计和实现(源码+lw+部署文档+讲解等)

💗博主介绍:✌全网粉丝1W,CSDN作者、博客专家、全栈领域优质创作者,博客之星、平台优质作者、专注于Java、小程序技术领域和毕业项目实战✌💗 🌟文末获取源码数据库🌟 感兴趣的可以先收藏起来,还…

西瓜播放器xgplayer设置自动播放踩坑

上图是官网(西瓜视频播放器官方中文文档)的介绍,相信大家都是按照官网配置去做的,但是并没有什么用,插件很好用,但是属性不全,真的很悔恨,找遍 api 都没有找到自动播放的属性&#x…

epoll模型下的简易版code

epoll模型下的简易版code c #include <stdio.h> #include <stdlib.h> #include <string.h> #include <unistd.h> #include <sys/epoll.h> #include <fcntl.h>#define MAX_EVENTS 10 #define NUM_DESCRIPTORS 5 // 模拟多个文件描述符// …

即时通讯系统是什么?

在信息化发展的时代&#xff0c;人们需要更加高效、便捷的通信方式来满足日常沟通和合作的需求。即时通讯系统应运而生&#xff0c;成为人们日常生活和工作中不可或缺的一部分。即时通讯系统通过互联网或其他网络通信技术实现实时信息传递&#xff0c;为用户提供了文字、语音、…

Adobe InDesign 专业桌面排版软件下载安装,Id软件丰富的排版和设计工具!

Adobe InDesign这款革命性的应用程序不仅彻底改变了出版业的生产流程&#xff0c;更引领着设计领域向前迈进。 在Adobe InDesign的众多强大功能中&#xff0c;对OpenType字体的支持堪称其一大亮点。OpenType字体不仅拥有更加丰富的字体样式和字符集&#xff0c;还具备更为灵活…

遥感之特征选择-禁忌搜索算法

各类智能优化算法其主要区别在于算法的运行规则不同&#xff0c;比如常用的遗传算法&#xff0c;其规则就是变异&#xff0c;交叉和选择等&#xff0c;各种不同的变体大多是在框架内的实现细节不同&#xff0c;而本文中的禁忌算法也是如此&#xff0c;其算法框架如下进行介绍。…

【一刷《剑指Offer》】面试题 31:连续子数组的最大和

牛客对应题目链接&#xff1a;连续子数组最大和_牛客题霸_牛客网 (nowcoder.com) 力扣对应题目链接&#xff1a;53. 最大子数组和 - 力扣&#xff08;LeetCode&#xff09; 核心考点 &#xff1a;简单动归问题。 一、《剑指Offer》对应内容 二、分析题目 1、贪心 从前往后迭…

VRTK4教程 一:资源导入、Unity设置、连接头盔

文章目录 VRTK4的分包导入VRTK4的资源包unity设置连接头盔 VRTK4的分包 vrtk4的资源包和旧版不同&#xff0c;采用了分包导入的思想&#xff0c;我们要用什么功能&#xff0c;就导入什么包&#xff0c;可以有效减小程序体积 如下图&#xff0c;已经导入的vrtk包会显示在Packag…