谈谈springboot 微服务上下线动态感知

简介: 【10月更文挑战第3天】微服务上下线动态感知是微服务架构中一个非常重要的功能,它允许服务注册中心能够实时地感知到服务的上线和下线,从而确保系统的可用性和负载均衡。

微服务上下线动态感知是微服务架构中一个非常重要的功能,它允许服务注册中心能够实时地感知到服务的上线和下线,从而确保系统的可用性和负载均衡。这个功能通常通过服务注册与发现机制来实现。

底层原理

  1. 服务注册:当一个新的微服务实例启动时,它会向服务注册中心(如Eureka、Consul、Nacos等)注册自己的信息,包括服务名称、IP地址、端口号等。
  2. 服务发现:其他需要调用该服务的微服务实例可以通过服务注册中心查询目标服务的地址信息。
  3. 心跳机制:已注册的服务实例会定期向服务注册中心发送心跳,以表明自己仍然存活。如果注册中心在一定时间内没有收到某个服务实例的心跳,就会认为该实例已经下线,并将其从注册列表中移除。
  4. 事件通知:当服务注册中心感知到服务的上下线变化时,它会通过事件通知机制及时通知订阅了该服务的其他微服务实例,以便它们能够更新自己的本地缓存或重试其他可用的服务实例。

示例代码

下面是一个使用Eureka作为服务注册中心的简单示例,演示如何在Java中实现微服务的上下线动态感知。

1. 引入依赖

首先,在你的Spring Boot项目中引入Eureka的依赖:

xml复制代码
<dependency>
<groupId>org.springframework.cloud</groupId>
<artifactId>spring-cloud-starter-netflix-eureka-client</artifactId>
</dependency>

2. 配置Eureka客户端

application.yml中配置Eureka客户端:

yaml复制代码
spring:
application:
name: demo-service
eureka:
client:
service-url:
defaultZone: http://localhost:8761/eureka/
instance:
prefer-ip-address: true
lease-renewal-interval-in-seconds: 5 # 心跳间隔时间  
lease-expiration-duration-in-seconds: 15 # 服务失效时间

3. 启动类

在启动类上添加@EnableEurekaClient注解,以启用Eureka客户端:

java复制代码
import org.springframework.boot.SpringApplication;  
import org.springframework.boot.autoconfigure.SpringBootApplication;  
import org.springframework.cloud.netflix.eureka.EnableEurekaClient;  
@SpringBootApplication
@EnableEurekaClient
public class DemoServiceApplication {  
public static void main(String[] args) {  
        SpringApplication.run(DemoServiceApplication.class, args);  
    }  
}

4. 控制器

创建一个简单的控制器,用于测试服务是否注册成功:

java复制代码
import org.springframework.web.bind.annotation.GetMapping;  
import org.springframework.web.bind.annotation.RestController;  
@RestController
public class DemoController {  
@GetMapping("/hello")
public String hello() {  
return "Hello from Demo Service!";  
    }  
}

5. Eureka服务器(可选)

如果你没有现成的Eureka服务器,可以简单地创建一个Spring Boot项目,并在其中配置Eureka服务器。在application.yml中配置:

yaml复制代码
server:
port: 8761
eureka:
client:
register-with-eureka: false
fetch-registry: false
spring:
application:
name: eureka-server

在启动类上添加@EnableEurekaServer注解:

java复制代码
import org.springframework.boot.SpringApplication;  
import org.springframework.boot.autoconfigure.SpringBootApplication;  
import org.springframework.cloud.netflix.eureka.server.EnableEurekaServer;  
@SpringBootApplication
@EnableEurekaServer
public class EurekaServerApplication {  
public static void main(String[] args) {  
        SpringApplication.run(EurekaServerApplication.class, args);  
    }  
}

