网站大流量高并发访问的处理解决办法

————————目录————————-

1、硬件升级
2、服务器集群、负载均衡、分布式
3、CDN
4、页面静态化
5、缓存技术(Memcache、Redis)
以上为架构层面
以下为网站本地项目层面
6、数据库优化
  1、数据库分表技术
  2、数据库读写分离
  3、表建立相应的索引
7、禁止盗链
8、控制大文件的上传下载

服务器并发处理
1、什么是服务器并发处理能力
  一台服务器在单位时间里能处理的请求越多,服务器的能力越高,也就是服务器并发处理能力越强.HTTP请求通常是对不同资源的请求,也就是请求不同的URL,有的是请求图片,有的是获取动态内容,有的是静态页面,显然这些请求所花费的时间各不相同,而这些请求再不同时间的组成比例又是不确定的.

  说个题外话

  假如100个用户同时向服务器分别进行10个请求,与1个用户向服务器连续进行1000次请求,对服务器的压力是一样吗?(服务器缓冲区只有1个和100个请求等待处理)

2、提高服务器的并发处理能力
提高CUP并发的处理能力

  1.多进程:多进程的好处不仅在于CPU时间的轮流使用,还在于对CPU计算和I/O操作进行很好的重叠利用.

  2.减少进程切换:进程拥有独立的内存空间,每个进程都只能共享CPU寄存器。一个进程被挂起的本质是将它在CPU寄存器中的数据拿出来暂存在内存态堆栈着那个,而一个进程恢复工作的本质就是把它的数据重新装入CPU寄存器,这段装入和移出的数据称为“硬件上下文”,当硬件上下文频繁装入和移出时,所消耗的时间是非常明显的

  3.减少使用不必要的锁:服务器处理大量并发请求时,多个请求处理任务时存在一些资源抢占竞争,这时一般采用“锁”机制来控制资源的占用,当一个任务占用资源时,我们锁住资源,这时其它任务都在等待锁的释放.

  4.其他:不写了.对于老板来说,买就是了o(* ̄︶ ̄*)o

服务器集群、负载均衡、分布式
1、什么是集群?
  单机处理到达瓶颈的时候,你就把单机复制几份,这样就构成了一个“集群”.集群中的每一台服务器叫做这个集群的节点,节点构成集群(废话…).每个节点提供<相同>的业务或者服务.这样系统的处理能力就会翻倍.

  那么问题来了,用户的请求到底哪一台服务器去处理执行的?必须有”领导(负载均衡器)”.这个领导的职责就是进行调度所有的请求以达到使得每一台服务器的负载均衡(是不是很熟悉=.=),不能让有的人闲着,有的人忙死.

2、集群结构的优点?
  集群结构的好处就是系统扩展非常容易.如果随着你们系统业务的发展,当前的系统又支撑不住了,那么给这个集群再增加节点就行了.所有节点处于活动状态,有一台down(宕)机,那么整个的业务还在跑(分布式的话,emmmm….) 

3、集群分类:
  Linux集群主要分成三大类:(高可用集群,负载均衡集群,科学计算集群),其他两个没了解,估计原理差不多吧…

4、集群负载的原理?
DNS轮询、HTTP重定向、IP欺骗(又称三角传输)    (这三种实现方式都是在用户通过域名来访问目标服务器时,由GSLB设备(Global Server Load Balancing)进行智能决策,将用户引导到一个最佳的服务IP)

智能DNS可以通过多种负载均衡策略来将客户端需要访问的域名解析到不同的数据中心不同的线路上,比如通过IP地理信息数据库解析到最近的线路,或者权衡不同线路的繁忙度解析到空闲的线路等等.

下面介绍一个解析线路的过程:

1、DNS的负载均衡:

用户访问某个网站时,需要首先通过域名解析服务(DNS)获得网站的IP。域名解析通常不是一次性完成的,常常需要查询若干不同的域名服务器才能找到对应的IP。如下图所示,用户首先在本地配置一个本地DNS服务器地址,本地DNS服务器收到DNS请求后若不能解析,会将请求转发给更高一级的DNS服务器直到找到域名对应的IP或确定域名不存在

 

普通的访问流程:

 

加入GBLS(全局负载均衡设备)访问流程:

 

优点:部署容易,成本低。缺点:GSLB只能拿到本地DNS的IP(获取的地理信息或者其他信息),不能拿到用户的IP,或者说用户的指定的本地DNS如果离自己较远,那么,GSLB就回错误的认为你在本地DNS处,然后返回错误的IP。

