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

本文涉及的产品
注册配置 MSE Nacos/ZooKeeper,118元/月
云原生网关 MSE Higress,422元/月
服务治理 MSE Sentinel/OpenSergo,Agent数量 不受限
简介: Spring Cloud微服务架构设计与开发实战课时3.2—Spring Cloud微服务注册与发现 。Java Spring Cloud是全球范围内最成熟、最完善、最流行的微服务架构方案体系。被众多的互联网大公司采用,包括阿里巴巴、腾讯、支付宝、网易、IBM、谷歌、京东、百度、滴滴等。电子书+视频为同学带来最佳学习效果,文字、课程链接、图谱地址统统为大家放送了哦!

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

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

课程名称:Spring Cloud微服务注册与发现

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

图谱名称:Alibaba Java 技术图谱

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


Spring Cloud微服务注册与发现 


一、Spring Cloud服务注册与发现 

对于微服务务需要先进行拆分,微服务实例部署数量不固定,可以弹性伸缩,与传统架构不一样,比较靠拢云计算、云原生。 

(一)服务注册与发现 

解决大规模服务集群的注册和发现问题主要为了方便客户端调用。比如开发一个微服务是订单服务,开始只启用一台服务器,客户端和客户端直接调用微服务就可以了。但如果启用两台以上客户端直接写服务的IP地址做轮巡是不行的,因为如果遇到类似双11促销场,需要增加很多台服务,且是弹性不定数量增加,这时候最好有一种方案能够解决这个问题,把客户端和服务集群 

里面很重要的就是注册中心,注册中心可以帮助管理服务,当只有一个两个服务的时候,客户端可以直接和服务建立连接,当服务数量不固定,且伸缩范围很大时,需要一个专门的机构帮管理这些服务。 

服务注册与发现总结: 

1. 大规模微服务集群架构 

2. 许多服务实例 

3. 客户端要找到自己调用的服务 

4. 新服务上线 

5. 某个服务机,下线 

6. 实时监控服务的状态 

image.png 

 

(二)Spring Cloud Eureka服务发现与注册 

微服务架构体系里 Netflix公司贡献了其中一个很重要的项目叫Eureka主要解决服务注册中心的问题。在大数据里面同类型的产品ZooKeeperSpring Cloud通过扩展组件可以进行集成。 

本节课主要讲实战开发,建立注册中心以后,怎么样把微服务注册进去怎么让注册中心服务。总结: 

1. Netflix公司开源的项目 

2. Eureka:注册中心 

3. 一个基于 REST 的中心服务,管理服务, 

4. 实现云端的服务注册和服务发现。 

5. Eureka组件组成:Eureka服务器和Eureka客户端 

6. 竞争对手ZooKeeper 

7. 服务发现模块(Eureka)是Netflix的核心 

8. Spring Cloud Netflix提供的简化开发模板 

9. 直接使用spring boot,创建项目 

10. 添加 @ EnableEurekaServer开发注册服务中心 

()Spring Cloud 架构图 

下图所示微服务架构图,注册中心,客户端微服务上线注册微服务实数量是动态的,有可能是一台,也有可能是很多台灵活弹性根据客户端的压力做弹性伸缩。 

客户端调用时直接找微服务先找注册中心,有哪些好的微服务,有哪些匹配的每次搜索最新的报表然后调用。客户端也可以按照各种负载均衡的策略去调,或者结合一些负责运行的算法灵活调度。 

image.png 

 

二、Eureka注册中心开发实战 

(一)Spring Eureka注册中心 

1. 创建Eureka服务注册中心项目;  

2. 添加@ EnableEurekaServer;  

3. 将spring boot应用改造成Eureka服务注册中心; 

4. application.properties增加配置;  

5. 打包项目;  

6. 运行;  

7. 测试页面;  

8. 参考https://spring.io/guides/gs/service-registration-and-discovery/ 

image.png 

 

(二)application.properties配置 

 server.port=8761 

 eureka.client.register-with-eureka=false 

 eureka.client.fetch-registry=false 

 eureka.client.serviceUrl.defaultZone=http://localhost:${ser 

ver.port}/eureka/ 

 logging.level.com.netflix.eureka=OFF 

 logging.level.com.netflix.discovery=OFF 

(三)创建Spring Eureka服务项目 

演示部分: 

下图所示,是正常运行界面。 

image.png 

这里还没有服务实下面演示开发微服务,把微服务注册进来打开Eclipse开发工具,新建项目插件里面会有New Spring Sttarter Project模板,Name 栏加入Eureka,下面直接配公司的域名就行Group 栏输入com.alibaba,点击下一步,如下图所示: 

image.png 

Available栏输入Eureka,加入注册中心服务端,为了开发调试再加入dev,用于加载动态调试工具,做动态调试服务。演示版本是2.4.1,再下一步: 

image.png 

下一步 

image.png 

这里面会生成项目,Maven会自动来去拉包,第一次拉包时间比较久,网络好应该会快一点Maven仓库改成阿里或其他公司,国内应该有很多Maven仓库镜像。 

先来改配置文件,这里关键是加注解,启用EurekaServer, EurekaServer自动跟进配置,制作在某个端口上,包括注册中心的界面,会提供注册地址,在之前的例子上是提供Rest API, 供客户端注册。 

第一步是,启动@ EnableEurekaServer,使服务器具备注册中心的能力,这一步非常重要。 

image.png 

 

接下配一下配置文件,配置文件有几个核心参数,程序名和端口,程序名输入EurekaServer端口不配的话就是默认的8080,因为官方例子是8761,我们也配置8761。还需要配置Eureka的注册客户端,如下图所示:“http://localhost:8761/eureka注册中心的地址,给客户端注册和查找用的 

