微服务架构与应用

API网关服务:SpringCloud Zuul

2018-06-25  本文已影响47人  没睡醒的鱼

背景

当客户端单击某个功能的时候往往会发出一些对微服务获取资源的请求到后端,请求被转发到各个不同的服务实例。运维人员需要去手工维护这些路由规则与服务实例列表,当有实例增减或有IP地址发生变动的时候,也需要手工的去同步修改这些信息,当系统规模不断增大,这些维护的任务会变得越来越难。
此外,为了服务的安全性,往往都会有一定的权限校验机制,我们在很多服务中都实现了一套校验逻辑,随着规模的扩大,冗余变得越来越多。当我们要修改一个bug时就不得不去每个应用中修改一次。

如何解决

为了解决这些问题,SpringCloud提供了SpringCloud Zuul。首先对于路由规则与服务实例的维护问题,zuul与eureka进行整合,将自身注册为eureka服务治理下的应用,同时从eureka中获取其他服务的实例信息。对于路由规则的维护,zuul默认会以服务名作为ContextPath的方式来创建路由映射,这样的默认设置可以满足我们大部分的路由需求
其次,对于权限校验这样的冗余问题,在API网关服务上来对微服务接口做前置过滤。开发者通过使用zuul来创建过滤器,指定哪些规则的请求需要执行校验逻辑,只有通过校验才会路由到具体的服务。

编写zuul微服务网关

路由配置

默认zuul会代理所有注册到eureka上的微服务,若只想代理部分服务,就需要对URL进行精确的控制

zuul过滤器

zuul大部分功能都是通过过滤器来实现的,zuul中定义了4种类型的过滤器

zuul高可用

zuul限流(令牌桶算法)

令牌桶算法
原理

以固定速率往桶中添加令牌,请求过来之后会从桶中获取令牌,拿到令牌之后请求才可以继续往下走;如果获取不到令牌请求就会被拒绝,从而达到限流的目的

上一篇 下一篇

猜你喜欢

热点阅读