测试

  1. 启动Eureka服务器(如果使用的是自己搭建的Eureka服务器)。
  2. 启动DemoServiceApplication
  3. 访问Eureka控制台(通常是http://localhost:8761),你应该能够看到demo-service已经注册成功。
  4. 访问http://localhost:<port>/hello<port>demo-service的端口),你应该能够看到返回的“Hello from Demo Service!”。

现在,当你启动或停止demo-service实例时,Eureka服务器会实时地感知到这一变化,并更新其注册列表。其他微服务可以通过Eureka服务器查询最新的服务地址信息,从而实现动态的服务发现和调用。

相关文章
|
29天前
|
Kubernetes Java 微服务
微服务上下线动态感知实现的技术解析
随着微服务架构的广泛应用,服务的动态管理和监控变得尤为重要。在微服务架构中,服务的上下线是一个常见的操作,如何实时感知这些变化,确保系统的稳定性和可靠性,成为了一个关键技术挑战。本文将深入探讨微服务上下线动态感知的实现方式,从技术基础、场景案例、解决思路和底层原理等多个维度进行阐述,并分别使用Java和Python进行演示介绍。
62 4
|
Java API Spring
Spring Boot第四弹,一文教你如何无感知切换日志框架?
Spring Boot第四弹,一文教你如何无感知切换日志框架?
|
3月前
|
前端开发 JavaScript Java
基于Java+Springboot+Vue开发的服装商城管理系统
基于Java+Springboot+Vue开发的服装商城管理系统(前后端分离),这是一项为大学生课程设计作业而开发的项目。该系统旨在帮助大学生学习并掌握Java编程技能,同时锻炼他们的项目设计与开发能力。通过学习基于Java的服装商城管理系统项目,大学生可以在实践中学习和提升自己的能力,为以后的职业发展打下坚实基础。
191 2
基于Java+Springboot+Vue开发的服装商城管理系统
|
2月前
|
JavaScript 安全 Java
如何使用 Spring Boot 和 Ant Design Pro Vue 实现动态路由和菜单功能,快速搭建前后端分离的应用框架
本文介绍了如何使用 Spring Boot 和 Ant Design Pro Vue 实现动态路由和菜单功能,快速搭建前后端分离的应用框架。首先,确保开发环境已安装必要的工具,然后创建并配置 Spring Boot 项目,包括添加依赖和配置 Spring Security。接着,创建后端 API 和前端项目,配置动态路由和菜单。最后,运行项目并分享实践心得,包括版本兼容性、安全性、性能调优等方面。
185 1
|
1月前
|
JavaScript 安全 Java
如何使用 Spring Boot 和 Ant Design Pro Vue 构建一个具有动态路由和菜单功能的前后端分离应用。
本文介绍了如何使用 Spring Boot 和 Ant Design Pro Vue 构建一个具有动态路由和菜单功能的前后端分离应用。首先,创建并配置 Spring Boot 项目,实现后端 API;然后,使用 Ant Design Pro Vue 创建前端项目,配置动态路由和菜单。通过具体案例,展示了如何快速搭建高效、易维护的项目框架。
118 62
|
12天前
|
存储 JavaScript 前端开发
基于 SpringBoot 和 Vue 开发校园点餐订餐外卖跑腿Java源码
一个非常实用的校园外卖系统,基于 SpringBoot 和 Vue 的开发。这一系统源于黑马的外卖案例项目 经过站长的进一步改进和优化,提供了更丰富的功能和更高的可用性。 这个项目的架构设计非常有趣。虽然它采用了SpringBoot和Vue的组合,但并不是一个完全分离的项目。 前端视图通过JS的方式引入了Vue和Element UI,既能利用Vue的快速开发优势,
71 13
|
20天前
|
JavaScript 安全 Java
java版药品不良反应智能监测系统源码,采用SpringBoot、Vue、MySQL技术开发
基于B/S架构,采用Java、SpringBoot、Vue、MySQL等技术自主研发的ADR智能监测系统,适用于三甲医院,支持二次开发。该系统能自动监测全院患者药物不良反应,通过移动端和PC端实时反馈,提升用药安全。系统涵盖规则管理、监测报告、系统管理三大模块,确保精准、高效地处理ADR事件。
|
1月前
|
JavaScript 安全 Java
如何使用 Spring Boot 和 Ant Design Pro Vue 构建一个前后端分离的应用框架,实现动态路由和菜单功能
本文介绍了如何使用 Spring Boot 和 Ant Design Pro Vue 构建一个前后端分离的应用框架,实现动态路由和菜单功能。首先,确保开发环境已安装必要的工具,然后创建并配置 Spring Boot 项目,包括添加依赖和配置 Spring Security。接着,创建后端 API 和前端项目,配置动态路由和菜单。最后,运行项目并分享实践心得,帮助开发者提高开发效率和应用的可维护性。
92 2
|
1月前
|
JavaScript Java 项目管理
Java毕设学习 基于SpringBoot + Vue 的医院管理系统 持续给大家寻找Java毕设学习项目(附源码)
基于SpringBoot + Vue的医院管理系统,涵盖医院、患者、挂号、药物、检查、病床、排班管理和数据分析等功能。开发工具为IDEA和HBuilder X,环境需配置jdk8、Node.js14、MySQL8。文末提供源码下载链接。
|
3月前
|
前端开发 JavaScript Java
基于Java+Springboot+Vue开发的大学竞赛报名管理系统
基于Java+Springboot+Vue开发的大学竞赛报名管理系统(前后端分离),这是一项为大学生课程设计作业而开发的项目。该系统旨在帮助大学生学习并掌握Java编程技能,同时锻炼他们的项目设计与开发能力。通过学习基于Java的大学竞赛报名管理系统项目,大学生可以在实践中学习和提升自己的能力,为以后的职业发展打下坚实基础。
239 3
基于Java+Springboot+Vue开发的大学竞赛报名管理系统