2、HTTP重定向负载均衡:

使用基于HTTP重定向方案,首先在DNS中将GSLB设备的IP地址登记为域名的A记录(既域名对应的IP)。如上图所示,用户首先通过DNS得到GSLB设备的IP地址,此时用户以为这就是站点服务器的IP,并向其发送HTTP请求。GSLB设备收到HTTP请求后使用一定策略选择一个最合适的服务器,然后GSLB设备向用户发送一个HTTP重定向指令(HTTP302),并附上选出的服务器的IP地址。最后,用户根据重定向IP访问站点的服务器。

 

3、基于IP欺骗的负载均衡:

 

5、和单机结构,集群结构的区别:
从单机到集群,你项目的架构,代码基本不用动(也会改动,因为服务器之间的响应也需要你的项目中有对应的模块或者功能),因为你是通过服务器的数量和负载均衡来增加并发和大流量问题的.

举个栗子:电商网站的某一款娃娃热卖((@^_^@)),负责娃娃的模块瞬间生热,多台服务器也满足不了大家只买这一款娃娃,然而网站的其他模块或者部分基本闲着,调度者(负载均衡器)也表示爱莫能助(因为每一台服务器的局部发热严重),已经非常平衡的分配了用户请求,但是请求的是都是娃娃,这一模块卡顿甚至500(http状态码都5开头了),也不能满足用户需求. 明显是需要把所有的节点服务器中空余的资源分出一部分来给娃娃模块.

6、分布式结构工作机理:
分布式结构就是将一个完整的系统,按照业务功能,拆分成一个个独立的子系统,在分布式结构中,每个子系统就被称为“服务”.这些子系统能够独立运行在web容器中,它们之间通过RPC方式通.

如果上述的网站采用分布式结构,你的服务器器们不在做同一件事情,各司其职,娃娃卖的好,那就多用几台服务器来负责娃娃相关的模块,利用率得到提高.

 

7、分布式结构的优点:
<1>系统之间的耦合度大大降低,可以独立开发、独立部署、独立测试,系统与系统之间的边界非常明确,排错也变得相当容易,开发效率大大提升

<2>系统之间的耦合度降低,从而系统更易于扩展.我们可以针对性地扩展某些服务.假设这个商城要搞一次大促,下单量可能会大大提升,因此我们可以针对性地提升订单系统、产品系统的节点数量,而对于后台管理系统、数据分析系统而言,节点数量维持原有水平即可

<3>服务的复用性更高.比如,当我们将用户系统作为单独的服务后,该公司所有的产品都可以使用该系统作为用户系统,无需重复开发

CDN
1、什么是CDN?
内容分发网络(Content Delivery Network, CDN)其目的是通过在现有的Internet中增加一层新的网络架构,将网站的内容发布到最接近用户的网络”边缘”,使用户可以就近取得所需的内容,解决Internet网络拥塞状况,提高用户访问网站的响应速度。从技术上全面解决由于网络带宽小、用户访问量大、网点分布不均等原因所造成的用户访问网站响应速度慢的问题。

2、CDN组成有什么?
一个CDN网络主要由以下几部分组成:内容缓存设备、内容分发管理设备、本地负载均衡交换机、GSLB设备和CDN管理系统,其网络结构如下图所示

 

各部分的工作:

1、内容缓存设备Cache用于缓存内容实体和对缓存内容进行组织和管理。当有用户访问该客户内容时,直接由各缓存服务器响应用户的请求

2、内容分发管理设备主要负责核心Web服务器内容到CDN网络内缓存设备的内容推送、删除、校验以及内容的管理、同步。

3、GSLB设备则实现CDN全网各缓存节点之间的资源负载均衡,它与各节点的SLB设备保持通信,搜集各节点缓存设备的健康状态、性能、负载等,自动将用户指引到位于其地理区域中的服务器或者引导用户离开拥挤的网络和服务器。还可以通过使用多站点的内容和服务来提高容错性和可用性,防止因本地网或区域网络中断、断电或自然灾害而导致的故障。