image.png 

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

image.png 

 

启动成功之后,打开浏览器,输入http://localhost:8761回车,出现Eureka注册中心的界面。里面一有个服务实例,这个实例默认没有关掉,自己可以往自己中心的注册,正常并不需要,自己往自己中心的注册实际是多余的。在比较底的版本会显示出错。 

image.png 

 

可以配置关闭上面的服务实例,输入“eureka.client.fetch-registry=false”,“eureka.client.register-with-eurka=falsr”。 

image.png 

重新加载后,打开eureka界面,可以看到,自己往自己中心注册的实例就没有了。 

image.png 

 

三、Eureka底层原理与源码分析 

(一)Netflix Eureka源码 

•Eureka 官方源码 

https://github.com/Netflix/eureka 

•Spring Cloud Netflix 适配 Eureka 的代码 

https://github.com/spring-cloud/spring-cloud-netflix 

(二)Eureka源码分析 

Eureka通信基于Http(s)协议的框架 

1. 纯正的 servlet 应用,需构建成war包部署 

2. 使用了 框架实现自身的 HTTP接口 

3. peer之间的同步与服务的注册全部通过 HTTP 协议实现 

4. 定时任务(发送 、定时清理过期服务、节点同步等)通过 JDK 自带的 Timer 实现 

5. 内存缓存使用Google的 包实现 

(三)服务实例Instance的状态 

1. Up 

2. Down 

3. Starting 

4. Out_Of_Service 

5. Unknown 

相关文章
|
1月前
|
Java 开发者 微服务
从单体到微服务:如何借助 Spring Cloud 实现架构转型
**Spring Cloud** 是一套基于 Spring 框架的**微服务架构解决方案**,它提供了一系列的工具和组件,帮助开发者快速构建分布式系统,尤其是微服务架构。
165 69
从单体到微服务:如何借助 Spring Cloud 实现架构转型
|
3月前
|
Java API 数据库
构建RESTful API已经成为现代Web开发的标准做法之一。Spring Boot框架因其简洁的配置、快速的启动特性及丰富的功能集而备受开发者青睐。
【10月更文挑战第11天】本文介绍如何使用Spring Boot构建在线图书管理系统的RESTful API。通过创建Spring Boot项目,定义`Book`实体类、`BookRepository`接口和`BookService`服务类,最后实现`BookController`控制器来处理HTTP请求,展示了从基础环境搭建到API测试的完整过程。
63 4
|
14天前
|
人工智能 前端开发 Java
Spring AI Alibaba + 通义千问,开发AI应用如此简单!!!
本文介绍了如何使用Spring AI Alibaba开发一个简单的AI对话应用。通过引入`spring-ai-alibaba-starter`依赖和配置API密钥,结合Spring Boot项目,只需几行代码即可实现与AI模型的交互。具体步骤包括创建Spring Boot项目、编写Controller处理对话请求以及前端页面展示对话内容。此外,文章还介绍了如何通过添加对话记忆功能,使AI能够理解上下文并进行连贯对话。最后,总结了Spring AI为Java开发者带来的便利,简化了AI应用的开发流程。
223 0
|
20天前
|
XML JSON Java
Spring Boot 开发中常见的错误
本文总结了 Java 开发中常见的几个问题及其改进方法,包括:1. 过度使用 `@Component` 注解;2. `@ResponseBody` 注解的错误用法;3. `@Autowired` 的不当使用;4. `application.properties` 管理不善;5. 异常处理不当。每部分详细解释了错误情况和建议的改进方案,并提供了相应的代码示例。
47 11
|
21天前
|
IDE Java 测试技术
互联网应用主流框架整合之Spring Boot开发
通过本文的介绍,我们详细探讨了Spring Boot开发的核心概念和实践方法,包括项目结构、数据访问层、服务层、控制层、配置管理、单元测试以及部署与运行。Spring Boot通过简化配置和强大的生态系统,使得互联网应用的开发更加高效和可靠。希望本文能够帮助开发者快速掌握Spring Boot,并在实际项目中灵活应用。
38 5
|
19天前
|
前端开发 Java 开发者
这款免费 IDEA 插件让你开发 Spring 程序更简单
Feign-Helper 是一款支持 Spring 框架的 IDEA 免费插件,提供 URL 快速搜索、Spring Web Controller 路径一键复制及 Feign 与 Controller 接口互相导航等功能,极大提升了开发效率。
|
1月前
|
负载均衡 Java 开发者
深入探索Spring Cloud与Spring Boot:构建微服务架构的实践经验
深入探索Spring Cloud与Spring Boot:构建微服务架构的实践经验
137 5
|
2月前
|
前端开发 JavaScript Java
如何使用 Spring Boot 和 Angular 开发全栈应用程序:全面指南
如何使用 Spring Boot 和 Angular 开发全栈应用程序:全面指南
51 1
|
26天前
|
XML Java 数据格式
Spring Boot 开发中的常见失误
本文深入分析了Spring Boot开发中常见的失误,包括不当使用@Component、@ResponseBody、@Autowired注解,以及不良的异常处理和日志记录实践,提供了有效的规避策略,帮助开发者提升代码质量和系统性能。
|
2月前
|
存储 运维 安全
Spring运维之boot项目多环境(yaml 多文件 proerties)及分组管理与开发控制
通过以上措施,可以保证Spring Boot项目的配置管理在专业水准上,并且易于维护和管理,符合搜索引擎收录标准。
52 2