• 坚守岗位守护绿城美丽与整洁 2019-06-02
  • 最高降39.28万元 捷豹路虎进口车型调价 2019-06-02
  • 新华时评:磋商,不等于反复折腾 2019-05-03
  • 实现中华民族伟大复兴的必由之路 2019-05-03
  • 习近平齐鲁之行的七个感人瞬间 2019-04-19
  • 当今的公知精英都引导人产生一个共识:干什么都不重要,钱就是“事业和面子”。为了钱,出售自己,很现实。因此,许许多多的人只“信仰人民币”。 2019-04-13
  • 要像习近平那样感恩父母 2019-04-05
  • 南开大学出版社张彤:必须每一个环节都“门儿清” 2019-04-05
  • "拼房小程序"暗藏桃色交易 只花一分钱就能"约起" 2019-04-03
  • 弘扬“上海精神” 共谱合作新篇——上合组织成员国元首理事会会议前瞻 2019-04-03
  • 图解:谁是北京雾霾元凶?燃煤已经排除嫌疑了 2019-03-30
  • 西安幼升小入学难问题出在哪儿教育部门将统筹协调安排 2019-03-30
  • 比亚迪秦EV450 稳居北京市占率第一 2019-03-20
  • 围挡施工一年多 据说完工尚无期(图) 2019-03-18
  • 宝鸡现罕见宣统德寿碑 或为沈钧儒叔父沈卫书丹 2019-03-18
  • 五分钟内反应回复,平均十分钟解决任何IT技术问题,按难度跟工作量收费!

    北京11选五和值走势图:java B2B2C springmvc mybatis电子商务平台源码-------zuul网关实现

    IT侠客 |浏览221次 |售价: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
     加载中...
  • 坚守岗位守护绿城美丽与整洁 2019-06-02
  • 最高降39.28万元 捷豹路虎进口车型调价 2019-06-02
  • 新华时评:磋商,不等于反复折腾 2019-05-03
  • 实现中华民族伟大复兴的必由之路 2019-05-03
  • 习近平齐鲁之行的七个感人瞬间 2019-04-19
  • 当今的公知精英都引导人产生一个共识:干什么都不重要,钱就是“事业和面子”。为了钱,出售自己,很现实。因此,许许多多的人只“信仰人民币”。 2019-04-13
  • 要像习近平那样感恩父母 2019-04-05
  • 南开大学出版社张彤:必须每一个环节都“门儿清” 2019-04-05
  • "拼房小程序"暗藏桃色交易 只花一分钱就能"约起" 2019-04-03
  • 弘扬“上海精神” 共谱合作新篇——上合组织成员国元首理事会会议前瞻 2019-04-03
  • 图解:谁是北京雾霾元凶?燃煤已经排除嫌疑了 2019-03-30
  • 西安幼升小入学难问题出在哪儿教育部门将统筹协调安排 2019-03-30
  • 比亚迪秦EV450 稳居北京市占率第一 2019-03-20
  • 围挡施工一年多 据说完工尚无期(图) 2019-03-18
  • 宝鸡现罕见宣统德寿碑 或为沈钧儒叔父沈卫书丹 2019-03-18
  • 福彩25选7开奖号码本期 香港六合彩一波中特 扑克接龙牌 排列三走势图南方网 老时时彩2星玩法 河南十一选五走势 山东体彩官方网站 江苏11选5号码遗漏查询 一套连码人民币值多少钱 南粤36选7开奖走势 无错六肖中特www 湖南幸运赛车大小倍数 历史上414组选前后关系 电子游戏英语作业 排球鞋能当羽毛球鞋吗