您当前的位置:首页 > 电脑百科 > 站长技术 > 网站

高并发的处理心得

时间:2020-03-12 09:44:23  来源:  作者:

处理高并发无非就是四大的方法 分流、缓存、降级、限流

1、分流

实现方式最简单的是增加多台机器,目的是为了扩容

基本思路是 Tomcat(万以下,tomcat顶峰700并发)=》Nginx(3-4万并发)=》lvs(30万并发)=》F5(百万并发)=》DNS

集群负载均衡

集群:

tomcat、jboss、weblogic、websphere

负载均衡:

软件:nginx、Apache、haproxy … L7(网络第7层)

lvs L4(网络第4层)开源免费

硬件:f5 付费价格贵

DNS 负载均衡 域名解析 同一个域名根据ip解析到不同地域的数据中心,

(dns如何做到负载均衡例:

1) 客户端访问www.tmall.com , 用户向本机配置的本地DNS服务器发出查询请求,如果本地DNS服务器有该域名的缓存记录,则返回给用户,否则进行第2步;

2) 本地DNS服务器进行递归查询,最终会查询到域名服务商商处的授权DNS服务器;

3) 授权DNS服务器返回一条记录给本地DNS服务器,这里的域名可能对应多个vip(虚拟ip),会根据全局负载均衡策略设定的不同可能返回一个或多个随机返回一个vip;

6) 本地服务器将查询结果通过一条A记录返回给用户,并将缓存这条记录。)

均衡算法:轮询、随机等

假设天猫www.tmall.com的数据中心位于杭州,中心集群向各运行商(电信、联通、移动)要最大限度的带宽以提高高并发能力,这是一种分流方式,但类似双11的情况,带宽达不到要求,高并发能力不足,可能只占真实并发量的1/10的话就需要考虑cdn的方式,例如在全国多个人口密集的城市建立cdn集群节点,当深圳的用户访问天猫时,向深圳的cdn获取资源。

这里需要解释一下我理解的cdn的运作原理,下图中访问了www.tmall.com后会向杭州的中心集群发送请求,返回html中会有很多css、img、js的链接资源需要加载,这时就是根据相应的负载均衡的算法去获取离客户端最近的cdn中去获取。

 

高并发的处理心得

 

 

大致是从上倒下 两台lvs 服务器用来负载均衡、三台haproxy做二级负载均衡、squid集群

客户端发送请求,会去随机选择一台lvs服务器,lvs服务器随机下发到任意一台haproxy服务器,再由haproxy服务器随机选择一台squid节点进行查询,如果有则直接返回,没有的话会向源站(www.tmall.com)进行资源获取,所有的squid统一调度,如果说用户需要高相应,比如修改了商品的图案,因为修改的东西是存放到中心集群上的,此时cdn集群中的squid节点要做到实时更新的话,需要源站统一修改。

缓存

上面说到的dns 、 cdn 分流都是实现缓存的方式

缓存的目的主要是为了提高访问速率,以空间换时间。

限流

如果说扩容和提速的方式都用上了还是遇到了瓶颈该如何?答案是限流

限流的目的在于保护、保持正常可用

下面用代码实现一个简单的秒杀抢购功能

@RestController
public class OrderController {
//1 抢购,抢购数量为5
static long limit = 5;
private AtomicLong count = new AtomicLong(0l);//原子类型保证线程安全
@GetMApping(“add”)
public String doOrder(String name){ //此处不用加锁的方式保证线程,性能不高
	long c = count.incrementAndGet();
	if(c > limit){
		return “秒杀结束,谢谢参与!count =” + c;
	}
	return “恭喜,秒杀成功! count =” + c;
}
}

上面代码只能保证一台服务器的情况做到count统一。多台机器如果采用这种方式,秒杀数量就成倍增加了,商家得亏死。如果多台集群要保证数值统一,可以采用将数值存在数据库中的方式,此处我采用的redis。redis是单线程且线程安全的。

pom中加入redis依赖:

redis.clients
jedis
3.0.1
代码如下:
@GetMapping(“add2”)
public String doOrder2 (String name) { //此处不用加锁的方式保证线程,性能不高
try (Jedis jedis = new Jedis(“localhost”, 6379)) {
long c = jedis.incr(name);
if (c > limit) {
return “秒杀结束,谢谢参与!count =” + c;
}
return “恭喜,秒杀成功! count =” + c;
}
}

 

