博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
Spring Cloud搭建微服务架构----服务网关
阅读量:7224 次
发布时间:2019-06-29

本文共 1860 字,大约阅读时间需要 6 分钟。

hot3.png

API Gateway说明

API Gateway封装内部系统架构,提供API供客户端使用。涵盖功能点,如授权,监控,负载均衡,缓存,请求分片和管理,静态响应处理,请求聚合等。

优点

很好的封装了内部应用结构,交互更简单,减少了客户端和服务端通信次数。

缺点

需要是一个高可用的组件,必须要开发,部署和管理,可能成为开发瓶颈。API Gateway的更新必须越轻量级越好。

开发高效API Gateway

  • 性能和可扩展性:创建一个支持同步,非阻塞IO的API Gateway很有意义。
  • API Gateway需要支持多种通信方式。

演变

传统架构:

输入图片说明

引入eureka:

输入图片说明

最终:

输入图片说明

ZUUL

  • 通过Ribbon进行负载均衡;

  • 通过继承ZuulFilter实现请求过滤;

package com.springbootdemo.eureka.filter;import com.netflix.zuul.ZuulFilter;import com.netflix.zuul.context.RequestContext;import org.slf4j.Logger;import org.slf4j.LoggerFactory;import javax.servlet.http.HttpServletRequest;/** * Created by Administrator on 2017/4/18. * * 安全过滤器,验证请求中是否有accessToken参数 */public class AccessFilter extends ZuulFilter {    private static Logger log = LoggerFactory.getLogger(AccessFilter.class);    /**     * 代表不同的过滤类型:     * pre:请求之前调用;     * routing:在路由请求时调用;     * post:在routing和error过滤器之后被调用;     * error:在处理错误是调用;     * @return     */    @Override    public String filterType() {        return "pre";    }    /**     * 通过int值定义过滤器执行顺序;     * @return     */    @Override    public int filterOrder() {        return 0;    }    /**     * 返回boolean类型判断过滤器是否执行;     * @return     */    @Override    public boolean shouldFilter() {        return true;    }    @Override    public Object run() {        RequestContext ctx = RequestContext.getCurrentContext();        HttpServletRequest request = ctx.getRequest();        log.info(String.format("%s request to %s", request.getMethod(), request.getRequestURL().toString()));        Object accessToken = request.getParameter("accessToken");        if(accessToken == null) {            log.warn("access token is empty");            ctx.setSendZuulResponse(false);            ctx.setResponseStatusCode(401);            return null;        }        log.info("access token ok");        return null;    }}

参考代码

转载于:https://my.oschina.net/u/1000241/blog/882938

你可能感兴趣的文章
MATLAB新手教程
查看>>
使用FIR.im发布自己的移动端APP
查看>>
WPF入门教程系列七——布局之WrapPanel与StackPanel(二)
查看>>
变量 - PHP手册笔记
查看>>
吴晓波最劲爆演讲:终于把传统行业的转型升级都讲清楚了
查看>>
ACM:图BFS,迷宫
查看>>
storm遇到问题汇总
查看>>
设置cookies第二天0点过期
查看>>
Register DLL Assembly Gacutil.exe(全局程序集缓存工具)
查看>>
使用Topshelf创建Windows服务
查看>>
cdoj915-方老师的分身 II (长度不小于k的最短路)【spfa】
查看>>
ntpdate公司测试
查看>>
.NET破解之轻量万能自定义信息管理系统
查看>>
阻止form表单提交的问题
查看>>
ASP.NET MVC验证 - 自定义验证规则、验证2个属性值不等【待验证】
查看>>
Android blueZ HCI(一个):hciconfig实施和经常使用
查看>>
微信公众号怎么推送消息_微信公众号发送消息
查看>>
电商指尖---(9).net发展Solr中间Facet特征
查看>>
SQList3 and SQL入门学习笔记
查看>>
jQuery 找到当前元素之前最后一次出现的某个同辈元素
查看>>