3、CDN的工作流程
用户访问某个站点的内容时,若该站点使用了CDN网络,则在用户会在域名解析时获得CDN网络GSLB设备的IP地址。GSLB设备根据其预设的选择策略(如,地理区域、用户时间等)为用户选择最合适的内容缓存节点,并且使用某种方式(如,基于DNS、基于HTTP重定向、基于IP欺骗的方式等)导引用户访问所选的内容缓存节点。用户继续向缓存节点发出请求,若缓存中包含请求的内容,则直接返回给用户,否则从核心Web服务器中获取该内容,缓存后返回给用户。这样当用户再次访问相同内容或其他用户访问相同内容时,可以直接从缓存中读取,提高了效率

写在最后:
集群强调的是任务的同一性,分布式强调的是差异性.但是不是绝对对立的.上海的服务器处理上海的文件上传事务,北京服务器处理北京文件上传事务,最终结果都完成文件上传,从全局考虑是分布式的结构,但是就北京而言,北京那边有多台服务器在做同样的事情那么北京那边就是集群结构…分布式的每一个节点都可以做集群,但是集群不一定就是分布式的.

转载于:https://www.cnblogs.com/zhang0807/p/10581074.html

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

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

相关文章

【完成整理】45套很酷的长影影 LOGO 设计

长阴影其实就是扩展了对象的投影&#xff0c;感觉是一种光线照射下的影子&#xff0c;通常采用角度为 45 度的投影&#xff0c;给对象添加了一份立体感。长阴影&#xff08;Long Shadow&#xff09;概念来自于最新非常流行的扁平化设计&#xff08;Flat Design&#xff09;。扁…

简述select语句的完整语法_SQL里的各种语句的完整语法

SQL分类&#xff1a;DDL—数据定义语言(CREATE&#xff0c;ALTER&#xff0c;DROP&#xff0c;DECLARE)  DML—数据操纵语言(SELECT&#xff0c;DELETE&#xff0c;UPDATE&#xff0c;INSERT)DCL—数据控制语言(GRANT&#xff0c;REVOKE&#xff0c;COMMIT&#xff0c;ROLLBA…

android 坐标点计算器,Android实现简易计算器

开之前我还是想问问老师&#xff0c;为什么一定要星期天前交作业呢&#xff1f;由于条件限制&#xff0c;作品是赶出来的不是细细琢磨出来的。所以在这版apk中功能较为简易&#xff0c;有待后期再不断更新与优化总体效果图如下布局activity_main.xml部分代码功能代码MainActivi…

使用反射进行测试

根据我以前的帖子&#xff0c;我正在撰写有关“单一责任原则”的演讲。 我花了大部分时间。 同时&#xff0c;我想分享一个示例代码&#xff0c;说明如何在类中测试内部字段。 我这样做是为了进行特殊的测试&#xff0c;这更多的是集成测试。 在依赖类的标准单元测试中&#x…

1的恢复出厂设置在哪里_罗斯蒙特变送器怎么恢复出厂设置?

罗斯蒙特变送器怎么恢复出厂设置?特殊情况下&#xff0c;罗斯蒙特变送器需要恢复出厂设置。罗斯蒙特变送器进行出厂设置的方法非常简单&#xff0c;只需要用手操器或AMS设备管理器就能操作。罗斯蒙特手操器里有一个恢复出厂调整值–传感器量程调整命令&#xff0c;使用此命令就…

【技术累积】【点】【java】【25】Orderd

基础概念 Orderd是spring core中定义的一个接口&#xff0c;使用它以及相关的Comparator和Order注解&#xff0c;可以实现对元素的排序。 Order 直接先说下Order注解吧&#xff0c;使用场景较多。 Retention(RetentionPolicy.RUNTIME) Target({ElementType.TYPE, ElementType.M…

android 展示星期方式,Android显示从一周到另一周的日期(星期四至星期四)

最后我得到了工作一个解决方案&#xff0c;解决我的问题&#xff1a;在OnCreate中&#xff1a;TextView tv_chart_menuvotes (TextView) findViewById(R.id.tv_chart_menuvotes);String csPrevThur getPreviousThursday();String csNextThur getNextThursday();tv_chart_men…

Java 8 – Date API的新增功能

随着Java 8最终版本的发布&#xff0c;令我兴奋的新功能之一就是新的Date API&#xff0c;这是JSR 310的工作成果。 尽管Lambda表达式无疑是Java 8的一大亮点&#xff0c;但是拥有更好的日期处理方式无疑是受欢迎的。 这是一篇简短的文章&#xff08;第2部分或第3部分的第1部分…

ps抠图怎么放大图片_PS抠图时选区图片放大后,怎么移动图片抠图选区?