降级

降级预案

在进行降级之前要对系统进行梳理,看看系统是不是可以丢卒保帅;从而梳理出哪些必须誓死保护,哪些可降级;比如可以参考日志级别设置预案:

一般:比如有些服务偶尔因为网络抖动或者服务正在上线而超时,可以自动降级;

警告:有些服务在一段时间内成功率有波动(如在95~100%之间),可以自动降级或人工降级,并发送告警;

错误:比如可用率低于90%,或者数据库连接池被打爆了,或者访问量突然猛增到系统能承受的最大阀值,此时可以根据情况自动降级或者人工降级;

严重错误:比如因为特殊原因数据错误了,此时需要紧急人工降级。

降级按照是否自动化可分为:自动开关降级和人工开关降级。

降级按照功能可分为:读服务降级、写服务降级。

降级按照处于的系统层次可分为:多级降级。



Tags:高并发   点击:()  评论:()
声明:本站部分内容及图片来自互联网,转载是出于传递更多信息之目的,内容观点仅代表作者本人,如有任何标注错误或版权侵犯请与我们联系(Email:2595517585@qq.com),我们将及时更正、删除,谢谢。
▌相关推荐
对于一个新建连接,内核要发送多少个 SYN 连接请求才决定放弃。不应该大于255,默认值是5,对应于180秒左右时间。。(对于大负载而物理通信良好的网络而言,这个值偏高,可修改为2.这个值仅仅是针对对外的连接,对进来的连接,...【详细内容】
2021-12-08  Tags: 高并发  点击:(23)  评论:(0)  加入收藏
一、幂等性概念在数学里,幂等有两种主要的定义。1、在某二元运算下,幂等元素是指被自己重复运算(或对于函数是为复合)的结果等于它自己的元素。例如,乘法下唯一两个幂等实数为0和...【详细内容】
2021-10-09  Tags: 高并发  点击:(44)  评论:(0)  加入收藏
原文链接: https://mp.weixin.qq.com/s/MTw7z6n_wk4y4CTmGkoRoA一切要从CPU说起你可能会有疑问,讲多线程为什么要从CPU说起呢?原因很简单,在这里没有那些时髦的概念,你可以更加清...【详细内容】
2021-08-13  Tags: 高并发  点击:(97)  评论:(0)  加入收藏
题目:高并发情况下,数据库该如何设计?Java高级面试题:为什么要分库分表( 设计高并发系统的时候 , 数据库层面该如何设计 ) ? 用过哪些分库分表中间件 ? 不同的分库分表中间件都有什么...【详细内容】
2021-06-18  Tags: 高并发  点击:(119)  评论:(0)  加入收藏
1. 目的撰写本文的目的是解决微服务架构,对静态数据资源没有规整,所有微服务都是从数据库直接读取,导致性能较差,用户体验不好。通常在高可用的分布式架构中,一般都会采用将这部...【详细内容】
2021-03-17  Tags: 高并发  点击:(157)  评论:(0)  加入收藏
元旦期间 订单业务线 告知 推送系统 无法正常收发消息,作为推送系统维护者的我正外面潇洒,无法第一时间回去,直接让 ops 帮忙重启服务,一切好了起来,重启果然是个大杀器。由于推...【详细内容】
2021-01-07  Tags: 高并发  点击:(146)  评论:(0)  加入收藏
本文主要介绍的微服务是spring cloud,它一个服务治理框架和一系列框架的由序集合,其利用springboot的开发便利性巧妙的简化了分布式系统基础设施的开发,如服务发现注册、负载...【详细内容】
2020-10-20  Tags: 高并发  点击:(105)  评论:(0)  加入收藏
一、什么是分布式?分布式更多的是一个概念,是为了解决单个物理服务器容量和性能瓶颈问题而采用的优化手段,该领域需要解决的问题极多,在不同的技术层面上,又包括:分布式文件系统...【详细内容】
2020-10-14  Tags: 高并发  点击:(91)  评论:(0)  加入收藏
作为热点频出的电商系统,经常遇到高并发,热点秒杀的场景。我们在开发设计高并发海量业务请求的系统时,通常利用三板斧:缓存、降级和限流来保障系统稳定性。...【详细内容】
2020-09-27  Tags: 高并发  点击:(68)  评论:(0)  加入收藏
前言一台服务器并发TCP连接数可以有多少?如何支持从硬件和操作系统上支持单台服务器支持上万并发,支持百万千万,甚至上亿的并发著名的C10K并发连接问题是什么?C10M并发问题又是...【详细内容】
2020-09-01  Tags: 高并发  点击:(103)  评论:(0)  加入收藏
▌简易百科推荐
今天我们来聊一下北京地区的《ICP经营许可证》有多好办,现在的互联网上提供的商机越来越多,增值电信业务十分火爆,企业通过互联网突破地域的限制,把公司产品卖到更远的地方,同时...【详细内容】
2021-12-17  梦想理应飞翔Yy    Tags:《ICP经营许可证》   点击:(12)  评论:(0)  加入收藏
转自: https://blog.kermsite.com/p/blog-intro/由于格式问题,部分链接、表格可能会失效,若失效请访问原文此专题将详细介绍如何从零开始搭建一个个人博客。Dec 01, 2021阅读时...【详细内容】
2021-12-17  LaLiLi    Tags:个人博客   点击:(7)  评论:(0)  加入收藏
SP证是第二类增值电信业务经营许可证的简称。分为全网SP证和地网SP证。申请经营许可证是在工信部申请,全网SP经营许可证的有效期是5年,全网SP许可证在工信部办理全网SP续期,地...【详细内容】
2021-11-01  s陳述    Tags:sp证书   点击:(39)  评论:(0)  加入收藏
现在还有许多人不知道EDI许可证是什么东西今天我就来给大家讲解一下.EDI许可证就是一种增值电信业务经营许可证。是针对在线数据处理和交易处理业务需求的专业资格证书。 《...【详细内容】
2021-10-28  soberXx    Tags:edi许可证   点击:(75)  评论:(0)  加入收藏
元素的化学概念,如周期表中的化学元素,一切物质都是由元素构成的。对程序员而言,网站建设制作就是代码构成网站。企业网站设计者也收集了各种各样的元素,但并非所有元素都需要运...【详细内容】
2021-10-26  南宁云尚网络    Tags:企业网站   点击:(40)  评论:(0)  加入收藏
在运营网站的过程中,有一件不可忽略的事情。那就是网站上线之前需要完成 ICP 备案。说到这里,很多朋友就提出疑问了~· 什么是 ICP 备案呢?· ICP 备案需要哪些材...【详细内容】
2021-10-22  启测云    Tags:ICP备案   点击:(46)  评论:(0)  加入收藏
最近有朋友问我,我公司有外资就不能申请ICP许可证了么?外资的定义是什么?其实是可以的,但有一个特定条件必须满足,外资公司是指公司有外资股东,比如香港、加拿大、美国、韩国等等,...【详细内容】
2021-10-21  小白速看Z    Tags:ICP   点击:(51)  评论:(0)  加入收藏
自互联网出现以来,超文本传输协议http协议被广泛用于在Web浏览器和网站服务器之间传递信息,但随着互联网的发展,另一种协议——https出现,并与http一同服务于这个互联...【详细内容】
2021-10-20  我是FEIYA    Tags:https   点击:(44)  评论:(0)  加入收藏
Grafana Loki 是一个日志聚合工具,它是功能齐全的日志堆栈的核心。图片来自 包图网先看看结果有多轻量吧: Loki 是一个为有效保存日志数据而优化的数据存储。日志数据的高效索...【详细内容】
2021-09-14    51CTO  Tags:Loki日志   点击:(97)  评论:(0)  加入收藏
背景最近做微信小程序开发比较多,大家知道线上微信小程序为了安全起见,要求后端通信协议必须是HTTPS,这就要求需要安装证书。为了测试预发布线上环境,特地买了个最便宜的域名,为...【详细内容】
2021-09-14  小李子说程序    Tags:HTTPS证书   点击:(125)  评论:(0)  加入收藏
最新更新
栏目热门
栏目头条