• 中国正青春大型征集,iphoneX等着你! 2019-08-16
  • 《人民日报》与红旗渠 2019-08-16
  • “双一流”建设名单落地:非新无以为进,非旧无以为守 2019-08-09
  • 佛山中式家居品牌“大招”强势登入东阳红木家具市场 2019-08-05
  • 湖南第六批短期援藏队联合中南大学湘雅医院在山南市开展“爱眼护眼”活动 2019-08-05
  • “常青藤爸爸”一年盈利5000万秘方:靠质量和流量 2019-07-18
  • “她用生命完成了最后一堂课” 2019-07-18
  • 各地聚焦学习十九大精神--新疆频道--人民网 2019-07-17
  • 龙船礼 有讲究 百岁龙 抖精神 2019-07-14
  • 王岐山会见土耳其外长恰武什奥卢 2019-07-14
  • 校企共赢 奥园与北大经济学院达成合作并共同举行中国经济高端论坛 ——凤凰网房产北京 2019-07-05
  • 汕头一企业埋暗管偷排 4直接责任人被刑事拘留 2019-06-28
  • 坚守岗位守护绿城美丽与整洁 2019-06-02
  • 最高降39.28万元 捷豹路虎进口车型调价 2019-06-02
  • 新华时评:磋商,不等于反复折腾 2019-05-03
  • 五分钟内反应回复,平均十分钟解决任何IT技术问题,按难度跟工作量收费!

    彩票开奖:java B2B2C springmvc mybatis电子商务平台源码-------zuul网关实现

    IT侠客 |浏览242次 |售价:0元 |联系博客主
    收藏|2018/12/07 11:32

    陕西11选5前二和值走势图 www.wpyw.net 一、简介


    ? ? 在Springcloud中用zuul来实现网关功能,客户端的请求首先经过负载均衡Ngnix,再到达服务网关(zuul集群),然后再到具体的服务。Zuul的主要功能是路由转发和过滤器。路由功能是微服务的一部分,比如/api/server1转发到到server1服务。zuul默认和Ribbon结合实现了负载均衡的功能。愿意了解源码的朋友直接求求交流分享技术:二一四七七七五六三三 


    二、搭建


    ? ?首先是POM文件 

    <dependency>
                <groupId>org.springframework.cloud</groupId>
                <artifactId>spring-cloud-starter-eureka</artifactId>
            </dependency>
            <dependency>
                <groupId>org.springframework.cloud</groupId>
                <artifactId>spring-cloud-starter-zuul</artifactId>
            </dependency>
            <dependency>
                <groupId>org.springframework.boot</groupId>
                <artifactId>spring-boot-starter-web</artifactId>
            </dependency>

    ?然后在applicaton类加上注解@EnableZuulProxy,开启zuul的功能 

    @SpringBootApplication
    @EnableZuulProxy
    @EnableEurekaClient
    @RefreshScope
    public class HfzZuulApplication {
     
        public static void main(String[] args) {
            SpringApplication.run(HfzZuulApplication.class, args);
        }
    }

    yml配置如下 

    eureka:
      client:
        serviceUrl:
          defaultZone: //name:[email protected]/eureka/
      instance:
        ip-address: Ip地址
        prefer-ip-address: true
    server:
      port: 8769
    spring:
      application:
        name: service-zuul
      sleuth:
        sampler:
          percentage: 1.0
      cloud:
        config:
          discovery:
            enabled: true
            service-id: CONFIG-SERVER
          label: master
          profile: dev
          name: hfz-zuul
          username: name
          password: pass

    ?以上是在项目中配置的,为了使项目更加灵活,所以将路由的配置放在github上,这样可以动态读取 

    zuul:
      routes:
        api-a:
          path: /api-a/**
          serviceId: service-ribbon
        api-b:
          path: /api-b/**
          serviceId: service-feign

    以/api-a/ 开头的请求都转发给service-ribbon服务;以/api-b/开头的请求都转发给service-feign服务; 


    三、服务过滤


    zuul不仅可以路由,并且还能通过过滤来拦截一些服务,可以用来做安全验证。 

    public class MyFilter extends ZuulFilter{
     
    private static Logger log = LoggerFactory.getLogger(MyFilter.class);
    @Override
    public String filterType() {
        return "pre";
    }
     
    @Override
    public int filterOrder() {
        return 0;
    }
     
    @Override
    public boolean shouldFilter() {
        return true;
    }
     
    @Override
    public Object run() {
        RequestContext ctx = RequestContext.getCurrentContext();
        HttpServletRequest request = ctx.getRequest();
        log.info(String.format("%s >>> %s", request.getMethod(), request.getRequestURL().toString()));
        Object accessToken = request.getParameter("token");
        if(accessToken == null) {
            log.warn("token is empty");
            ctx.setSendZuulResponse(false);
            ctx.setResponseStatusCode(401);
            try {
                ctx.getResponse().getWriter().write("token is empty");
            }catch (Exception e){}
     
            return null;
        }
        log.info("ok");
        return null;
     }
    }

    filterType:返回一个字符串代表过滤器的类型,在zuul中定义了四种不同生命周期的过滤器类型,具体如下: 

    pre:路由之前

    routing:路由之时

    post: 路由之后

    error:发送错误调用

    filterOrder:过滤的顺序

    shouldFilter:逻辑判断,是否要过滤

    run:过滤器的具体逻辑控制

    接下来就可以测试访问了。 


    技术架构图如下:

    h5.jpg

    咨询/回复该博客即可获得 2 经验值,咨询/回复被采纳即可获得 2 经验值!
    咨询/回复

    验证码

      换一个
    全部回答(0)
    +1
     加载中...
  • 中国正青春大型征集,iphoneX等着你! 2019-08-16
  • 《人民日报》与红旗渠 2019-08-16
  • “双一流”建设名单落地:非新无以为进,非旧无以为守 2019-08-09
  • 佛山中式家居品牌“大招”强势登入东阳红木家具市场 2019-08-05
  • 湖南第六批短期援藏队联合中南大学湘雅医院在山南市开展“爱眼护眼”活动 2019-08-05
  • “常青藤爸爸”一年盈利5000万秘方:靠质量和流量 2019-07-18
  • “她用生命完成了最后一堂课” 2019-07-18
  • 各地聚焦学习十九大精神--新疆频道--人民网 2019-07-17
  • 龙船礼 有讲究 百岁龙 抖精神 2019-07-14
  • 王岐山会见土耳其外长恰武什奥卢 2019-07-14
  • 校企共赢 奥园与北大经济学院达成合作并共同举行中国经济高端论坛 ——凤凰网房产北京 2019-07-05
  • 汕头一企业埋暗管偷排 4直接责任人被刑事拘留 2019-06-28
  • 坚守岗位守护绿城美丽与整洁 2019-06-02
  • 最高降39.28万元 捷豹路虎进口车型调价 2019-06-02
  • 新华时评:磋商,不等于反复折腾 2019-05-03
  • 双彩p3开机号 福利彩票走势图带坐标连线 东方6十1走势图带坐标连线 11选五下期预测北京 54hk赛马会cc唯一 河北20选5今晚开奖结果 北京28官网开奖 福利彩票快乐十分开奖 胜平负14场18076预测 青海11选5开奖电子走势图 大乐透走势图下载 德甲士游戏手柄怎么用 陕西十一选五中奖技巧 1元财付通买彩票 3d带连线走势图