Spring Cloud Nacos 和 Eureka区别解析

 更新时间:2023年08月30日 10:54:17   作者:Web3&Basketball  
Spring Cloud Nacos 和 Spring Cloud Eureka 都是 Spring Cloud 微服务框架中的服务注册和发现组件,用于帮助开发者轻松地构建和管理微服务应用,这篇文章主要介绍了Spring Cloud Nacos 和 Eureka区别,需要的朋友可以参考下

Spring Cloud Nacos 和 Spring Cloud Eureka 都是 Spring Cloud 微服务框架中的服务注册和发现组件,用于帮助开发者轻松地构建和管理微服务应用。它们之间的主要区别在于底层架构、服务发现方式、配置管理和支持的编程语言等方面。

一、Spring Cloud Eureka详解

Spring Cloud Eureka 是基于 Netflix Eureka 的二次封装,用于实现微服务实例自动化注册与发现。它主要负责完成微服务架构中的服务治理功能。以下是 Spring Cloud Eureka 的详解,包括代码示例。

1.添加依赖

在项目的 build.gradle 文件中添加 Spring Cloud Eureka 依赖:

dependencies {  
   implementation 'org.springframework.cloud:spring-cloud-starter-eureka'  
}

2.配置 application.yaml

在 application.yaml 文件中配置 Eureka 服务的相关属性:

server:  
 port: 8080
eureka:  
 client:  
   serviceUrl:  
     defaultZone: http://localhost:8761/eureka/  

3.启动类添加依赖

在启动类上添加 @EnableDiscoveryClient 注解,以启用 Eureka 服务发现功能:

import org.springframework.cloud.client.discovery.EnableDiscoveryClient;  
import org.springframework.boot.SpringApplication;  
import org.springframework.boot.autoconfigure.SpringBootApplication;
@SpringBootApplication  
@EnableDiscoveryClient  
public class EurekaDemoApplication {  
   public static void main(String[] args) {  
       SpringApplication.run(EurekaDemoApplication.class, args);  
   }  
}

4.服务注册与发现

在服务提供者中,通过 @EnableEurekaServer 注解启用 Eureka 服务注册功能,并在启动类上添加 @Value 注解配置 Eureka 服务端口号:

import org.springframework.cloud.netflix.eureka.server.EnableEurekaServer;  
import org.springframework.boot.SpringApplication;  
import org.springframework.boot.autoconfigure.SpringBootApplication;
@SpringBootApplication  
@EnableEurekaServer(port = 8761)  
public class EurekaServerApplication {  
   public static void main(String[] args) {  
       SpringApplication.run(EurekaServerApplication.class, args);  
   }  
}

在服务消费者中,通过 @RestController 和 @RequestMapping 注解暴露一个 REST 接口,并在 @Value 注解中配置 Eureka 服务端口号。同时,使用 RestTemplate 调用其他服务:

import org.springframework.cloud.client.discovery.EnableDiscoveryClient;  
import org.springframework.web.bind.annotation.GetMapping;  
import org.springframework.web.bind.annotation.RestController;  
import org.springframework.boot.SpringApplication;  
import org.springframework.boot.autoconfigure.SpringBootApplication;
@SpringBootApplication  
@RestController  
@EnableDiscoveryClient  
public class EurekaClientApplication {
   @Value("${eureka.client.serviceUrl.defaultZone}")  
   private String defaultZone;
   @GetMapping("/hi")  
   public String home(@RequestParam String name) {  
       String url = defaultZone + "/eureka-client/hello";  
       RestTemplate restTemplate = new RestTemplate();  
       return restTemplate.getForObject(url, String.class, name);  
   }
   public static void main(String[] args) {  
       SpringApplication.run(EurekaClientApplication.class, args);  
   }  
}

5.自定义 Eureka 界面

  • 可以通过修改 Spring Cloud Eureka 的默认界面来实现自定义界面。在 src/main/resources/static 目录下,找到 eureka-dashboard.html 文件,将其复制到项目中的静态资源目录,并进行相应的修改。
  • 综上所述,Spring Cloud Eureka 是一个用于实现微服务实例自动化注册与发现的服务治理组件。通过在项目中添加依赖、配置 application.yaml、启动类添加依赖、服务注册与发现以及自定义 Eureka 界面,可以实现 Spring Cloud Eureka 的基本功能。

二、Spring Cloud Nacos详解

可以参考之前写的文章:https://python-basketball.blog.csdn.net/article/details/132506054?spm=1001.2014.3001.5502

三、Spring Cloud Nacos和Eureka区别

1.底层架构:
Nacos 是一个全新的轻量级动态服务发现、配置管理和服务管理的平台,基于阿里巴巴自研的 Nacos 技术。
Eureka 是 Netflix 开源的一个服务注册和发现框架,基于 RESTful API 进行服务之间的通信。
2.服务发现方式:
Nacos 使用 DNS 方式进行服务发现,将服务注册信息存储在 DNS 服务器中,使得服务发现更加高效和可靠。
Eureka 则使用 HTTP 协议进行服务发现,需要通过请求 Eureka 服务端来获取服务注册信息。
3.配置管理:
Nacos 支持配置的动态管理,可以实现配置的修改和更新,同时支持配置的版本控制。
Eureka 不支持配置的动态管理,需要通过人工的方式进行配置的修改和更新。
4.支持的编程语言:
Nacos 支持多种编程语言,包括 Java、Python、Go、Node.js 等。
Eureka 仅支持 Java 语言。
下面是一个简单的示例来展示如何使用 Spring Cloud Nacos 和 Spring Cloud Eureka:
Nacos
首先,需要在项目中引入 Nacos 的依赖:

