开发者学堂课程干货总结——Spring Cloud微服务架构设计与开发实战(十九)-阿里云开发者社区

开发者社区> 开发者学堂> 正文
登录阅读全文

开发者学堂课程干货总结——Spring Cloud微服务架构设计与开发实战(十九)

简介: Spring Cloud微服务架构设计与开发实战课时2.8—Java Spring Cloud网关Zuul 。Java Spring Cloud是全球范围内最成熟、最完善、最流行的微服务架构方案体系。被众多的互联网大公司采用,包括阿里巴巴、腾讯、支付宝、网易、IBM、谷歌、京东、百度、滴滴等。电子书+视频为同学带来最佳学习效果,文字、课程链接、图谱地址统统为大家放送了哦!

哈喽各位同学们大家好呀,今天是开发者学院中课程“Spring Cloud微服务架构设计与开发实战”的章节二的Java Spring Cloud网关Zuul ”干货总结~是一起学习新课程吧!

课程链接以及图谱地址小编已经为大家指路了,搭配学习效果更佳👇

课程名称:Java Spring Cloud网关Zuul 

课程地址:https://developer.aliyun.com/learning/course/60/detail/1091

图谱名称:Alibaba Java 技术图谱

图谱地址:https://developer.aliyun.com/graph/java


Java Spring Cloud网关Zuul 


一、Java Spring Cloud网关Zuul 

本节课讲的是微服务架构非常重要的技术“Zuul网关”,现在已经迭代到2.0版本,架构底层也发生了较大的变化。微服务集群为什么需要网关,因为服务特别多,尤其是对外的时候,作为调用端,不可能知道每台服务的实例地址,中间有注册心,实例地址会动态变化,所以希望有统一的出口,这就是网关的作用。 

网关是两个网络边界的通道,相当于请求转发,就是代理服务器。 

(一)Spring CloudZuul网关 

Zuul是Netflix开源的微服务网关工具Netflix公司微服务领域贡献了早期的核心代码,当然2020年之后Zuul,包括其他的一些Spring Cloud的组件,主要在维护阶段与Spring Cloud官方产生了分歧,但是仍然可以使用,而且功能也比较完善,包括实名验证、日志、路由定制等功能。2.0版本的功能更加强大,因为后面考虑优化,比如连接池等相关功能的扩展。 

Spring Cloud官方也出了类似ZuulGateway技术,Gateway技术基于Spring Framework 5 底层框架实现的,吞吐量方面有比较高的提升。但是使用场景要看实际情况,绝大部分公司的并发都不会超过1000很少有超过10000万的公司,因为中国互联网公司不是各个都是BAT, 所以会有差异。 

Spring CloudZuul网关总结: 

1. Zuul是Netflix开源的微服务网关工具 

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 

(二)Spring Cloud Zuul网关架构 

网关做为代理,后面挂接微服务集群,熔断、监控、身份验证等都可以放在代理做,Zuul出口对外可以做微服务代理模式,前面可以连接移动APP等,后面数据设计,有一种模式叫一个微服务一个数据库,还有现在国内还比较流行分库分表,有没有把数据库拆开,要不要把数据库拆开以后再分表。这个问题变得越来越复杂,不同的公司不同的业务量,规模都会有差别。 

当然好处是里面的组件都可以替换,不会出现多个相同组件,比如注册中心,可以替换成阿里开源的,国内很多人喜欢阿里的技术。阿里在Java块是国内贡献最大的一个公司如果阿里不在淘宝使用Java有可能Java在国内没有这么大市场架构不会得到如此广泛的实践性验证。现在无论是 Spring Clord 还是 Dubbo技术,都是很好的技术型。 

image.png 

 

(三)Zuul网关特性 

Zuul首先是作为代理层作为网关,路由、负载均衡、日志等都是扩展功能,主要的作用是把请求转发过去。 

1. Authentication and Security –验证和安全 

2. Insights and Monitoring –跟踪、统计、监控 

