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.rhkb.cn/news/110444.html

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

相关文章

pytestx容器化执行引擎

系统架构 前端、后端、pytest均以Docker容器运行服务&#xff0c;单独的容器化执行引擎&#xff0c;项目环境隔离&#xff0c;即用即取&#xff0c;用完即齐&#xff0c;简单&#xff0c;高效。 前端容器&#xff1a;页面交互&#xff0c;请求后端&#xff0c;展示HTML报告 后…

RHCE——十一、NFS服务器

NFS服务器 一、简介1、NFS背景介绍2、生产应用场景 二、NFS工作原理1、示例图2、流程 三、NFS的使用1、安装2、配置文件3、主配置文件分析3.1 实验1 4、NFS账户映射4.1 实验24.2 实验3 四、autofs自动挂载服务1、产生原因2、安装3、配置文件分析4、实验45、实验5 一、简介 1、…

归一化的作用,sklearn 安装

目录 归一化的作用&#xff1a; 应用场景说明 sklearn 准备工作 sklearn 安装 sklearn 上手 线性回归实战 归一化的作用&#xff1a; 归一化后加快了梯度下降求最优解的速度; 归一化有可能提高精度(如KNN) 应用场景说明 1&#xff09;概率模型不需要归一化&#xff…

FusionAD:用于自动驾驶预测和规划任务的多模态融合

论文背景 自动驾驶&#xff08;AD&#xff09;任务通常分为感知、预测和规划。在传统范式中&#xff0c;AD中的每个学习模块分别使用自己的主干&#xff0c;独立地学习任务。 以前&#xff0c;基于端到端学习的方法通常基于透视视图相机和激光雷达信息直接输出控制命令或轨迹…

基于Spring实现博客项目