<dependency>  
   <groupId>com.alibaba.cloud</groupId>  
   <artifactId>spring-cloud-starter-alibaba-nacos-discovery</artifactId>  
</dependency>  
<dependency>  
   <groupId>com.alibaba.cloud</groupId>  
   <artifactId>spring-cloud-starter-alibaba-nacos-config</artifactId>  
</dependency>  

然后,在启动类上添加 @EnableDiscoveryClient @NacosPropertySource 注解:

import com.alibaba.cloud.spring.boot.context.annotation.config.NacosPropertySource;  
import com.alibaba.cloud.spring.boot.context.annotation.EnableDiscoveryClient;  
import org.springframework.boot.SpringApplication;  
import org.springframework.boot.autoconfigure.SpringBootApplication;
@SpringBootApplication  
@EnableDiscoveryClient  
@NacosPropertySource(dataId = "your-data-id", autoRefreshed = true)  
public class NacosDemoApplication {  
   public static void main(String[] args) {  
       SpringApplication.run(NacosDemoApplication.class, args);  
   }  
}

Eureka

首先,需要在项目中引入 Eureka 的依赖:

<dependency>  
   <groupId>com.netflix</groupId>  
   <artifactId>eureka-client</artifactId>  
</dependency>  

然后,在启动类上添加 @EnableDiscoveryClient 注解,并配置 Eureka 服务端地址:

import org.springframework.cloud.client.discovery.EnableDiscoveryClient;  
import org.springframework.boot.SpringApplication;  
import org.springframework.boot.autoconfigure.SpringBootApplication;
@SpringBootApplication  
@EnableDiscoveryClient(eurekaServerUrl = "http://localhost:8761/eureka/")  
public class EurekaDemoApplication {  
   public static void main(String[] args) {  
       SpringApplication.run(EurekaDemoApplication.class, args);  
   }  
}

综上所述,Spring Cloud Nacos 和 Spring Cloud Eureka 都是服务注册和发现框架,但它们在底层架构、服务发现方式、配置管理和支持的编程语言等方面有所不同。在实际应用中,可以根据项目需求和团队熟悉程度选择合适的框架。

到此这篇关于Spring Cloud Nacos 和 Eureka区别的文章就介绍到这了,更多相关Spring Cloud Nacos 和 Eureka内容请搜索脚本之家以前的文章或继续浏览下面的相关文章希望大家以后多多支持脚本之家!

相关文章

  • 解决Nacos集群启动失败:java版本问题

    解决Nacos集群启动失败:java版本问题

    这篇文章主要介绍了解决Nacos集群启动失败:java版本问题,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教
    2024-06-06
  • 如何利用反射生成 MyBatisPlus中QueryWrapper动态条件

    如何利用反射生成 MyBatisPlus中QueryWrapper动态条件

    这篇文章主要介绍了如何利用反射生成 MyBatisPlus中QueryWrapper动态条件,分享在MyBatisPlus中经常会用到代码来构造查询条件等内容,需要的小伙伴可以参考一下
    2022-02-02
  • SpringBoot中的RestTemplate使用方法详解

    SpringBoot中的RestTemplate使用方法详解

    这篇文章主要介绍了SpringBoot中的RestTemplate使用方法详解,为了方便使用,这里我封装成一个工具类来静态调用RestTemplate,基于SpringBoot2.4.2版本,需要的朋友可以参考下
    2024-01-01
  • Spring整合MyBatis的三种方式

    Spring整合MyBatis的三种方式

    这篇文章主要介绍了Spring整合MyBatis的三种方式,本文给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价值,需要的朋友可以参考下
    2021-01-01
  • Java switch()括号内参数的类型要求详解

    Java switch()括号内参数的类型要求详解

    这篇文章主要介绍了Java switch()括号内参数的类型要求,具有很好的参考价值,希望对大家有所帮助。如有错误或未考虑完全的地方,望不吝赐教
    2021-10-10
  • Java的非阻塞队列ConcurrentLinkedQueue解读

    Java的非阻塞队列ConcurrentLinkedQueue解读

    这篇文章主要介绍了Java的非阻塞队列ConcurrentLinkedQueue解读,在并发编程中,有时候需要使用线程安全的队列,如果要实现一个线程安全的队列有两种方式:一种是使用阻塞算法,另一种是使用非阻塞算法,需要的朋友可以参考下
    2023-12-12
  • IDEA未配置SQL方言:无法使用SQL提示解决方法

    IDEA未配置SQL方言:无法使用SQL提示解决方法

    在使用IDEA进行SQL开发时,如果未配置SQL方言可能会导致一些问题,如无法正确识别数据库中的关键字、数据类型等,这篇文章主要给大家介绍了关于IDEA未配置SQL方言,无法使用SQL提示解决方法的相关资料,需要的朋友可以参考下
    2024-07-07
  • intellij idea设置统一JavaDoc模板的方法详解

    intellij idea设置统一JavaDoc模板的方法详解

    这篇文章主要介绍了intellij idea设置统一JavaDoc模板的方法详解,本文通过图文并茂的形式给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价值,需要的朋友可以参考下
    2021-04-04
  • java中文及特殊字符的校验方法

    java中文及特殊字符的校验方法

    这篇文章主要为大家详细介绍了java中文及特殊字符的校验方法,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2017-09-09
  • java使用定时器实现监听数据变化

    java使用定时器实现监听数据变化

    这篇文章主要为大家详细介绍了Java如何使用定时器监听数据变化,当满足某个条件时(例如没有数据更新)自动执行某项任务,有兴趣的可以了解下
    2023-11-11

最新评论