3. Dynamic Routing –动态路由 消息到 后台集群 

4. Stress Testing – 压力测试 逐级递增 

5. Load Shedding –过载保护 

6. Static Response handling – 静态消息处理,无需后台集群服务器处理 

7. Multiregion Resiliency – 多区域弹性伸缩,跨AWS区域路由请求,分散压力,请求处理更接近调用者。 

 

二、Spring Cloud网关Zuul实战 

(一)创建Zuul代理 

首先引入Zuul的依赖包,其次需要和注册中心进行交互,要知道那些服务可用,来代理可用的服务,是微服务集群的统一入口。 

 首先创建一个Spring Boot项目, 

 然后引入Zuul相关依赖。 

 <dependency> 

 <groupId>org.springframework.cloud</groupId> 

<artifactIdspring-cloud-starter-zuul</artifactId> 

 </dependency> 

 <dependency> 

 <groupId>org.springframework.cloud</groupId> 

<artifactIdspring-cloud-starter-eureka</artifactId> 

</dependency> 

 添加注解@EnableZuulProxy 

 Zuul内部使用Ribbon实现客户端负载均衡。 

(二)EnableZuulServer 

为了方便启动微服代理应用,Zuul提供了EnableZuulProxy 的快速注解,里面有组件默认的集成,直接在POS里实现。 

 @EnableZuulServer只启动代理服务 

 @EnableZuulProxy简单理解为@EnableZuulServer的增强版, 

 Zuul与Eureka、Ribbon等组件配合使用时, 

 使用@EnableZuulProxy 

(三)Spring Cloud Zuul网关底层优化 

1. RestClient或okhttp3.OkHttpClient 

2. Zuul默认会为Eureka注册的服务创建动态路由 

3. zuul在2.x甚至3.x的分支中已经引入了netty 

 

实战演示 

之前做的项目不动,里面有微服务、注册中心、调用端。打开Eclipse开发工具,新建项目,Name栏直接加上:ZoolProxyDemo 

image.png 

下一步,Frequently Used:选上Eurka Discovery ClieSpring Boot DevtoolsZuul[Mainternance],版本选2.3.7 

image.png 

下一步,直接上线 

image.png 

稍等,会有一个构建过程,下一步加注解,@EnableZuulProxy。注意中间不能中断,包一旦出错很难找回。 

image.png 

 

因为Zuul配置和调用端很像,直接复制调用端的配置改成ZuulName=ZuulProxy,端口=1000,详情配置如下图所示: 

image.png 

默认连接注册中心以后,会把所有的服务列表全部拉过来,默认形成一个路由策略会基于服务名方法名来形成一个路由规则,当然用户也可以改路由规则,可以定制,也可以改配置。暂时这里不改,后面作为扩展学习的时候再深入讲。 

接下来启动程序,直接右键,选Run As ,有两种启动方式,1.jave Application,2.Spring Boot APP,两种都可以启动。 

image.png 

启动成功之后,打开浏览器,输入http://localhost:10000/order-microservice/hello 回车,显示已经调用成功。 

image.png 

 

看一下访问规则,端口是:10000;服务端是:hello注册中心是:order-microservice。现在的路由规则是基于服务名和方法名调用。 

image.png 

 

通过代理服务器网关),输入服务名字方法名就可以了。当然也可以定制特殊的规则,这节课不演示。做演示会比较简单,主要是把整个调用链跑通,告诉大家整个微服务架构的搭建过程。 

 

版权声明:本文内容由阿里云实名注册用户自发贡献,版权归原作者所有,阿里云开发者社区不拥有其著作权,亦不承担相应法律责任。具体规则请查看《阿里云开发者社区用户服务协议》和《阿里云开发者社区知识产权保护指引》。如果您发现本社区中有涉嫌抄袭的内容,填写侵权投诉表单进行举报,一经查实,本社区将立刻删除涉嫌侵权内容。

分享: