特别详细的Spring Cloud 系列教程2:微服务网关gateway的启动

继上一篇:特别详细的Spring Cloud 系列教程1:服务注册中心Eureka的启动

在比较多的教程和书籍里,spring cloud的微服务网关用的Zuul。然而,zuul已经不被官方提倡,现在提倡用的是spring cloud gateway。因为gateway的整体性能表现比zuul要好。

旧版本zuul用的是servelt容器的阻塞式IO,gateway用的是webflux的响应式编程框架,从性能的角度来说,zuul不如gateway。zuul 2.0版本也换成了响应式编程框架,但是spring cloud官方版本中并没有集成zuul2.0,而是使用了spring cloud gateway。

server:
  port: 8888
spring:
  application:
    name: api-gateway
  cloud:
    gateway:
      discovery:
        locator:
          lower-case-service-id: true
      routes:
        - id: url-proxy-1 #我们自定义的路由 ID,保持唯一
          uri: lb://producer #目标服务地址,(lb代表从注册中心获取服务),后面接的就是你需要转发到的服务名称
          predicates:
#  符合这个断言的路径会转发到uri的地址  path:匹配类型是url地址匹配  /buy,匹配值,
#  当访问地址http://localhost:8080/buy/1.jsp时,会路由到上游地址lb://producer/1.jsp。
            - Path=/buy/**

gateway同时也作为一个服务注册到eureka server中。

eureka:
  client:
    registerWithEureka: true #服务注册开关
    fetchRegistry: true #服务发现开关
    serviceUrl: #Eureka服务端进行交互的地址,多个中间用逗号分隔,EUREKA_SERVER是我们设置的属性名,冒号:代表如果找不到属性,则后面的内容为默认值
      defaultZone: ${EUREKA_SERVER:http://localhost:8761/eureka/}
  instance:
    prefer-ip-address:  true  #将自己的ip地址注册到Eureka服务中
    ip-address: ${IP_ADDRESS:127.0.0.1}
    instance-id: ${spring.application.name}:${server.port} #指定实例id

启动gateway

 网关服务已经在服务注册中心出现了。

还记得前面那个producer服务,现在我们请求一下网关试试,看看请求能不能够转发到producer服务上去。

浏览器访问:http://localhost:8888/buy/goods

producer的业务代码:

	@GetMapping("goods")
	public String generate(){
		return "goods from { producer }";
	}

如果同一个服务名有多个服务注册,gateway默认会用轮询算法实现负载均衡,实际上是因为eureka client就引入了ribbon。

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值