高并发
文章平均质量分 62
打工人很惨
这个作者很懒,什么都没留下…
展开
-
动静分离架构模式
1.动静分离概念动静分离(动态文件与静态文件的分离)是让动态网站里的动态网页根据一定规则把不变的资源和经常变的资源区分开来,动静资源做好了拆分以后,我们就可以根据静态资源的特点将其做缓存操作,这就是网站静态化处理的核心思路。静态资源:当用户多次访问这个资源,资源的源代码永远不会改变的资源。 动态资源:当用户多次访问这个资源,资源的源代码可能会发送改变。2.为什么要用动静分离提高用户访问静态代码的速度,降低对后台应用访问。 Nginx作为静态资源服务器比Tocmat响应吞吐高很多;传统的架转载 2022-01-22 17:54:37 · 215 阅读 · 0 评论 -
缓存策略汇总
1.浏览器缓存浏览器自带缓存304:图片的默认缓存时间为7天客户端(浏览器)发送请求到服务器端 第一次请求的时候会缓存所有的静态资源到浏览器;客户端发送第二次请求的时候 如果本地浏览器有缓存,就使用本地浏览器的;Key:访问的urlvalue:具体的值信息原理:a、第一次下载资源的时候,客户端会保存修改时间b、第二次下载资源的时候,客户端上传修改时间,服务端决定返回200还304.----这种时间不一定准,所以请求的时候一般会加上一个时间戳或版本号信息强制刷新。http://www.ba转载 2022-01-22 17:52:17 · 720 阅读 · 0 评论 -
后端服务的雪崩效应及解决思路
1.RPC与本地调用的区别RPC远程调用,一般是跨平台、采用http协议,因为http协议底层使用socket技术,只要你的语言支持socket技术,就可以相互进行通讯。比如:java语言开发的接口,使用http协议,如此以来C#语言可以调用。本地调用:只支持java语言与java语言开发,使用虚拟机和虚拟机之间的通讯,RMI。2.雪崩效应产生的原因默认情况下只有一个线程池维护所有的服务接口,如果大量的请求访问同一个接口,达到tomcat线程池默认极限,可能会导致其他服务无法访问。3.雪转载 2022-01-22 17:44:24 · 216 阅读 · 0 评论 -
服务的隔离、降级和熔断
1.服务隔离、降级和熔断的产生背景tomcat底层都会共享一个线程池(自己创建的例外),当某个方法(服务)访问非常慢造成响应延迟,会造成大多数线程阻塞,导致整个线程池被占用甚至拖垮。线程名定义:线程池名称+线程ID2.服务隔离解决思路2.1 线程池隔离不同的http服务使用不同的线程池,当自己的资源用完,直接返回失败而不是占用别人的资源优点:可提高并发性缺点:增加CPU调度开销使用场景:第三方应用或接口;并发量大2.2 信号量隔离原子计数器方式记录当前运行的线程数,超过则拒绝,不超过则+转载 2022-01-22 17:41:40 · 316 阅读 · 0 评论 -
限流算法整理
漏桶算法和令牌桶算法的区别“漏桶算法”能够强行限制数据的传输速率 “令牌桶算法”在能够限制数据的平均传输速率外,还允许某种程度的突发传输。在“令牌桶算法”中,只要令牌桶中存在令牌,那么就允许突发地传输数据直到达到用户配置的门限,因此它适合于具有突发特性的流量。服务限流之漏桶算法一个固定的漏桶,以常量固定的速率流出水滴。 如果桶中没有水滴的话,则不会流出水滴如果流入的水滴超过桶中的流量,则流入的水滴可能会发生溢出,溢出的水滴请求是无法访问的,直接调用服务降级方法,桶中的容量是不会发生变化。转载 2022-01-22 17:16:41 · 104 阅读 · 0 评论 -
自定义封装限流算法
定义注解:@Target({ ElementType.METHOD })@Retention(RetentionPolicy.RUNTIME)@Documentedpublic @interface ExtRateLimiter { // 以每秒为单位固定的速率值往令牌桶中添加令牌 double permitsPerSecond(); // 在规定的毫秒数中,如果没有获取到令牌的话,则直接走服务降级处理 long timeout();}定义AOP:@Asp.转载 2022-01-22 17:08:03 · 106 阅读 · 0 评论 -
高并发性能指标:QPS、TPS、RT、并发数、吞吐量
高并发系统系统指标高并发系统核心指标一、QPS,每秒查询QPS:Queries Per Second是衡量信息检索系统(例如搜索引擎或数据库)在一秒钟内接收到的搜索流量的一种常见度量。该术语在任何请求-响应系统中都得到更广泛的使用,更正确地称为每秒请求数(RPS:Request Per Second)。高性能、高并发、高可用(简称“三高”)要求的系统必须注意其QPS,才能知道何时扩容系统以处理更多请求。二、TPS,每秒事务TPS:是Transactions Per Secon转载 2021-12-13 14:21:59 · 9105 阅读 · 0 评论 -
高并发解决思路
1:认识高并发问题高并发指的是:在同时或极短时间内,有大量的请求到达服务端,每个请求都需要服务端耗费资源进行处理,并做出相应的反馈。高并发问题的本质就是:资源的有限性,比如:带宽、CPU、内存、IO等。就是因为资源有限,我们不可能同时去处理并满足这些大量的请求,从而带来一系列的问题,统称就是高并发的问题。2:高并发解决思路从服务端来解决高并发问题的话:核心思想:分而治之——请求分流。现在不是同时来了太多的请求吗?我一台服务器肯定处理不过来啊,那我就开始分流,先增加服务器数量,比如转载 2021-12-13 11:53:27 · 1109 阅读 · 0 评论 -
Java并发编程之Master-Worker模式
Masker-Worker的核心思想是有两类进程(Masker进程和Worker进程)协作完成任务。Masker进程负责接收和分配任务,Worker负责处理子任务,当各个Worker子进程完成任务后会将结果返回给Masker,由Masker做归纳和总结。其好处在于能将一个大任务分解成若干个小任务,并行执行,从而提供系统的吞吐量。 这个模型主要用于主线程可以分为若干子线程的情形,各子线程之间不会相互影响。举个例子,这个例子是创...转载 2021-09-25 19:59:34 · 324 阅读 · 0 评论 -
高并发专题
1:接入层限流接入层通常指请求流量的入口,该层的主要目的有:负载均衡、非法请求过滤、请求聚合、缓存、降级、限流、A/B测试、服务质量监控等等,可以参考笔者写的《使用Nginx+Lua(OpenResty)开发高性能Web应用》。对于Nginx接入层限流可以使用Nginx自带了两个模块:连接数限流模块ngx_http_limit_conn_module和漏桶算法实现的请求限流模块ngx_http_limit_req_module。还可以使用OpenResty提供的Lua限流模块lua-resty-l原创 2022-01-22 16:47:47 · 100 阅读 · 0 评论