【SpringCloud从0到6】 第二节:注册中心 - eureka

 2023-09-11 阅读 32 评论 0

摘要:从本节开始 , 我们就正式开始编写一个cloud基础微服务了 , 为了代码更简洁及更方便入门 , 在此采用了maven子模块的结构 . 1 . 创建maven主模块 , 配置cloud相关参数 pom配置如下 : <?xml version="1.0" encoding="UTF-8"?> <project xmlns&

从本节开始 , 我们就正式开始编写一个cloud基础微服务了 , 为了代码更简洁及更方便入门 , 在此采用了maven子模块的结构 .

1 . 创建maven主模块 , 配置cloud相关参数

pom配置如下 : 

<?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"><modelVersion>4.0.0</modelVersion><parent><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-parent</artifactId><version>1.5.12.RELEASE</version><relativePath/> <!-- lookup parent from repository --></parent><groupId>cn.xbz</groupId><artifactId>xcloud</artifactId><version>0.0.1-SNAPSHOT</version><modules><module>eureka</module><!-- 服务注册中心 --></modules><properties><java.version>1.8</java.version><spring-cloud.version>Edgware.RELEASE</spring-cloud.version></properties><!-- 统一指定cloud相关组件的依赖版本 --><dependencyManagement><dependencies><dependency><groupId>org.springframework.cloud</groupId><artifactId>spring-cloud-dependencies</artifactId><version>${spring-cloud.version}</version><type>pom</type><scope>import</scope></dependency></dependencies></dependencyManagement><build><plugins><plugin><groupId>org.springframework.boot</groupId><artifactId>spring-boot-maven-plugin</artifactId></plugin></plugins></build>
</project>

2 . 创建eureka服务注册中心模块 

新建SpringBoot model , 命名为eureka , 同时在pom配置如下 : 

<?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"><modelVersion>4.0.0</modelVersion><parent><groupId>cn.xbz</groupId><artifactId>xcloud</artifactId><version>0.0.1-SNAPSHOT</version></parent><artifactId>eureka</artifactId><name>eureka</name><description>服务注册中心</description><dependencies><dependency><groupId>org.springframework.cloud</groupId><artifactId>spring-cloud-starter-eureka-server</artifactId></dependency></dependencies>
</project>

 3 . 配置启动类

在启动类Application中添加@EnableEurekaServer注解来声明当前模块为服务注册中心

package cn.xbz.eureka;import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;
import org.springframework.cloud.netflix.eureka.server.EnableEurekaServer;/** 添加 @EnableEurekaServeer , 将当前模块声明为 服务注册中心 */
@EnableEurekaServer
@SpringBootApplication
public class EurekaApplication {public static void main(String[] args) {SpringApplication.run(EurekaApplication.class, args);}
}

4 . 配置参数

在application.properties中配置服务中心的相关参数及设置

server.port=8888eureka.instance.hostname=localhost#缺省设置是集群注册中心 , 系统也会将自己作为一个服务来尝试注册到中心 , 在单机模式下我们需要禁用它的注册行为#是否将当前模块自身作为服务注册到中心 , 单节点选false
eureka.client.registerWithEureka=false
#是否从EurekaServer获取注册信息,默认为true。单节点不需要同步其他的EurekaServer节点的数据
eureka.client.fetchRegistry=false# 开发环境中降低自我保护策略
eureka.server.renewal-percent-threshold=0.49#注册中心的访问地址
eureka.client.serviceUrl.defaultZone=http://${eureka.instance.hostname}:${server.port}/eureka/

5 . 启动服务中心

深度解锁SpringCloud、至此 , 一个最基本的注册中心就完成了 , 运行Application类 , 在浏览器中访问 http:localhost:8888 , 可看到界面如下

面板中显示了系统状态 , 服务信息等 . 中间部分就是我们最关注的注册到eureka的实例列表 . 由于我们当前没有启动任何实例 , 所以此处现在是空的 .  

6 . eureka详解

  • eureka是微服务中最核心的部分 , 负责服务的注册和治理 , 以及服务的健康检查等
  • 如果有多个服务的时候 , 如何知道一共有几个 , 需要怎么调用其他服务 , 其中一个服务挂了我怎么才能处理等等 , 这就是eureka的作用
  • 所有的服务都集成了一个eureka client组件 , 服务启动成功后 , 这个组件就根据配置去寻找eureka server , 找到后 , 将自己的服务信息 , 比如在哪个服务器上 , 端口是哪个等等 .
  • 而注册中心维护着一张注册表 , 保存了各个服务的对应信息 . 消费者来注册中心获取服务的时候 , 会带着它要请求的服务名称 , 注册中心就根据这个服务名到注册中心区匹配 , 匹配不到就返回错误 , 如果匹配成功就将信息返回给消费者 ,
  • 同时消费者里的eureka client 组件会把这些信息缓存一份 , 下次再需要调用该服务 , 就可以直接从本地获取 , 提高通讯效率 . 
  • 即是说 , 只要获取了服务地址之后 , 如果eureka server挂掉了 , 消费者依然可以根据本地缓存去请求服务者 . 但是这样的情况下 , 如果服务者挂掉之后 , 消费者是无法感知的 , 依然会请求一个挂掉的服务 , 然后就导致服务故障

版权声明:本站所有资料均为网友推荐收集整理而来,仅供学习和研究交流使用。

原文链接:https://hbdhgg.com/3/48244.html

发表评论:

本站为非赢利网站,部分文章来源或改编自互联网及其他公众平台,主要目的在于分享信息,版权归原作者所有,内容仅供读者参考,如有侵权请联系我们删除!

Copyright © 2022 匯編語言學習筆記 Inc. 保留所有权利。

底部版权信息