springcloud网关服务组件zuul路由功能初探

以你之姓@ 2021-12-03 22:37 373阅读 0赞

zuul作为一个网关服务组件,他其实是有路由功能的,这个路由类似nginx的反向代理,也有文章来比较nginx和zuul来做反向代理与负载均衡的不同,zuul是用java编写的,而nginx是用c++编写的,zuul如果单独拿来使用,可以替换nginx,下面通过一个简单的示例,展示zuul路由功能。

这里假定一个http请求http://localhost:5000/service/user/get/20,当我们使用zuul做路由转发,可以将这个请求转发到http://localhost:8081/user/get/20上,这里我们就通过zuul来做一个简单的示例。

首先就需要我们编写一个RESTful的http服务,提供/user/get/{id}的接口,返回指定ID的用户信息。这个服务使用什么实现完全不用关心,也不需要通过服务注册与发现来做服务注册。

另外,我们准备我们的zuul工程,这里只需要引入spring-cloud-starter-netflix-zuul(Finchley.RELEASE版本)依赖即可。我们从依赖关系上看,他已经包含了spring-boot-starter-web,spring-cloud-starter-netflix-hystrix,spring-cloud-starter-netflix-ribbon等依赖。

watermark_type_ZmFuZ3poZW5naGVpdGk_shadow_10_text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L2ZlaW5pZmk_size_16_color_FFFFFF_t_70

项目中就一个启动类:

  1. package com.xxx.springcloud;
  2. import org.springframework.boot.SpringApplication;
  3. import org.springframework.boot.autoconfigure.SpringBootApplication;
  4. import org.springframework.cloud.netflix.zuul.EnableZuulProxy;
  5. @SpringBootApplication
  6. @EnableZuulProxy
  7. public class ZuulApplication {
  8. public static void main( String[] args ){
  9. SpringApplication.run(ZuulApplication.class, args);
  10. }
  11. }

借助springboot启动,@EnableZuulProxy表示开启网关代理服务。

这里重点是配置文件中关于路由的配置:

20190718223315783.png

如果使用eureka或者consul来做服务注册,提供服务服务已经注册名叫xxservice,我们可以通过如下的配置来实现:

zuul.routes.service.path=/service/**

zuul.routes.service.serviceId=xxservice

这样实现是通过服务名来调用,这样一个服务名可能就有好几个实例,能够做负载均衡。

分别启动服务提供者,和网关服务,我们通过curl测试一下路由是否实现:

20190718224934603.png

这里的路由转发确实跟nginx的反向代理功能很像,在springcloud中,通过服务名来调用,就能真正的实现反向代理以及负载均衡了。

发表评论

表情:
评论列表 (有 0 条评论,373人围观)

还没有评论,来说两句吧...

相关阅读

    相关 SpringCloudzuul

    1.场景还原      在微服务架构中,zuul作为springcloud重要的网关路由组件,为前端统一的ip请求提供了极大的便捷;笔者在实际项目中,通过微服务模块名路由