我们在Photoshop中使用套索、钢笔等工具进行抠图选区的时候&#xff0c;经常需要将图片放大&#xff0c;保证抠图选区的精确性&#xff0c;但是同时因为图片放大后超出了显示区域&#xff0c;我们在移动抠图选区工具进行抠图选区的时候&#xff0c;总是出现各种错误&#xff0c…

perl 用网易发邮件报错 554 DT:SPM 163 smtp14

查看相关链接&#xff0c;貌似被当成垃圾邮件了&#xff0c;发不出去 554 DT:SPM 163 smtp14,EsCowACHUegmKpdc3giRMQ--.29617S2 1553410599,please see http://mail.163.com/help/help_spam_16.htm?ip183.30.222.245&hostidsmtp14&time1553410599 脚本改成CC给自己&a…

Guzzle – 构建 RESTful Web 服务的 PHP HTTP 框架

Guzzle 减轻了发送 HTTP 请求和创建 Web 服务客户端的痛苦。它包含建立一个强大的网络服务客户端的工具&#xff0c;包括&#xff1a;服务描述定义的输入和输出的 API&#xff0c;资源迭代器遍历分页资源&#xff0c;尽可能有效地发送大量的请求。 您可能感兴趣的相关文章特别推…

合成和桥接方法

如果您曾经玩过反射并执行了getDeclaredMethods()您可能会感到惊讶。 您可能会获得源代码中不存在的方法。 或者&#xff0c;也许您看了一些方法的修饰符&#xff0c;发现其中一些特殊方法是易变的。 顺便说一句&#xff1a;对于Java采访来说&#xff0c;这是一个令人讨厌的问题…

小米手机升级Android6,小米3能升级miui 6?小米3升级miui v6教程

小米3升级miui v6教程来咯~小编还带来了miui v6下载&#xff0c;MIUI V6系统有了很多的变化&#xff0c;小米3是可以升级miui6系统的哦~如果你不知道步骤的话&#xff0c;就请参考下文吧。第一步、下载工具包和线刷完整包&#xff0c;下载完成后解压(请检查线刷包文件后缀名是否…

hibernate使用sessionfactory插入数据

1.引入hibernate-core.jar 2.java代码 public void meth{ Session session sessionFactory.openSession();Transaction tr session.beginTransaction();//1.创建Customer对象//2.调用Session的save()方法&#xff0c;将Customer对象持久化session.save(jbpmTaskInherit);tr.c…

lisp 揭 院长_HISLISPACSRIS EMR系统简介

HIS(LIS、PACS、RIS、EMR)系统简介一、定义说明医院信息系统(Hospital Information System, HIS)&#xff0c;利用电子计算机和通讯设备&#xff0c;为医院所属各部门提供病人诊疗信息和行政管理信息的收集、存储、处理、提取和数据交换的能力&#xff0c;并满足所有授权用户的…

第一次java作业

转载于:https://www.cnblogs.com/TuTu-winer/p/10591021.html

推荐25款很棒的 HTML5 前端框架和开发工具【下篇】

快速&#xff0c;安全&#xff0c;响应式&#xff0c;互动和美丽&#xff0c;这些优点吸引更多的 Web 开发人员使用 HTML5。HTML5 有许多新的特性功能&#xff0c;允许开发人员和设计师创建应用程序和网站&#xff0c;带给用户桌面应用程序的速度&#xff0c;性能和体验。 这里…

创建Sonarqube项目

Sonarqube &#xff08;nee Sonar&#xff09;是炸弹。 不必每天检查一次&#xff0c;但是如果您对质量很认真&#xff0c;则可以在Sprint计划期间&#xff08;如果不是每周一次&#xff09;对其进行检查。 在nemo.sonarqube.com上查看示例项目&#xff0c;例如OpenJPA &#…

android18lazuli,The Rise And Fall Of Android 17

Hey guys, Tommy here. Today I’m bringing you another blog talking about Android 17. I’ve had mixed emotions on Android 17’s return in Dragon Ball Super since it originally happened. I feel like now with this whole Android 17‘a return is something I sho…

luogu P1462 通往奥格瑞玛的道路

嘟嘟嘟 这道题的题面相当的迷&#xff0c;我看了半天都没懂。最后看了题解的解释才懂。 他是这么个意思&#xff1a;对于所有能活着走到终点的路径&#xff0c;输出每一条路径中过路费最多的城市的最小值。 那么自然想到二分过路费&#xff0c;然后用dijkstra或spfa判断是否存在…