Spring Cloud Nacos 和 Eureka区别,包含实战代码

目录

  • 一、Spring Cloud Eureka详解
  • 二、Spring Cloud Nacos详解
  • 三、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'  
}
  1. 配置 application.yaml
    在 application.yaml 文件中配置 Eureka 服务的相关属性:
server:  port: 8080
eureka:  client:  serviceUrl:  defaultZone: http://localhost:8761/eureka/  
  1. 启动类添加依赖
    在启动类上添加 @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);  }  
}
  1. 服务注册与发现
    在服务提供者中,通过 @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);  }  
}
  1. 自定义 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 都是服务注册和发现框架,但它们在底层架构、服务发现方式、配置管理和支持的编程语言等方面有所不同。在实际应用中,可以根据项目需求和团队熟悉程度选择合适的框架。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.hqwc.cn/news/87887.html

如若内容造成侵权/违法违规/事实不符,请联系编程知识网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

Python工具箱系列(四十一)

使用zip批量压缩文件 前文的代码示例了使用gzip对单个文件进行压缩。本文示例使用更通用的zipfile来批量压缩文件。zipfile也是python内置的库&#xff0c;使用起来非常方便。废话不说&#xff0c;直接上代码示例。 import dbm import glob import zipfile# 保存压缩计划的库名…

电子价签如何让电信门店数字化事半功倍?

数字化转型&#xff0c;高效的工具首先跟上。早在2020年&#xff0c;深圳电信就与云里物里开展商业合作&#xff0c;在深圳所有电信营业厅安装云里物里的ESL电子标签&#xff0c;以替代传统纸质标签的显示。经过几年的效果认证&#xff0c;云里物里的数字化智显设备得到了深圳电…

网页接口导入postman进行接口请求

postman版本&#xff1a;v10.17.4 一、拷贝接口信息 网页打开开发者工具-networkk&#xff0c;在网页上请求一次接口&#xff0c;鼠标指在接口上&#xff0c;点击鼠标右键-copy-copy as cURL(bash) 二、导入postman 打开postman&#xff0c;点击import-Raw text&#xff0c;…

【MCU】SD NAND芯片之国产新选择

文章目录 前言传统SD卡和可贴片SD卡传统SD卡可贴片SD卡 实际使用总结 前言 随着目前时代的快速发展&#xff0c;即使是使用MCU的项目上也经常有大数据存储的需求。可以看到经常有小伙伴这样提问&#xff1a; 大家好&#xff0c;请问有没有SD卡芯片&#xff0c;可以直接焊接到P…

[MyBatis系列⑥]注解开发

&#x1f343;作者简介&#xff1a;准大三本科网络工程专业在读&#xff0c;持续学习Java&#xff0c;努力输出优质文章 ⭐MyBatis系列①&#xff1a;增删改查 ⭐MyBatis系列②&#xff1a;两种Dao开发方式 ⭐MyBatis系列③&#xff1a;动态SQL ⭐MyBatis系列④&#xff1a;核心…

java 桥接模式

桥接模式 桥接模式简介桥接模式的实现总结 桥接模式简介 桥接模式&#xff08;Bridge&#xff09;是将抽象部分与它的实现部分分离&#xff0c;使它们都可以独立地变化。它是一种对象结构型模式&#xff0c;又称为柄体(Handle and Body)模式或接口(Interfce)模式。 桥接模式基于…

C语言 - 结构体、结构体数组、结构体指针和结构体嵌套

结构体的意义 问题&#xff1a;学籍管理需要每个学生的下列数据&#xff1a;学号、姓名、性别、年龄、分数&#xff0c;请用 C 语言程序存储并处理一组学生的学籍。 单个学生学籍的数据结构&#xff1a; 学号&#xff08;num&#xff09;&#xff1a; int 型姓名&#xff08;…

领英采用 Protobuf 进行微服务开发,网络延迟降低60%

领英采用 Protobuf&#xff0c;以实现其各类平台中更为高效的微服务间数据传递&#xff0c;并将其与开源框架 Rest.li 相集成。在全公司范围的推广完成后&#xff0c;领英将延迟降低了 60%的同时&#xff0c;也提高了资源的利用率。 领英平台所采用的是微服务架构&#xff0c;…

ssm+vue理发店会员管理系统源码和论文

ssmvue理发店会员管理系统源码和论文089 开发工具&#xff1a;idea 数据库mysql5.7 数据库链接工具&#xff1a;navcat,小海豚等 技术&#xff1a;ssm 摘 要 网络技术和计算机技术发展至今&#xff0c;已经拥有了深厚的理论基础&#xff0c;并在现实中进行了充分运用&a…

windows下Node版本的切换方式

为了避免应用构建出错&#xff0c;我们在本地开发环境的 Node 版本与在 CI/CD 流程中指定的 Node 版本需保持一致。在这种需要频繁切换 Node 版本的情况下&#xff0c;我们不可能手动卸载又安装不同的版本&#xff0c;这时我们可以借助 NVM 工具来帮助我们快速地切换 Node 版本…

苹果支付外包开发流程

苹果支付的实现流程主要涉及集成苹果的支付系统——Apple Pay&#xff0c;以及在你的应用中处理支付交易。以下是一个简要的实现流程概述&#xff0c;希望对大家有所帮助。北京木奇移动技术有限公司&#xff0c;专业的软件外包开发公司&#xff0c;欢迎交流合作。 1.开发者账号…

合宙Air724UG LuatOS-Air LVGL API控件--进度条 (Bar)

进度条 (Bar) Bar 是进度条&#xff0c;可以用来显示数值&#xff0c;加载进度。 示例代码 – 创建进度条 bar lvgl.bar_create(lvgl.scr_act(), nil) – 设置尺寸 lvgl.obj_set_size(bar, 200, 20); – 设置位置居中 lvgl.obj_align(bar, NULL, lvgl.ALIGN_CENTER, 0, 0) …