开发者学堂课程【Spring Cloud 微服务架构设计与开发实战 :Spring Cloud 微服务网关代理 Zuul】学习笔记,与课程紧密联系,让用户快速学习知识。
课程地址:https://developer.aliyun.com/learning/course/60/detail/1091
Spring Cloud 微服务网关代理 Zuul
内容介绍
一、微服务网关 Zuul
二、微服务网关架构
三、Zuul 网关特性
四、微服务网关 Zuul 实战
课程概要:学习 Spring Cloud 微服务架构设计与实战课程,本课继续学习微服务架构中非常重要的技术-网关,迭代版本很快,架构体发生巨大变化,接下来我们来学习其原理
一、微服务网关 Zuul
对外公开服务特别多,就需要使用网关,网关本身是两个网络边界的通道,严格来说相当于请求转换,即代理服务器。
1.Zuul 是 Netflix 开源的微服务网关工具
Netflix 共享在早期的核心代码,学习资料还可以使用,基于 SpringBoot ,基于 SpringCloud 都可以使用,做识别认证和安全都可以,在吞吐量有很高的提升。
2.可以和 Eureka、Ribbon、Hystrix 等组件配合使用
3.Spring Cloud 对 Zuul 进行了整合与增强
4.Zuul 旨在实现动态路由,监视,弹性和安全性。
5.Zuul 默认使用的 HTTP 客户端是 Apache HTTPClient,
6.也可以使用 RestClient 或 okhttp3.OkHttpClient
7.Zuul 默认会为 Eureka 注册的服务创建动态路由
8.zuul 在2.x甚至3.x的分支中已经引入了 netty
9.github 地址:https://github.com/Netflix/zuul
10.官方文档:https://github.com/Netflix/zuul/wiki
二、微服务网关架构
代理端作为网关后期是挂接微服务集群,监控也是一致的,监控整个后台服务调用,现在的监控可以放到代理商来做,出口对外可以作微服务的代理对外模式。
一个微服务一个数据库,拆开数据库分表问题会越来越复杂,但是可以替换,好处在于数据中心可以替换。
三、Zuul 网关特性
1. Authentication and Security-验证和安全
2. 2.Insights and Monitoring-踉踪、统计、监控.
3. Dynamic Routing -动态路由消息到后台集群
4.Stress Testing -压力测试逐级递增
5.Load Shedding -过载保护.
6. Static Response handling -静态消息处理,无需后台集群服务器处理
7.Multiregion Resiliency - 多区域弹性伸缩,跨 AWS 区域路由
请求,分散压力,请求处理更接近调用者。
四、微服务网关 zuul 实战
1. 创建 Zuul 代理
(1)首先创建一个 Spring Boot 项目,然后引入 Zuul 相关依赖。
<dependency>
<groupld>org.springframework.cloud</groupld>
<artifactld>spring-cloud-starter-zuul</artifactld>
</dependency>
<dependency>
<groupld>org.springframework.cloud</groupld>
<artifactld>spring-cloud-starter-eureka</artifactld>
</dependency>
(2)添加注解@EnableZuulProxy
(3)Zuul 丙部使用 Ribbon 实现客户端负载均衡。
2.EnableZuulServer
提供为了方便启用微服务代理应用:
EnableZuulServer 只启动代理服务
EnableZuulProxy 简单理解内 @EnableZuuIserve 的增强版
当 zuul 与 Eureka、Ribbon 等组件配合使用时,
使用 @EnableZuulProxy。
新建一个项目
最主要的是添加注解:
package com.alibaba;
import org.springframework.boot.SpringApplication;
@EnableZuulProxy
@SpringBootApplication
Public
class
JavaSpringCloud000000zuulProxyDemoApplication {
public static void main(String[ ] args ) {
SpringApplication.run(
JavaSpringCloud000000ZuulProxyDemoAppl:
}
}
参考调用端,将端口修改即可:
spring.application.name=FeignClient
server.port=10000
eureka.client.service-url.defaultZone=http://localhost:8761/eureka/eureka.client.fetch-registry=true
eureka.client.register-with-eureka=true
默认链接会拉去所有的服务器设备,可定制
运行结果:
访问端口10000,运行结果:
报错
注意大小写敏感: