限流就是通过一系列手段来控制并发请求量,以保证整个系统可用。下面就先来看常见的限流算法,然后再看如何具体应用。
限流算法
常见的限流算法有令牌桶和漏桶。
Hystrix是Netflix开源的一款针对分布式系统的延迟和容错库,目的是用来隔离分布式服务故障。它是通过线程池和信号量来是实现的,现在没有概念没关系,先来看怎么用吧。
我们在real_server_1项目上做测试,如下两步即可完成:
本系列第一章节我们就知道了如何配置upstream。下面要学习的是如何不写死服务列表,而是通过服务注册、发现的方式来实现upstream列表的动态变更。书中是使用Consul来实现的,它是一款开源的分布式服务注册与发现系统。简单来说,其核心思想就是,upstream服务向Consul注册服务,Nginx能监听到Consul上注册的服务变更,然后修改upstream列表,最后重启Nginx。本人也没有使用过该产品,就一起来学习下吧。
本章节来学习一下如何配置Nginx与上游服务器(real_server)的长连接。本人对这一块也不是很懂,如果只是照着书本添两个配置,可能也达不到学习的效果,下面我就按照自己的方式来浅析下这部分内容。
要想支持长连接,需要客户端(Nginx)和服务端(real_server)都支持才行,我们就先来看下服务端对长连接支持的情况。使用real_server_1项目来做测试,其容器为Springboot内嵌的Tomcat,提供服务的协议为HTTP 1.1,默认支持长连接。在没有修改配置的情况下,连接默认存活时间为60秒,对应配置为server.connection-timeout
。下面就来验证
最近在张开涛所著的《亿级流量网站架构核心技术》,粗粗浏览了下,核心思想是围绕着Nginx在转。如果平时没有一些运维实际经验的话,可能整本书看下来效果不是很好。要想吸收更多的知识,光看是没用的,还是得亲自动手操作。书中有不少代码片段,我会尝试尽量把案例都实现,组成可以跑通的完整测试项目,以达到学习的目的。本系列学习笔记的内容大多来自这本书,如果涉及到版权问题,请及时联系本人。下面就进入正题了。
目前需要的环境是Java运行环境和Nginx。