# 从浅入深 学习 SpringCloud 微服务架构(三)注册中心 Eureka(1)

news/2024/12/4 17:59:16/

Eureka1_0">从浅入深 学习 SpringCloud 微服务架构(三)注册中心 Eureka(1)

段子手168

1、微服务的注册中心

注册中心可以说是微服务架构中的”通讯录”,它记录了服务和服务地址的映射关系。
在分布式架构中服务会注册到这里,当服务需要调用其它服务时,就这里找到服务的地址,进行调用。

在这里插入图片描述

2、注册中心的主要作用

服务注册中心(下称注册中心)是微服务架构非常重要的一个组件,在微服务架构里主要起到了协调者的一个作用。注册中心一般包含如下几个功能:

1)服务发现:

服务注册/反注册:保存服务提供者和服务调用者信息。
服务订阅/取消订阅:服务调用者订阅服务提供者的信息,最好有实时推送的功能。
服务路由(可选):具有筛选整合服务提供者的能力。

2)服务配置:

配置订阅:服务提供者和服务调用者订阅微服务相关的配置。
配置下发:主动将配置推送给服务提供者和服务调用者。

3)服务健康检测:

检测服务提供者的健康情况。

Eureka_Consul_Nacos_33">3、常见的注册中心:Zookeeper, Eureka, Consul, Nacos。

1)Zookeeper

zookeeper 它是一个分布式服务框架,是 Apache Hadoop 的一个子项目,
它主要是用来解决分布式应用中经常遇到的一些数据管理问题,
如:统一命名服务、状态同步服务、集群管理、分布式应用配置项的管理等。
简单来说 zookeeper= 文件系统+监听通知机制。

2)Eureka

Eureka 是在java语言上,基于 Restful Api 开发的服务注册与发现组件,
Springcloud Netflix 中的重要组件。

3)Consul

Consul 是由 Hashicorp 基于Go 语言开发的支持多数据中心分布式高可用的服务发布和注册服务软件,
采用 Raft 算法保证服务的一致性,且支持健康检查。

4)Nacos

Nacos 是一个更易于构建云原生应用的动态服务发现、配置管理和服务管理平台。
简单来说 Nacos 就是注册中心+配置中心的组合,提供简单易用的特性集,
帮助我们解决微服务开发必会涉及到的服务注册与发现,服务配置,服务管理等问题。
Nacos 还是 Spring Cloud Alibaba 组件之一,负责服务注册与发现。

Eureka_Consul_Nacos__60">4、常见的注册中心:Zookeeper, Eureka, Consul, Nacos 的异同点:

在这里插入图片描述

5、注册中心:eureka 概述

1)Eureka 是 Netflix 开发的服务发现框架,springcloud 将它集成在自己的子项目 spring-cloud-netflix 中,实现 springcloud 的服务发现功能。

2)Eureka 的基本架构

Eureka Server:提供服务注册和发现。
Service Consumer:服务消费方,从 Eureka 获取注册服务列表,从而能够消费服务。
Service Provider。服务提供方,将自身服务注册到 Eureka 从而使服务消费方能够找到。

3)Eureka 的交互流程与原理:

在这里插入图片描述

在这里插入图片描述

EurekaServer__Eureka__82">6、搭建 EurekaServer 注册中心,使用 Eureka 的步骤:

1)搭建 EurekaServer

创建工程,导入依赖坐标,配置 application.yml 文件,配置启动类。

2)将服务提供者注册到 EurekaServer

3)服务消费者通过注册中心获取服务列表,并调用。

7、在父工程 spring_cloud_demo 下,创建子工程(子模块)

创建 子工程(子模块)

--> 右键 spring_cloud_demo 父工程
--> Modules 
--> Maven 
--> Groupld : ( djh.it )Artifactld : ( eureka_service )Version : 1.0-SNAPSHOT
--> Next 
--> Module name: ( eureka_service )Content root : ( C:\java-test\idea2019\spring_cloud_demo\eureka_service )Module file location: ( C:\java-test\idea2019\spring_cloud_demo\eureka_service )
--> Finish

7、在子工程 eureka_service 的 pom.xml 中导入依赖


<?xml version="1.0" encoding="UTF-8"?>
<project xmlns="http://maven.apache.org/POM/4.0.0"xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd"><parent><artifactId>spring_cloud_demo</artifactId><groupId>djh.it</groupId><version>1.0-SNAPSHOT</version></parent><modelVersion>4.0.0</modelVersion><artifactId>eureka_service</artifactId><dependencies><dependency><groupId>org.springframework.cloud</groupId><artifactId>spring-cloud-starter-netflix-eureka-server</artifactId></dependency></dependencies></project>
<!-- C:\java-test\idea2019\spring_cloud_demo\eureka_service\pom.xml -->

