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

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

段子手168

1、微服务的注册中心

注册中心可以说是微服务架构中的"通讯录",它记录了服务和服务地址的映射关系。

在分布式架构中服务会注册到这里,当服务需要调用其它服务时,就这里找到服务的地址,进行调用。

2、注册中心的主要作用

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

1)服务发现:

服务注册/反注册:保存服务提供者和服务调用者信息。

服务订阅/取消订阅:服务调用者订阅服务提供者的信息,最好有实时推送的功能。

服务路由(可选):具有筛选整合服务提供者的能力。

2)服务配置:

配置订阅:服务提供者和服务调用者订阅微服务相关的配置。

配置下发:主动将配置推送给服务提供者和服务调用者。

3)服务健康检测:

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

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 组件之一,负责服务注册与发现。

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 的交互流程与原理:

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.yml

server:
  port: 9000  # 启动端口 命令行注入。

eureka: # 配置 eureka_server
  instance:
    hostname: localhost
  client:
    register-with-eureka: false  # 是否将自己注册到注册中心
    fetch-registry: false  # 是否从 Eureka 中获取注册信息
    service-url: # 配置暴露给 EurekaClient 的请求地址
      defaultZone: http://${eureka.instance.hostname}:${server.port}/eureka/

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 调用远程服务

相关推荐
FrankYoou1 小时前
Jenkins 与 GitLab CI/CD 的核心对比
java·docker
麦兜*1 小时前
Spring Boot启动优化7板斧(延迟初始化、组件扫描精准打击、JVM参数调优):砍掉70%启动时间的魔鬼实践
java·jvm·spring boot·后端·spring·spring cloud·系统架构
KK溜了溜了2 小时前
JAVA-springboot 整合Redis
java·spring boot·redis
大只鹅2 小时前
解决 Spring Boot 对 Elasticsearch 字段没有小驼峰映射的问题
spring boot·后端·elasticsearch
9527华安2 小时前
FPGA实现40G网卡NIC,基于PCIE4C+40G/50G Ethernet subsystem架构,提供工程源码和技术支持
fpga开发·架构·网卡·ethernet·nic·40g·pcie4c
天河归来2 小时前
使用idea创建springboot单体项目
java·spring boot·intellij-idea
weixin_478689762 小时前
十大排序算法汇总
java·算法·排序算法
码荼2 小时前
学习开发之hashmap
java·python·学习·哈希算法·个人开发·小白学开发·不花钱不花时间crud
IT_10242 小时前
Spring Boot项目开发实战销售管理系统——数据库设计!
java·开发语言·数据库·spring boot·后端·oracle
ye903 小时前
银河麒麟V10服务器版 + openGuass + JDK +Tomcat
java·开发语言·tomcat