服务网关ZUUL

(一)理论知识
1.ZUUL工作原理
针对客户端与服务直接通信产生的问题,可以使用服务网关解决。服务网关相当于介于客户端和服务端之间的中间层,所有的外部请求都会先经过服务网关进行调度和过滤。
服务网关除了要实现请求路由、负载均衡、过滤等功能之外,还要实现更多功能,例如与服务相关框架整合、服务请求的熔断等。加入服务网关的微服务调度过程,如图1所示。
在这里插入图片描述

图1 加入服务网关的微服务调度过程
(二)开发流程
1.搭建eureka-server
(1)创建项目,引入依赖
使用Spring Initializr方 式创建一个名称为eureka-server和eureka-server-another的Spring Boot项目,这里将Group命名为com.itheima,将Artifact 命名为eureka-server,在pom.xml文件中添加Eureka Server依赖。
(2)添加Eureka的相关配置
在全局配置文件application.yml中添加Eureka的相关配置信息,如图2所示。
在这里插入图片描述

图2 全局配置文件application.yml中添加Eureka的相关配置信息
(3)在项目启动类添加@EnableEurekaServer注解
在项目启动类EurekaServerApplication.上添加@EnableEurekaServer注解开启Eureka Server功能。
(4)启动服务
测试服务搭建成功,如图3所示。
在这里插入图片描述

图3 测试服务搭建成功
2. 搭建eureka-provider
(1)创建项目,引入依赖
使用Spring Initializr方式创建一个名称为eureka-provider和eureka-provider-another的Spring Boot项目,这里将Group命名为com.itheima,将Artifact 命名为eureka-provider在pom.xml文件中添加EurekaClient和Web依赖。
(2)添加Eureka的相关配置
在全局配置文件application.yml中添加Eureka的相关配置信息,如图4所示。
在这里插入图片描述

图4 全局配置文件application.yml中添加Eureka的相关配置信息
(3)在项目启动类添加@EnableEurekaServer注解
在项目启动类EurekaClientApplication.上添加@EnableEurekaClient注解开启Eureka Client功能。
(4)创建controller包
服务提供者eureka-provider中创建controller包,创建controller包,并在controller包下创建HystrixController类,在HystrixController类中创建一个hi ()方法。创建HystrixController类如图5所示。
在这里插入图片描述

图5 创建HystrixController类
(5)启动服务
测试服务搭建成功,如图6所示。
在这里插入图片描述

图6 测试服务搭建成功
4. 创建服务消费者
(1)创建项目,引入依赖
使用Spring Initializr方式创建一个名称为eureka-consumer的Spring Boot项目,这里将Group命名为com.itheima,将Artifact 命名为eureka-consumer在pom.xml文件中添加EurekaClient和client、Web、Test依赖。
(2)添加Eureka的相关配置
在全局配置文件application.yml中添加Eureka的相关配置信息,如图7所示。
在这里插入图片描述

图7 全局配置文件application.yml中添加Eureka的相关配置信息
(3)在项目启动类添加@EnableEurekaServer注解
在启动类EurekaFeignClientApplication中添加@EnableEurekaClient注解开启Eureka Client功能,添加@EnableFeignClients注解开启Feign Client功能。
(4)创建config包
创建一个config包,在config包下新建配置类RestConfig,并添加@Configuration注解。在RestConfig类中 创建一个Bean实例 方法RestTemplate(),并在restTemplate()方法上添加@LoadBalanced注解,使RestTemplate实例对象处理请求时拥有客户端负载均衡的能力,如图8所示。
在这里插入图片描述

图8 新建配置类RestConfig
(5)创建service包
创建一个service包,在service包 下新建LocalItemService类并添加@Service注解。在LocalItemService类 中注入RestTemplate实例对象,并添加一个hi ()方法,在hi ()方法中对eureka-provider提供者服务进行调用,如图9所示。
在这里插入图片描述

图9 在hi ()方法中对eureka-provider提供者服务进行调用
(6)创建controller包
创建一个controller包,在controller包 下新建LocalItemController类并添加@RestController注解。在LocalItemController 类中注入LocalItemService实例对象,并创建一个hi ()方法.,如图10所示。
在这里插入图片描述

图10 创建一个controller包
5. 创建网关服务
(1)创建项目,引入依赖
使用Spring Initializr方式构建-一个名称为gateway-zuu1的网关服务项目,这里将Group命名为com. itheima,将Artifact命名为gateway- -zuul,添加Zuul、Test、Eureka Client、 Web依赖,其中,Zuu1依赖具体如图11所示。
在这里插入图片描述

图11 Zuu1依赖
(2)添加Eureka的相关配置
在全局配置文件application.yml中添加Eureka的相关配置信息,如图12所示。
在这里插入图片描述

图12 全局配置文件application.yml中添加Eureka的相关配置信息
(3)在项目启动类添加@EnableEurekaZuulProxy注解
在项目gateway-zuul的启动类GatewayZuulApplication添加@EnableZulProxy注解开启服务网关Zuul功能。
(4)启动测试项目
依次启动项目server, provider, consumer, gatewayzuul。启动成功后,使用浏览器访问ttp://loaclhost:7000,如图13所示。
在这里插入图片描述

图13 使用浏览器访问ttp://loaclhost:7000
(三)总结及问题与解决
1.设置是否向EurekaServer注册并获取注册信息。
代码如下:
Fetch-registry: false
Register-with-eureka: false
在搭建eureka-server时,需要在application.yml文件中添加以上代码,
避免在启动服务器时出现“Cannot execute request on any known server异常”的错误。
2.在启动类上添加相关注解。
服务端:@EnableEurekaServer
客户端:@EnableEurekaClient
3.客户端服务器在不同主机上实现通信。
在客户端的application.yml配置文件中把默认地址defauleZone修改为服务端所在主机地址即可实现不同主机之间的通信。

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

打赏作者

两壶若水

感谢您的鼓励!

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

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

打赏作者

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

抵扣说明:

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

余额充值