一般对外暴露的系统,在促销或者黑客攻击时会涌来大量的请求,为了保护系统不被瞬间到来的高并发流量给打垮, 就需要限流。接下来通过本文给大家分享使用nginx实现分布式限流的方法,感兴趣的朋友跟随IIS7站长之家小编一起学习吧

1.前言

一般对外暴露的系统,在促销或者黑客攻击时会涌来大量的请求,为了保护系统不被瞬间到来的高并发流量给打垮, 就需要限流 .

本文主要阐述如何用nginx 来实现限流. 听说 Hystrix 也可以, 各位有兴趣可以去研究哈 .

2.首先部署一个对外暴露接口的程序

我这里部署的是一个spring boot 项目 里面暴露了如下接口, 很简单

暴露了一个 get 请求返回 hello world 的restful 接口.

将此程序部署到 linux 服务器上. 部署步奏不再赘述, 自行百度 spring boot 部署 即可.

在此我向大家推荐一个架构学习交流群。交流学习群号:575745314 里面会分享一些资深架构师录制的视频录像:有Spring,MyBatis,Netty源码分析,高并发、高性能、分布式、微服务架构的原理,JVM性能优化、分布式架构等这些成为架构师必备的知识体系。还能领取免费的学习资源,目前受益良多

3.创建一个名称为 nginx.conf 的 nginx 配置文件

创建一个 名叫 nginx.conf 的配置文件, 完整内容如下

配置文件中限流部分解释:

如上, nginx 的限流配置 , 只有两行代码.

第一行:

limit_req_zone : 是限流声明.

$binary_remote_addr: 表示根据客户端 ip 来 限流, 比如 上面的限流配置 限制每个客户端ip的请求频率为一秒一次, 你如果耍流氓一秒两次, 就会被限流 会返回一个http 503 错误给你.

zone=perip: 表示 用 perip 这个 名称 来标识 这行限流配置, 待会 会通过 perip 这个名称来引用这行限流配置(也就是说限流配置是可以定义为多个的)

10m: 表示存储客户端ip的空间为10MB, 1MB 大概存储1万多ip , 10 MB 大概 10多万Ip , 参考解释: http://www.ttlsa.com/nginx/ng... 在这篇文章中搜索 binary_remote_addr 即可定位相关解释.

rate=1r/s: 表示频率是 一秒一个请求.

第二行:

表示在 myserver 这个集群上, 使用 名称为 perip 的限流配置

4.用docker 部署 nginx

将上一步创建的 nginx.conf 配置文件, 拷贝到linux 目录 , /root/nginx/ 下 (目录可以任意), 然后 一个docker 命令部署好 nginx 环境

这里暴露的是 8080 端口, 通过 8080 端口可以访问到 nginx 配置中的负载均衡节点, 即 192.168.10.253:8090 ip端口, 这个 ip端口对应的就是 , 第一步创建部署的 hello world 程序.

