java路由规则_Zuul路由规则

## url方式

~~~

zuul:

routes:

haha: #key可以随便写

path: /user-service/** #匹配user-service为前缀的所有路径,并且把**部分的路径转发到下面的url

url: http://127.0.0.1:8082 #匹配user为前缀的所有路径转发到此地址

~~~

测试:

![](https://box.kancloud.cn/cfc53a6f538a7db2b385202c2bcfef58_2148x632.png)

## 面向服务的路由

在上面的路由规则中,我们把路径对应的服务地址写死了!如果同一服务有多个实例的话,这样做显然就不合理了。

我们应该根据服务的名称,去Eureka注册中心查找 服务对应的所有实例列表,然后进行动态路由才对!

因为Zuul已经引入了ribbon,所以使用面向服务的路由已经自动完成了负载均衡.

引入eureka依赖:

~~~

org.springframework.cloud

spring-cloud-starter-netflix-zuul

2.0.1.RELEASE

org.springframework.cloud

spring-cloud-starter-netflix-eureka-client

2.0.1.RELEASE

~~~

**启动类加上@EnableDiscoveryClient注解用来发现服务.**

配置:

~~~

server:

port: 10010

spring:

application:

name: api-gateway

eureka:

client:

service-url:

defaultZone: http://127.0.0.1:10086/eureka #将当前服务注册到eureka

zuul:

routes:

haha: #key可以随便写

path: /user-service/** #匹配user-service为前缀的所有路径,并且把**部分的路径转发到下面的服务

serviceId: consumer-server #这里是服务的ID

~~~

测试:

![](https://box.kancloud.cn/af5735b92accbe88a825c51f4e48e93e_2100x626.png)

## 简化路由配置

~~~

zuul:

routes:

consumer-server: /user-service/** #key是服务的ID,值是服务的映射路径

~~~

**我们并没有配置consumer-server,但是也可以访问.因为这种配置方法太常见了,服务的ID配置为映射的路径,所以zuul将eureka的服务列表全部拉取下来,自动默认实现了将服务ID作为映射的前缀.也就是说我们可以什么都不用配置了,也可以实现请求转发.**

![](https://box.kancloud.cn/a8d161be475eeb696a6a61da1d23108e_2170x666.png)

## 去掉url中的服务ID

通过下面的方式去访问显得url太长了,并且也暴露了服务的ID.通过配置可以简化URL.

```

http://localhost:10010/api/user-server/user/1

```

~~~

zuul:

prefix: /api #路由前缀

routes:

user-server:

path: /user/**

serviceId: user-server

strip-prefix: false #默认是true,我们改成false,这样就不会将映射的前缀修剪掉(保留下来).配置在服务下面是局部的.

~~~

测试:达到了我们需要的效果.

![](https://box.kancloud.cn/255be8881e8e9fb3905449a4458a7475_1698x974.png)

## 全局strip-prefix: false

~~~

zuul:

prefix: /api #全局的只对这一项起作用,默认为true,我们基本不需要配置,因为没什么用.

strip-prefix: false

~~~

## 隐藏服务不对外暴露

有些服务比较敏感,我们不希望对外暴露,只希望服务间的内部访问.

~~~

zuul:

routes:

consumer-server: /user-service/** #key是服务的ID,值是服务的映射路径

ignored-services:

- yyy-server #将不需要对外暴露的服务写在此处,注意是一个集合

- xxx-server

~~~

## 路由前缀

这样所有的访问都要加上api前缀,因为Java现在一般都是只提供接口了,所以加上此前缀比较好.

~~~

zuul:

prefix: /api #路由前缀

~~~

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值