访问地址:用户登录 代码获取:基于Spring实现博客项目: Spring项目写博客项目 一.项目开发 1.项目开发阶段 需求评审,需求分析项目设计(接口设计,DB设计等&#xff0c;比较大的需求,需要设计流程图&#xff0c;用例图,UML, model中的字段)开发&#xff0b;自测提测(提交测试…

深入浅出SSD:固态存储核心技术、原理与实战(文末赠书)

名字&#xff1a;阿玥的小东东 学习&#xff1a;Python、C/C 主页链接&#xff1a;阿玥的小东东的博客_CSDN博客-python&&c高级知识,过年必备,C/C知识讲解领域博主 目录 内容简介 作者简介 使用Python做一个计算器 本期赠书 近年来国家大力支持半导体行业&#xff0…

计算机视觉与人工智能在医美人脸皮肤诊断方面的应用

一、人脸皮肤诊断方法 近年来&#xff0c;随着计算机技术和人工智能的不断发展&#xff0c;中医领域开始逐渐探索利用这些先进技术来辅助面诊和诊断。在皮肤望诊方面&#xff0c;也出现了一些现代研究&#xff0c;尝试通过图像分析技术和人工智能算法来客观化地获取皮肤相关的…

循环购商业模式:提升复购率与用户价值的创新策略-微三云门门

亲爱的企业家们&#xff0c;我是微三云门门&#xff01;今天&#xff0c;我将为大家详细介绍一种颠覆性的商业模式&#xff1a;循环购商业模式。这个模式不仅可以帮助企业提升平台的复购率&#xff0c;还能够拉新用户并提升用户的消费率。让我们一起深入了解这个引人注目的商业…

Ubuntu 下安装Qt5.12.12无法输入中文解决方法

Ubuntu 下安装Qt5.12.12无法输入中文解决方法 一&#xff0c;环境&#xff1a; &#xff08;1&#xff09;VMware Workstation 15 Pro &#xff08;2&#xff09;Ubuntu 20.04 &#xff08;3&#xff09;Qt 5.12.12 64bits &#xff08;4&#xff09;Qt Creator 5.0.2 &#…

Hadoop Yarn 核心调优参数

文章目录 测试集群环境说明Yarn 核心配置参数1. 调度器选择2. ResourceManager 调度器处理线程数量设置3. 是否启用节点功能的自动检测设置4. 是否将逻辑处理器当作物理核心处理器5. 设置物理核心到虚拟核心的转换乘数6. 设置 NodeManager 使用的内存量7. 设置 NodeManager 节点…

ant-vue1.78版a-auto-complete表单自动搜索返回列表中的关键字标红

a-auto-complete表单自动搜索返回列表中的关键字标红 通常在做关键字标红的场景&#xff0c;都是后端返回html结构&#xff0c;前端直接渲染实现&#xff0c;但是如果需要前端处理的话&#xff0c;实现也是很简单的&#xff0c;接下来我直接上应用场景吧 应用场景就是通过关键…

GaussDB技术解读系列:高级压缩之OLTP表压缩

8月16日&#xff0c;第14届中国数据库技术大会&#xff08;DTCC2023&#xff09;在北京国际会议中心顺利举行。在GaussDB“五高两易”核心技术&#xff0c;给世界一个更优选择的专场&#xff0c;华为云数据库GaussDB首席架构师冯柯对华为云GaussDB数据库的高级压缩技术进行了详…

centos7搭建apache作为文件站后,其他人无法访问解决办法

在公司内网的一个虚拟机上搭建了httpsd服务&#xff0c;准备作为内部小伙伴们的文件站&#xff0c;但是搭建好之后发现别的小伙伴是无法访问我机器的。 于是寻找一下原因&#xff0c;排查步骤如下&#xff1a; 1.netstat -lnp 和 ps aux 先看下端口和 服务情况 发现均正常 2.…

淘宝商品数据采集(如何快速获取淘宝商品信息),淘宝API接口申请指南

淘宝作为国内的电商平台&#xff0c;拥有海量的商品信息。对于想要进行淘宝商品数据采集的人来说&#xff0c;如何快速获取淘宝商品信息是一个重要的问题。本文将介绍一些快速获取淘宝商品信息的方法。 1. 使用淘宝开放平台PI 淘宝开放平台提供了多种PI接口&#xff0c;可以通…

【微服务部署】01-Kubernetes部署流程

文章目录 部署1. Kubernetes是什么2. Kubernetes的优势3. 环境搭建4. 应用部署 部署 1. Kubernetes是什么 Kubernetes是一个用于自动部署、扩展和管理容器化应用程序的开源系统 2. Kubernetes的优势 自动化容器部署资源管理与容器调度服务注册发现与负载均衡内置配置与秘钥…

【java】【springboot】【idea】springboot项目pom.xml 灰色下划线

解决方案&#xff1a; 这里我们找到了原因&#xff0c;就是因为选择了Ignored Files导致pom.xml文件被设置在maven忽略文件清单中&#xff0c;所以我们将打勾的选项取消&#xff0c;点击Apply,然后点击OK

一文解析:共享WiFi项目到底怎么样呢?

大家都知道&#xff0c;现代社会已经离不开互联网的便利&#xff0c;而WiFi的普及更是提升了人们的生活质量和工作效率。然而&#xff0c;面对庞大的用户群体和不断增长的网络需求&#xff0c;无论人们到哪都是习惯性的连接上wifi。而共享WiFi的出现&#xff0c;正是满足了大众…

Linux基础(一)

1.操作系统概念 人与计算机交流的中介 管理和控制计算机中硬件和软件资源 处于上层应用程序和底层硬件之间的软件平台 2.操作系统组成 内核&#xff1a;直接控制管理硬件 内核直接识别计算机二进制语言 解释器&#xff1a;把c c java python等语言解释成二进制&#xff…

Leetcode每日一题:1267. 统计参与通信的服务器(2023.8.24 C++)

目录 1267. 统计参与通信的服务器 题目描述&#xff1a; 实现代码与解析&#xff1a; 写法一&#xff1a;两次遍历 hash 原理思路&#xff1a; 写法二&#xff1a;三次遍历 原理思路&#xff1a; 1267. 统计参与通信的服务器 题目描述&#xff1a; 这里有一幅服务器分…

215. 数组中的第K个最大元素

题目描述 给定整数数组 nums 和整数 k&#xff0c;请返回数组中第 **k** 个最大的元素。 请注意&#xff0c;你需要找的是数组排序后的第 k 个最大的元素&#xff0c;而不是第 k 个不同的元素。 你必须设计并实现时间复杂度为 O(n) 的算法解决此问题。 示例 1: 输入: [3,2…