集群服务器分布式iis_使用nginx实现分布式限流的方法相关推荐

  1. 阿里云ECS服务器部署HADOOP集群(三):ZooKeeper 完全分布式集群搭建

    本篇将在阿里云ECS服务器部署HADOOP集群(一):Hadoop完全分布式集群环境搭建的基础上搭建,多添加了一个 datanode 节点 . 1 节点环境介绍: 1.1 环境介绍: 服务器:三台阿里 ...

  2. 集群(三)——haproxy+nginx搭建web集群

    集群(三)--haproxy+nginx搭建web集群 一.Haproxy 前言 二.Haproxy 简介 1.常见的web集群调度器 2.Haproxy应用分析 3.Haproxy高性能负载均衡的主 ...

  3. 集群服务器下使用SpringBoot @Scheduled注解定时任务

    原文:https://blog.csdn.net/huyang1990/article/details/78551578 SpringBoot提供了 Schedule模块完美支持定时任务的执行 在实际 ...

  4. ARM多核心集群服务器

    方案背景 移动互联应用的快速发展和云计算.大数据应用的拓展和深化,数据中心已由传统的x86架构的大型机.小型机逐步转移到ARM架构服务器,而随着人们对服务器工作负载模式的新需求,越来越多的智能场景需要 ...

  5. Kettle分布式集群安装部署详细步骤和使用分布式Kettle集群示例

    Kettle分布式集群安装部署详细步骤和使用分布式Kettle集群示例 一.下载kettle和mysql驱动 二.相关技术博客 三.Kettle分布式集群环境准备 四.解压kettle 五.执行Kit ...

  6. 集群服务器定时任务重复执行的解决方案

    集群服务器定时任务重复执行的解决方案 服务器采用了负载均衡,有两台服务器,部署的代码一样,所以里面的定时任务在某一时间会被同时执行,这就导致了很多其他意外的发生,想要解决的问题基本就三个:单点执行,故 ...

  7. 集群服务器session同步

    事实上,网站总是有状态的.每一个登录信息.用户信息常常被存储在session内部.而当一个网站被部署在不止一台服务器的时候,就会遇到session同步的问题.事实上即使一个很小的网站,也要至少有两台服 ...

  8. 服务器查看不到集群信息,集群服务器查看内存

    集群服务器查看内存 内容精选 换一换 用户可以查看在不同云服务区已经申请成功的专属云.进入指定的专属云,还可以查看该专属云内专属计算资源详情及云服务器等专属云内基础服务的实例信息.登录管理控制台.单击 ...

  9. arm云教室服务器_成都凌点科技告诉你ARM集群服务器适合的应用场景有哪些

    1 什么是高密度ARM集群服务器 ARM集群服务器,是在一个机箱内设计N个高性能ARM处理器,每个ARM处理器配置独立的内存及存储,所有的处理器通过高速网络(千兆或万兆网络)进行相互之间以及对外通信的 ...

  10. 集群服务器状态命令------rs.status()各个字段的含义

    可根据rs.status() 查询集群服务器状态. 字段解释: self 这个信息出现在执行rs.status()函数的成员信息中 stateStr用户描述服务器状态的字符串.有SECONDARY,P ...

最新文章

  1. CVPR 2017 全部及部分论文解读集锦
  2. J2EE详细入门教程--人员登入
  3. 适合初学者对Yaf框架的学习(一)
  4. linux 协议栈之socket,Linux协议栈之BSD和INET socket层(一)
  5. mysql 集群_MySQL之PXC集群搭建
  6. Quartz 之入门示例
  7. windows下python 版本opencv 安装
  8. 基于JAVA+SpringMVC+Mybatis+MYSQL的记账管理系统
  9. 学习MySQL:使用SELECT语句从MySQL服务器查询数据
  10. 用Markdown格式写一份前端简历
  11. Java、JSP网上零食销售系统的设计与实现
  12. 从源程序到可执行文件的四个过程
  13. ABAP ALV详细教程(二)
  14. java 成员变量什么时候初始化_Java中成员变量的初始化过程
  15. 面向对象设计,ORM,NHIBERNATE杂谈(有感)
  16. 年关将至,房东不肯退押金,应当如何维权?| 法豸
  17. linux exchange 账号,linux exchange服务器配置
  18. 关于职业选择讲座的笔记
  19. pandas中关于DataFrame去掉重复行和NaN行
  20. 使用mllib完成mnist手写识别任务

热门文章

  1. tf之static_transform_publisher
  2. 轻量级网络模型之EfficientNet
  3. 院士在西湖大学分享科研经历:读博过程中也曾想放弃,因为没有任何进展
  4. Deep Convolutional Network Cascade for Facial Point Detection论文算法解析
  5. spring cloud(一) 副 consul
  6. MySQL技术内幕 InnoDB存储引擎【一】
  7. 轻量级移动端日期选择器
  8. 用WPF开发仿QQ概念版之--------Loading预加载界面(闪屏窗体)
  9. 用.net动态创建类的实例 (转)
  10. GARFIELD@10-21-2004