springcloud开发实战(二):网关

上一篇文件介绍了微服务的注册、发现,以及断路器等功能,这里需要考虑一个问题,当外部应用需要访问服务的时候,按照一般的逻辑,是不允许直接访问服务的地址,这里引入了网关的概念,相当于中转站的作用。
springcloud的网关使用的zuul,首先是导入依赖
<dependency>
        <groupId>org.springframework.cloud</groupId>
        <artifactId>spring-cloud-starter-netflix-zuul</artifactId>
    </dependency>
需要注意的是,同样zuul也被netflix进行封装,因此推荐使用netflix的依赖。
properties配置新增内容
spring.application.name=eureka-gw

server.port=8888

zuul.routes.baidu.path=/hello/**
zuul.routes.baidu.url=http://localhost:8082/
启动类新增注解@EnableZuulProxy
@SpringBootApplication
@EnableZuulProxy
public class SpringbootGwApplication {
public static void main(String[] args) {
SpringApplication.run(SpringbootGwApplication.class, args);
}
}
依照之前的架构,依次启动:eureka、server、client、gw,按照之前的访问client请求:http://localhost:8082/hellworld?name=AAA,能够显示结果,此时将请求改成http://localhost:8888/hello/hellworld?name=AAA,依然可以显示结果,测试通过。
这里思考一个问题,client在gw的配置里是写的具体的ip地址,如果client服务器修改,IP地址还需要变动,比较麻烦,可以可以将配置文件的IP地址改成client的服务名,并且将gw也注册到eureka中
修改代码:依赖添加

org.springframework.cloud
spring-cloud-starter-netflix-eureka-client

修改配置文件,将zuul.routes.baidu.url修改成需要跳转的服务名:
spring.application.name=eureka-gw
eureka.client.service-url.defaultZone=http://localhost:8080/eureka/
server.port=8888

zuul.routes.baidu.path=/hello/**
zuul.routes.baidu.url=eureka-server2
添加注解@EnableEurekaClient
@SpringBootApplication
@EnableZuulProxy
@EnableEurekaClient
public class SpringbootGwApplication {
public static void main(String[] args) {
SpringApplication.run(SpringbootGwApplication.class, args);
}
}
重新启动网关,此时发现注册中心发现了网关服务,再次请求http://localhost:8888/hello/hellworld?name=AAA,依然没有问题。
这里再思考一个问题,如果服务名改变呢?依然需要修改配置文件,特别的,针对大型的项目,服务名多达上百种,如果每一个服务名都需要配置到网关中,十分麻烦,如果注册中心能自动将注册成功的服务名进行配置,就方便很多,事实上,springcloud已经完成了这个功能。
修改配置,将调转的地址屏蔽掉
#zuul.routes.baidu.path=/hello/**
#zuul.routes.baidu.url=eureka-server2
重新启动项目,请求:http://localhost:8888/XXXXX/hellworld?name=AAA,其中,“XXXXX”为跳转的服务名,发现依然可以请求到结果,测试成功。

其他、事实上由于springCloud更新迭代非常快速,以上方法依赖症逐步被淘汰代替,或是正在孵化其他替换方案,后续会继续进行介绍。

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值