开发者学堂课程干货总结——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> 

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

 </dependency> 

 <dependency> 

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

<artifactId> spring-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 

 

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

 

相关文章
|
2月前
|
人工智能 运维 Java
Spring AI Alibaba Admin 开源!以数据为中心的 Agent 开发平台
Spring AI Alibaba Admin 正式发布!一站式实现 Prompt 管理、动态热更新、评测集构建、自动化评估与全链路可观测,助力企业高效构建可信赖的 AI Agent 应用。开源共建,现已上线!
3956 58
|
2月前
|
安全 前端开发 Java
《深入理解Spring》:现代Java开发的核心框架
Spring自2003年诞生以来,已成为Java企业级开发的基石,凭借IoC、AOP、声明式编程等核心特性,极大简化了开发复杂度。本系列将深入解析Spring框架核心原理及Spring Boot、Cloud、Security等生态组件,助力开发者构建高效、可扩展的应用体系。(238字)
|
4月前
|
前端开发 Java API
利用 Spring WebFlux 技术打造高效非阻塞 API 的完整开发方案与实践技巧
本文介绍了如何使用Spring WebFlux构建高效、可扩展的非阻塞API,涵盖响应式编程核心概念、技术方案设计及具体实现示例,适用于高并发场景下的API开发。
398 0
|
2月前
|
负载均衡 Java API
《深入理解Spring》Spring Cloud 构建分布式系统的微服务全家桶
Spring Cloud为微服务架构提供一站式解决方案,涵盖服务注册、配置管理、负载均衡、熔断限流等核心功能,助力开发者构建高可用、易扩展的分布式系统,并持续向云原生演进。
|
3月前
|
监控 Java 数据库
从零学 Dropwizard:手把手搭轻量 Java 微服务,告别 Spring 臃肿
Dropwizard 整合 Jetty、Jersey 等成熟组件,开箱即用,无需复杂配置。轻量高效,启动快,资源占用少,内置监控、健康检查与安全防护,搭配 Docker 部署便捷,是构建生产级 Java 微服务的极简利器。
365 3
|
8月前
|
人工智能 Java 数据库
飞算 JavaAI:革新电商订单系统 Spring Boot 微服务开发
在电商订单系统开发中,传统方式耗时约30天,需应对复杂代码、调试与测试。飞算JavaAI作为一款AI代码生成工具,专注于简化Spring Boot微服务开发。它能根据业务需求自动生成RESTful API、数据库交互及事务管理代码,将开发时间缩短至1小时,效率提升80%。通过减少样板代码编写,提供规范且准确的代码,飞算JavaAI显著降低了开发成本,为软件开发带来革新动力。
|
8月前
|
前端开发 Java UED
从基础到进阶:Spring Boot + Thymeleaf 整合开发中的常见坑与界面优化
本文深入探讨了 **Spring Boot + Thymeleaf** 开发中常见的参数绑定问题与界面优化技巧。从基础的 Spring MVC 请求参数绑定机制出发,分析了 `MissingServletRequestParameterException` 的成因及解决方法,例如确保前后端参数名、类型一致,正确设置请求方式(GET/POST)。同时,通过实际案例展示了如何优化支付页面的视觉效果,借助简单的 CSS 样式提升用户体验。最后,提供了官方文档等学习资源,帮助开发者更高效地掌握相关技能。无论是初学者还是进阶用户,都能从中受益,轻松应对项目开发中的挑战。
437 0
|
3月前
|
安全 数据可视化 Java
AiPy开发的 Spring 漏洞检测神器,未授权访问无所遁形
针对Spring站点未授权访问问题,现有工具难以检测如Swagger、Actuator等组件漏洞,且缺乏修复建议。全新AI工具基于Aipy开发,具备图形界面,支持一键扫描常见Spring组件,自动识别未授权访问风险,按漏洞类型标注并提供修复方案,扫描结果可视化展示,支持导出报告,大幅提升渗透测试与漏洞定位效率。

热门文章

最新文章