流量

常用限流算法

匆匆过客 提交于 2019-12-02 14:57:27
引言 在开发高并发系统时有三把利器用来保护系统:缓存、降级和限流。今天我们要聊的就是限流(Rate Limit),限流的目的很简单,就是为了保护系统不被瞬时大流量冲垮, 限流这个概念我其实很早之前就有去了解过,不过无奈之前工作所接触业务的并发量实在是谈不上限流。目前公司大促峰值QPS在2w往上,自然而然需要用到限流,特别是类似秒杀这种瞬时流量非常大但实际成单率低的业务场景。 目前比较常用的限流算法有三种 计数器固定窗口算法 计数器滑动窗口算法 漏桶算法 令牌桶算法 计数器固定窗口算法 计数器固定窗口算法是最简单的限流算法,实现方式也比较简单。就是通过维护一个单位时间内的计数值,每当一个请求通过时,就将计数值加1,当计数值超过预先设定的阈值时,就拒绝单位时间内的其他请求。如果单位时间已经结束,则将计数器清零,开启下一轮的计数。 但是这种实现会有一个问题,举个例子: 假设我们设定1秒内允许通过的请求阈值是200,如果有用户在时间窗口的最后几毫秒发送了200个请求,紧接着又在下一个时间窗口开始时发送了200个请求,那么这个用户其实在一秒内成功请求了400次,显然超过了阈值但并不会被限流。其实这就是临界值问题,那么临界值问题要怎么解决呢? 代码实现 -- [CounterRateLimit.java](https://github.com/WangJunnan/learn/blob

一次公众号入口流量暴涨的处理

主宰稳场 提交于 2019-12-02 14:14:45
先说结论:没经过技术运营团队评估,千万别随便搞促销活动。哪怕是靠公众号引流的一些小型促销活动,也可能引起网络流量暴涨,导致故障。 一、十点钟流量暴涨 有人说今天在搞活动,在抢购一个某某理财产品。赶紧找人了解入口url,火狐F12分析了下,发现有600多KB的js文件,如下: 这个域名没启用CDN,脚本查了下,再次验证了前面F12的数据,源站流量主要是被几个大js文件吃光了。 二、准备启用CDN 经分析,后端为php,已经做了动静分离,静态资源在一个项目,动态资源在另外一个项目,用的同一个域名。 只需对静态资源启动CDN,不能缓存动态接口,缓存策略如下: 第二天十点再观察,源站流量大幅下降,CDN挡住了绝大部分流量: 缓存命中率也在95%以上。 来源: 51CTO 作者: weikle 链接: https://blog.51cto.com/weikle/2334845

Android--性能测试关注的指标

試著忘記壹切 提交于 2019-12-02 08:17:30
性能测试过程中,出现的一些问题可直接导致了用户对当前app的使用率和卸载率,如果app使用时卡顿严重或者加载页面慢,cpu占用率高,导致app闪退等问题,在测试过程中,则需特别关注性能方面的体验,app性能好、ui设计美观、功能层级明确,路径层级较少,均可提升用户对app的使用率,性能测试中可关注的问题如下:   1、连接超时:app关注的首要问题,在移动应用中网络错误数据比例报错中最高的就是连接错误超时   2、闪退:点击某一个功能点出现闪退,客户的内心都崩溃了   3、卡顿、黑白屏:   4、崩溃:(优秀:0~2%%,标准:2~4%%,轻微隐患:4~12%%,严重隐患:12%%以上)常表现为出现crash   5、网络劫持   6、交互性能差:(优秀:0~300ms,标准:300ms~400ms,轻微隐患:400ms~1000ms,严重隐患:1000ms以上)电话短信干扰、低电量提     醒、push提醒、usb数据线插拔提醒、充电提醒   7、cpu使用率:建议值>90%,cpu频率设置过高时会导致过热,导致耗电更严重,cpu频率设置过低导致手机滞后,应用处理缓慢同样导致耗电,则优    就好,避免被卸掉   8、内存泄漏:指的是你用malloc或new申请了一块内存,但是没有通过free或delete将内存释放,导致这块内存一直处于占用状态   9、不良接口

网络空间搜索引擎流量识别

左心房为你撑大大i 提交于 2019-12-02 08:10:56
网络空间搜索引擎流量识别 知名网络空间搜索引擎 总结shodan、zoomeye、censys运行模式可概述为下 应用流量识别思路 知名网络空间搜索引擎 shodan、zoomeye、censys。 总结shodan、zoomeye、censys运行模式可概述为下 在世界各地进行服务发现类扫描,扫描结果作为资源存储,用户通过官方提供的API或搜索页面获取资源索引。付费下载。 例:搜索iec104标准端口2404开放的设备信息,能获取世界各地部署智能电网设备的情况 例:在shodan中搜索camera 应用流量识别思路 1、扫描流量应该无应用特征 2、官方提供用于查询扫描结果的API或搜索页面。此部分流量可以通过域名和url识别 3、识别下载流量需付费使用下载功能分析 来源: https://blog.csdn.net/zzj_1007/article/details/102737557

什么是防火墙?防火墙基础知识讲解

廉价感情. 提交于 2019-12-02 08:08:56
什么是防火墙 防火墙也被称为防护墙,它是一种位于内部网络与外部网络之间的网络安全系统,可以将内部网络和外部网络隔离。通常,防火墙可以保护内部/私有局域网免受外部攻击,并防止重要数据泄露。在没有防火墙的情况下,路由器会在内部网络和外部网络之间盲目传递流量且没有过滤机制,而防火墙不仅能够监控流量,还能够阻止未经授权的流量。 在网络中,所谓“防火墙”,是指一种将内部网和公众访问网(如Internet)分开的方法,它实际上是一种隔离技术。防火墙是在两个网络通讯时执行的一种访问控制尺度,它能允许你“同意”的人和数据进入你的网络,同时将你“不同意”的人和数据拒之门外,最大限度地阻止网络中的黑客来访问你的网络。换句话说,如果不通过防火墙,公司内部的人就无法访问Internet,Internet上的人也无法和公司内部的人进行通信。 除了将内部局域网与外部Internet隔离之外,防火墙还可以将局域网中的普通数据和重要数据进行分离,所以也可以避免内部入侵。 防火墙的工作原理 防火墙有硬件防火墙和软件防火墙这两种类型,硬件防火墙允许您通过端口的传输控制协议(TCP)或用户数据报协议(UDP)来定义阻塞规则,例如禁止不必要的端口和IP地址的访问。软件防火墙就像互连内部网络和外部网络的代理服务器,它可以让内部网络不直接与外部网络进行通信,但是很多企业和数据中心会将这两种类型的防火墙进行组合

Nine Iptables与Firewalld防火墙

亡梦爱人 提交于 2019-12-02 06:38:30
防火墙管理工具   防火墙策略可以基于流量的源目地址、端口号、协议、应用等信息来定制,然后防火墙使用预先定制的策略规则监控出入的流量,若流量与某一条策略规则相匹配,则执行相应的处理,反之则丢弃。这样一来,就可以保证仅有合法的流量在企业内网和外部公网之间流动了。   在RHEL 7系统中,firewalld防火墙取代了iptables防火墙。iptables与firewalld都不是真正的防火墙,它们都只是用来定义防火墙策略的防火墙管理工具而已,或者说,它们只是一种服务。iptables服务会把配置好的防火墙策略交由内核层面的netfilter网络过滤器来处理,而firewalld服务则是把配置好的防火墙策略交由内核层面的nftables包过滤框架来处理。换句话说,当前在Linux系统中其实存在多个防火墙管理工具,旨在方便运维人员管理Linux系统中的防火墙策略,我们只需要配置妥当其中的一个就足够了。 iptables   在早期的Linux系统中,默认使用的是iptables防火墙管理服务来配置防火墙。尽管新型的firewalld防火墙管理服务已经被投入使用多年,但是大量的企业在生产环境中依然出于各种原因而继续使用iptables。   各个防火墙管理工具的配置思路是一致的,在掌握了iptables后再学习其他防火墙管理工具时,也有借鉴意义。 策略与规则链  

Python3实战spark大数据分析及调度✍✍✍

那年仲夏 提交于 2019-12-02 05:57:27
Python3实战spark大数据分析及调度 一、实例分析 1.1 数据 student.txt 1.2 代码 二、代码解析 2.1函数解析 2.1.1 collect() RDD的特性 在进行基本 RDD“转换”运算时不会立即执行,结果不会显示在显示屏中,collect()是一个“动作”运算,会立刻执行,显示结果。 2.1.2 reduce() 说明 reduce()函数会对参数序列中的元素进行累积。 语法 reduce(function, iterable[, initializer]) 参数 function – 函数,有两个参数 iterable – 可迭代对象 initializer – 可选,初始参数 实例 说明: Python3的内建函数移除了reduce函数,reduce函数放在functools模块 2.1.3 type() 语法 class type(name, bases, dict) 参数 name – 类的名称。 bases – 基类的元组。 dict – 字典,类内定义的命名空间变量。 返回值 一个参数返回对象类型 , 三个参数,返回新的类型对象。 实例 三、问题分析 解析 1、检查拼写是否有误 2、检查缩进是否合规 3、检查()是否一一配对 四、实例 小练 4.1 数据 user_small 4.2 用户上网记录统计(一行为一条记录).(用户:第3列)

扛住阿里双十一高并发流量,Sentinel是怎么做到的?

有些话、适合烂在心里 提交于 2019-12-01 19:54:33
Sentinel 承接了阿里巴巴近 10 年的双十一大促流量的核心场景 本文介绍阿里开源限流熔断方案 Sentinel 功能、原理、架构、快速入门以及相关框架比较 基本介绍 1 名词解释 服务限流 :当系统资源不够,不足以应对大量请求,对系统按照预设的规则进行流量限制或功能限制 服务熔断 :当调用目标服务的请求和调用大量超时或失败,服务调用方为避免造成长时间的阻塞造成影响其他服务,后续对该服务接口的调用不再经过进行请求,直接执行本地的默认方法 服务降级 :为了保证核心业务在大量请求下能正常运行,根据实际业务情况及流量,对部分服务降低优先级,有策略的不处理或用简单的方式处理 服务降级的实现可以基于人工开关降级(秒杀、电商大促等)和自动检测(超时、失败次数、故障),熔断可以理解为一种服务故障降级处理 2 为什么需要限流降级 系统承载的访问量是有限的,如果不做流量控制,会导致系统资源占满,服务超时,从而所有用户无法使用,通过服务限流控制请求的量,服务降级省掉非核心业务对系统资源的占用,最大化利用系统资源,尽可能服务更多用户 3 Sentinel 简介 Sentinel: 分布式系统的流量防卫兵,是阿里中间件团队 2018 年 7 月开源的,面向分布式服务架构的轻量级流量控制产品,主要以流量为切入点,从流量控制、熔断降级、系统负载保护等多个维度来保护系统服务的稳定性 Sentinel

分库分表中间件的高可用实践

孤者浪人 提交于 2019-12-01 19:46:02
前言 分库分表中间件在我们一年多的锤炼下,基本解决了可用性和高性能的问题 (只能说基本,肯定还有隐藏的坑要填),问题自然而然的就聚焦于高可用。本文就阐述了我们在这方面做出的一些工作。 高可用 存在 的问题 作为一个无状态的中间件,高可用问题并没有那么困难。但是尽量减少不可用期间的流量损失,还是需要一定的工作的。这些流量损失主要分布在 : (1)某台中间件所在的物理机突然宕机。 (2)中间件的升级和发布。 由于我们的中间件是作为数据库的代理提供给应用的 ,即应用把我们的中间件当做数据库,如下图所示: 所以出现上述问题后,业务上很难通过重试等操作去屏蔽这些影响。这就势必需要我们在底层做一些操作,能够自动的感知中间件的状态从而有效避免流量的损失。 中间件所在物理机宕机的情况 物理机宕机其实是一种常见现象,这时候应用一瞬间就没了响应。那么跑在上面的 sql肯定也是失败了的(准确来说是未知状态,除非重新查询后端数据库,应用无法得知准确的状态)。这部分流量我们肯定是无法挽救。我们所做的是在client端(Druid数据源)能够快速的发现并剔除宕机的中间件节点。 发现并剔除不可用节点 通过心跳去发现不可用节点 自然而然的我们通过心跳来探查后端中间件的存活状态。我们通过定时创建一个新连接 ping(mysql的ping)一下然后立马关闭来做心跳(这种做法便于我们区分正常流量和心跳流量

various system release [online]

♀尐吖头ヾ 提交于 2019-12-01 18:27:54
1、 金丝雀发布 Canary 简单的金丝雀测试一般通过手工测试验证,复杂的金丝雀测试需要比较完善的监控基础设施配合,通过监控指标反馈,观察金丝雀的健康状况,作为后续发布或回退的依据。 金丝雀发布,一般先把新版本发布到单集群1台服务器,或者一个小比例,主要做流量验证用。 如果金丝测试通过,则把剩余的原有版本全部升级为新版本。如果金丝雀测试失败,则直接摘除金丝雀的流量,宣布发布失败。 金丝雀发布,简单可控不粗暴!初创型公司比较适合。 2、 一群金丝雀发布 单服务器集群滚动发布,老司机给起个名字叫“一群金丝雀发布”。 单服务器集群滚动发布,在金丝雀发布基础上的进一步优化改进,是一种自动化程度较高的发布方式,用户体验比较平滑,是目前成熟型技术组织所采用的主流发布方式。 前提:滚动发布需要比较复杂的发布工具和智能 LB,支持平滑的版本替换和流量拉入拉出 单服务器集群滚动发布实践起来这样的: 1. 先发 1 台,或者一个小比例,主要做流量验证用,是不是很像金丝雀 (Canary) 测试; 2. 每次发布时,先将老版本流量从LB上摘除,清除老版本,发布新版本,再将LB流量接入新版本; 3. 滚动式发布每次操作一般由若干个批次组成,每批的数量一般是可以预设的(使用发布模板设定)。例如:第一批2%,第二批10%,第三批50%,第四批100%。每批上线之间留观察间隔