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

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等依赖。

 项目中就一个启动类:

package com.xxx.springcloud;
import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;
import org.springframework.cloud.netflix.zuul.EnableZuulProxy;
@SpringBootApplication
@EnableZuulProxy
public class ZuulApplication {
    public static void main( String[] args ){
    	SpringApplication.run(ZuulApplication.class, args);
    }
}

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

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

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

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

zuul.routes.service.serviceId=xxservice 

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

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

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

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

luffy5459

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值