12.Kong入门与实战 基于Nginx和OpenResty的云原生微服务网关 --- 高级案例实战

Posted enlyhua

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了12.Kong入门与实战 基于Nginx和OpenResty的云原生微服务网关 --- 高级案例实战相关的知识,希望对你有一定的参考价值。

第 12 章 高级案例实战 
12.1 案例 1:智能路由 
	通过智能路由使部分用户使用新版本加以验证。

	12.1.1 插件需求 
	12.1.2 插件开发 
	12.1.3 插件部署 
	12.1.4 插件配置 
	12.1.5 插件验证 

12.2 案例 2:动态限频 
	动态限频插件可以控制微服务站点的请求流量。当微服务站点面对大流量访问的时候,可以通过动态限频插件在网关层面对请求流量进行并发控制,以防止大流量对后端
核心服务造成影响和破坏,从而导致系统被拖垮且不可用。换言之就是通过调节请求流量的阈值来控制系统的最大请求流量值,以最大限度的保障服务的可用性。
	
	常用的限频方案:
		1.总并发连接数限制
		2.固定时间窗口限制
		3.滑动时间窗口限制
		4.漏桶算法
		5.令牌筒算法

	另外,还可以通过以下几种方式实现多维度限频:
		1.对请求的目标url进行限频
		2.对客户端的访问ip进行限频
		3.对特定用户或者企业进行限频
		4.多维度,细粒度的朵组合限频

	12.2.1 插件需求 
	12.2.2 插件开发 
	12.2.3 插件部署 
	12.2.4 插件配置 
	12.2.5 插件验证 

12.3 案例 3:下载限流 
	平台是如何做到限流的?通常是在网关层对限流做全局控制,针对不同等级的用户分别设置不同的下载速度。

	12.3.1 插件需求 
	12.3.2 插件开发 
	12.3.3 插件部署 
	12.3.4 插件配置 
	12.3.5 插件验证
	 
12.4 案例 4:流量镜像 
	网关流量镜像(也称为流量复制或影响流量)指的是将生产流量复制到测试集群或者新版本的集群中,在引导实时流量之前先进行测试,这样可以有效的降低版本变更的
风险。因为这种流量被视为"即发即忘",所以并不会干扰到正常的生产流量。

	12.4.1 插件需求 
	12.4.2 插件开发 
	12.4.3 插件部署 
	12.4.4 插件配置 
	12.4.5 插件验证 

12.5 案例 5:动态缓存 
	在客户端与服务器之间存在着多层对于用户无感知,不可见的缓存策略,比如浏览器缓存,dns缓存,cdn缓存,专用redis,memcached,varnish缓存服务,反向代理
缓存,请求内容缓存,mac缓存,arp缓存,路由表缓存,磁盘缓存,ssd缓存,内存缓存,页缓存,寄存器高速缓存等。

	12.5.1 插件需求 
	12.5.2 插件开发 
	12.5.3 插件部署 
	12.5.4 插件配置 
	12.5.5 插件验证 

12.6 案例 6:IP 地址位置 
	基于位置的服务(LBS),可以应用在很多场景。移动端手机可以通过GPS实现定位,而PC端可以通过IP地址定位到具体城市的某个地理位置。

	可以在网关层做统一处理,由网关从远程定位服务器或者本地缓存中获取用户的地址位置信息,再将其附加到当前请求的上下文中,直接透传给后端业务服务。

	获取真实IP:
		首先从 X-Forwarded-For 中(该请求头用于记录经过的代理服务器的ip地址信息)中取值,如果有此请求,直接取出取中第1个值即可,这是由于每经过一级代理,
	就会把这次请求的来源ip追加在 X-Forwarded-For 中,因此取出第1个即意味着拿到了真实ip;如果无此请求头,则从 X-Real-IP 中取(需要有realip_module)
	模块,此值记录了客户端的真实ip地址;如果前2着都没有,再从nginx变量中取 remote_addr,此值表示最后一个代理服务器的ip地址,如果中间没有代理服务器,这
	就是真实的客户端ip地址。

	12.6.1 插件需求 
	12.6.2 插件开发 
	12.6.3 插件部署 
	12.6.4 插件配置 
	12.6.5 插件验证 

12.7 案例 7:合并静态文件 
	合并前端静态文件(js/css)的方式有两种:第一种为静态合并,即在静态资源正式发布之前就使用工具将多个静态文件合并为1个文件。第二种为动态合并,把多个静态文件
的地址以参数的形式传入给kong服务器,然后kong服务器会解析拆分这些参数,之后再请求后端静态文件服务器,最后将这些静态文件合并成一个文件缓存并返回给客户端。这样
可以有效的减少http请求次数和对静态文件服务端的压力,从而提高页面加载速度,进一步提升客户体验。

	12.7.1 插件需求 
	12.7.2 插件开发 
	12.7.3 插件部署 
	12.7.4 插件配置 
	12.7.5 插件验证 

12.8 案例 8:WAF 
	waf(web应用防火墙),通过一系列针对http/https 的安全策略来专门为web应用提供保护。

	传统的网络防火墙硬件设备主要工作在OSI模型的第三,第四层,只能检测第三次的ip报文,限制第四层的端口和封堵第四层的tcp协议,因此不可能对第七层的http通信
请求进行更进一步的验证或者攻击规则分析,难以应对诸如 sql 注入,cookie劫持,xss跨站,网页篡改,网页木马上传,敏感文件访问和恶意爬虫扫描等应用层攻击。waf的
出现有效的解决了上述问题。

	12.8.1 插件需求 
	12.8.2 插件开发 
	12.8.3 插件部署 
	12.8.4 插件配置 
	12.8.5 插件验证 

12.9 案例 9:跨数据中心 
	很多公司都有自己的 多数据中心机房,其主要目的是保证服务的高可用性,提升哦用户体验以及服务的数据容灾,使得任意一个数据中心的服务发生故障时,都能自动
调度转移到另一个数据中心,而且中间不需要人工介入。这里需要强调的是,假如数据中心的服务发生了故障,第一时间需要考虑的是可用性而非性能。
	
	如果是整个数据中心整个机房发生灾难性故障,则需要结合GSLB(全局负载均衡)或者GTM(全局流量管理),根据资源的健康情况和流量负载做出全局的智能的数据中心
调度策略。

	12.9.1 插件需求 
	12.9.2 源码调整 
	12.9.3 插件开发 
	12.9.4 插件部署 
	12.9.5 插件配置 
	12.9.6 插件验证 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

以上是关于12.Kong入门与实战 基于Nginx和OpenResty的云原生微服务网关 --- 高级案例实战的主要内容,如果未能解决你的问题,请参考以下文章

7.Kong入门与实战 基于Nginx和OpenResty的云原生微服务网关 --- 日志收集与分析

9.Kong入门与实战 基于Nginx和OpenResty的云原生微服务网关 --- 高级进阶

8.Kong入门与实战 基于Nginx和OpenResty的云原生微服务网关 --- 指标监控与报警

6.Kong入门与实战 基于Nginx和OpenResty的云原生微服务网关 --- Lua 语言

5.Kong入门与实战 基于Nginx和OpenResty的云原生微服务网关 --- Kong 的配置详解

10.Kong入门与实战 基于Nginx和OpenResty的云原生微服务网关 --- 内置插件