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

简介: 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,主要解决服务注册中心的问题。在大数据里面,有同类型的产品ZooKeeper,Spring 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。 

相关文章
|
人工智能 运维 Java
Spring AI Alibaba Admin 开源!以数据为中心的 Agent 开发平台
Spring AI Alibaba Admin 正式发布!一站式实现 Prompt 管理、动态热更新、评测集构建、自动化评估与全链路可观测,助力企业高效构建可信赖的 AI Agent 应用。开源共建,现已上线!
9165 132
|
监控 Java API
Spring Boot 3.2 结合 Spring Cloud 微服务架构实操指南 现代分布式应用系统构建实战教程
Spring Boot 3.2 + Spring Cloud 2023.0 微服务架构实践摘要 本文基于Spring Boot 3.2.5和Spring Cloud 2023.0.1最新稳定版本,演示现代微服务架构的构建过程。主要内容包括: 技术栈选择:采用Spring Cloud Netflix Eureka 4.1.0作为服务注册中心,Resilience4j 2.1.0替代Hystrix实现熔断机制,配合OpenFeign和Gateway等组件。 核心实操步骤: 搭建Eureka注册中心服务 构建商品
1727 3
|
JavaScript 前端开发 Java
垃圾分类管理系统基于 Spring Boot Vue 3 微服务架构实操指南
本文介绍了基于Java技术的垃圾分类管理系统开发方案与实施案例。系统采用前后端分离架构,后端使用Spring Boot框架搭配MySQL数据库,前端可选择Vue.js或Java Swing实现。核心功能模块包括垃圾分类查询、科普教育、回收预约等。文中提供了两个典型应用案例:彭湖花园小区使用的Swing桌面系统和基于Spring Boot+Vue的城市管理系统,分别满足不同场景需求。最新技术方案升级为微服务架构,整合Spring Cloud、Redis、Elasticsearch等技术,并采用Docker容器
809 1
|
前端开发 Java API
利用 Spring WebFlux 技术打造高效非阻塞 API 的完整开发方案与实践技巧
本文介绍了如何使用Spring WebFlux构建高效、可扩展的非阻塞API,涵盖响应式编程核心概念、技术方案设计及具体实现示例,适用于高并发场景下的API开发。
876 0
|
安全 前端开发 Java
《深入理解Spring》:现代Java开发的核心框架
Spring自2003年诞生以来,已成为Java企业级开发的基石,凭借IoC、AOP、声明式编程等核心特性,极大简化了开发复杂度。本系列将深入解析Spring框架核心原理及Spring Boot、Cloud、Security等生态组件,助力开发者构建高效、可扩展的应用体系。(238字)
|
监控 Cloud Native Java
Spring Boot 3.x 微服务架构实战指南
🌟蒋星熠Jaxonic,技术宇宙中的星际旅人。深耕Spring Boot 3.x与微服务架构,探索云原生、性能优化与高可用系统设计。以代码为笔,在二进制星河中谱写极客诗篇。关注我,共赴技术星辰大海!(238字)
1670 2
Spring Boot 3.x 微服务架构实战指南
|
Java 数据库 数据安全/隐私保护
Spring Boot四层架构深度解析
本文详解Spring Boot四层架构(Controller-Service-DAO-Database)的核心思想与实战应用,涵盖职责划分、代码结构、依赖注入、事务管理及常见问题解决方案,助力构建高内聚、低耦合的企业级应用。
2123 1