2022-11-02
动态转发
上面的例子中我们的目的地址是直接写死的一个服务器,实际开发中肯定是动态从注册中心中获取
此处以Eureka为例子,其他的注册中心只需要替换对应的 注册中心配置即可
3.1 整合注册中心
3.1.1 添加eureka依赖
org.springframework.cloudspring-cloud-starter-netflix-eureka-client
3.1.2 配置
我们需要给网关配置注册中心的位置,并且告诉gateway从注册中心中获取服务,需要将url变成lb开头的协议
spring:
application:
name: gateway
cloud:
inetutils:
ignored-interfaces: [ 'VMware.*' ] #经过测试,我们发现我们的电脑上存在多个网卡的时候, 程序注册到注册中心的时候可能会带错ip过去,比如把虚拟机的网卡ip带过去了,如果是本机内部使用没问题,但是阔机器就不行了# 忽略掉我们不想要的网卡
gateway:
routes:
- id: 08consumer-eureka-feign # 当前路由策略的唯一ID,可以随便写
uri: lb://08CONSUMER-EUREKA-FEIGN #lb开头代表是负载均衡,意味着需要从注册中心获取数据,获取的是当前名字的服务地址
predicates: #配置断言, 符合下面断言的请求会转发到上面的url,断言很多种条件
- Path=/order/** #断言的条件是请求的地址符合这个表达式,注意格式为Path=/order/**
loadbalancer: #设置负载均衡
ribbon:
enabled: false #设置不用ribbon的负载均衡方式,因为它是阻塞的,设置为false后会自动变为非阻塞
#配置注册中心
eureka:
client:
service-url:
defaultZone: http://localhost:10000/eureka/
instance:
prefer-ip-address: true #在注册中心显示的是ip,而不是机器名
上面的方式是因为gateway中有默认的一个 The LoadBalancerClient Filter,他的主要作用是用于进行负载均衡,当我们的uri是lb://开头的地址的时候会触发负载均衡的规则,不过LoadBalancerClientFilter 默认是阻塞操作,建议使用 ReactiveLoadBalancerClientFilter 非阻塞操作,使用方式很简单,只需要设置spring.cloud.loadbalancer.ribbon.enabled属性为false即可,别的不需要动
注意如果网关找不到对应的服务会提示503
负载均衡介绍
3.2 服务名称转发
上面的例子中,我们将/order/**映射到了08CONSUMER-EUREKA-FEIGN服务中,并且从注册中心中获取到了地址,
但是实际开发中我们的网关能处理的地址可能非常多,那就需要设置非常多的配置,这样比较麻烦,因此我们可以通过服务名称转发,我们只需要通过 http://网关/服务名/地址的方式访问
spring:
application:
name: gateway
cloud:
inetutils:
ignored-interfaces: [ 'VMware.*' ] #经过测试,我们发现我们的电脑上存在多个网卡的时候, 程序注册到注册中心的时候可能会带错ip过去,比如把虚拟机的网卡ip带过去了,如果是本机内部使用没问题,但是阔机器就不行了# 忽略掉我们不想要的网卡
gateway:
discovery:
locator:
enabled: true #开启基于服务名字的发现,需要在访问地址前先添加服务的名字
lower-case-service-id: true #将服务名字小写
loadbalancer:
ribbon:
enabled: false #设置不用ribbon的负载均衡方式,因为它是阻塞的,设置为false后会自动变为非阻塞
#配置注册中心
eureka:
client:
service-url:
defaultZone: http://localhost:10000/eureka/
instance:
prefer-ip-address: true #在注册中心显示的是ip,而不是机器名
上一篇:gateway介绍(二)断言
开班时间:2021-04-12(深圳)
开班盛况开班时间:2021-05-17(北京)
开班盛况开班时间:2021-03-22(杭州)
开班盛况开班时间:2021-04-26(北京)
开班盛况开班时间:2021-05-10(北京)
开班盛况开班时间:2021-02-22(北京)
开班盛况开班时间:2021-07-12(北京)
预约报名开班时间:2020-09-21(上海)
开班盛况开班时间:2021-07-12(北京)
预约报名开班时间:2019-07-22(北京)
开班盛况Copyright 2011-2023 北京千锋互联科技有限公司 .All Right 京ICP备12003911号-5 京公网安备 11010802035720号