9、创建配置文件 application.yml


## C:\java-test\idea2019\spring_cloud_demo\eureka_service\src\main\resources\application.ymlserver:port: 9000  # 启动端口 命令行注入。eureka: # 配置 eureka_serverinstance:hostname: localhostclient:register-with-eureka: false  # 是否将自己注册到注册中心fetch-registry: false  # 是否从 Eureka 中获取注册信息service-url: # 配置暴露给 EurekaClient 的请求地址defaultZone: http://${eureka.instance.hostname}:${server.port}/eureka/

EurekaServerApplicationjava_164">10、创建 启动类 EurekaServerApplication.java


/***   C:\java-test\idea2019\spring_cloud_demo\eureka_service\src\main\java\djh\it\eureka\EurekaServerApplication.java**   2024-4-19  启动类 EurekaServerApplication.java*/
package djh.it.eureka;import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;
import org.springframework.boot.autoconfigure.domain.EntityScan;
import org.springframework.cloud.netflix.eureka.server.EnableEurekaServer;@SpringBootApplication
@EnableEurekaServer  //激活 Eureka
public class EurekaServerApplication {public static void main(String[] args) {SpringApplication.run(EurekaServerApplication.class, args);}
}

11、运行启动类,进行测试

浏览器地址栏输入:http://localhost:9000 输出界面如下:

在这里插入图片描述

上一节学习请点击:
# 从浅入深 学习 SpringCloud 微服务架构(二)模拟微服务环境(2)通过 RestTemplate 调用远程服务


http://www.ppmy.cn/news/1424578.html

相关文章

修改taro-ui-vue3的tabs组件源码增加数字标签

需求&#xff1a;taro-ui-vue3的tabs组件上增加数字标记 步骤一&#xff1a;node_modules文件夹下找到taro-ui-vue3/lib/tabs/index.js 把173行的这一段替换成下面这段&#xff0c;然后写上样式 default: () > item.number ? [h(View, {class: at-tabs__item_in}, {defau…

如何在浏览器Web前端在线编辑PPT幻灯片?

有时候在项目中我们会遇到需要在网页在线打开并编辑PPT文档保存到本地或者服务器指定位置&#xff0c;猿大师办公助手可以很方便的调用本机Office实现在网页上编辑PPT幻灯片&#xff0c;效果与本机Office打开PPT完全一样。 猿大师办公助手支持完整嵌入模式&#xff0c;也就是本…

新型物联网创新实践教学体系建设

新型物联网创新实践教学体系建设 一、设计背景 随着物联网技术的快速发展&#xff0c;物联网已成为当今科技创新的重要领域。为了培养能够紧跟物联网技术发展趋势的高素质人才&#xff0c;高校物联网专业教学急需构建一套创新实践教学体系。本毕业设计旨在探索和设计一套新型…

K8s中的控制器和资源对象是什么关系呢?

K8s中的控制器和资源对象是什么关系呢&#xff1f; Kubernetes&#xff08;简称k8s&#xff09;是一个开源的容器编排平台&#xff0c;用于自动化部署、扩展和管理容器化应用程序。在Kubernetes中&#xff0c;控制器和资源对象是两个核心概念&#xff0c;它们共同构成了Kubern…

ChatGPT畅想:论文写作新境界

ChatGPT无限次数:点击直达 html ChatGPT畅想&#xff1a;论文写作新境界 作为一名拥有10年经验的CSDN网站原创文章优质创作者&#xff0c;我深知论文写作在科研领域的重要性。随着人工智能技术的发展&#xff0c;ChatGPT作为一款强大的语言模型&#xff0c;正在为论文写作带…

负载均衡的原理及算法

负载均衡&#xff08;Load Balancing&#xff09;是指在计算机网络中将工作负载&#xff08;如请求、数据流量等&#xff09;分配给多个计算资源&#xff08;如服务器、网络连接等&#xff09;&#xff0c;以实现资源利用的均衡和性能优化。其原理和算法如下&#xff1a; 原理…

在Rust中使用ini配置文件

一、概述 INI文件是一种无固定标准格式的配置文件。它以简单的文字与简单的结构组成&#xff0c;常常使用在Windows操作系统上&#xff0c;许多程序也会采用INI文件作为配置文件使用。Windows操作系统后来以注册表的形式取代INI档。但是INI还是流传到现在。 rust-ini是一个在R…

一个文生视频MoneyPrinterTurbo项目解析

最近抖音剪映发布了图文生成视频功能&#xff0c;同时百家号也有这个功能&#xff0c;这个可以看做是一个开源的实现&#xff0c;一起看看它的原理吧~ 一句话提示词 大模型生成文案 百家号生成视频效果 MoneyPrinterTurbo生成视频效果 天空为什么是蓝色的&#xff1f; 天空…