从浅入深 学习 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 调用远程服务