原文作者:纯洁的微笑

原文地址:springcloud(二):注册中心Eureka

目录

一、单点

1、pom中添加依赖

2、启动代码中添加@EnableEurekaServer注解

3、配置文件

二、集群

1、双节点注册中心

2、eureka集群使用


Eureka是spring cloud中的一个负责服务注册与发现的组件。遵循着CAP理论中的A(可用性)P(分区容错性)。一个Eureka中分为eureka server和eureka client。其中eureka server是作为服务的注册与发现中心。eureka client既可以作为服务的生产者,又可以作为服务的消费者。具体结构如下图:

上图中我们首先会启动一个或多个Eureka server,这些eureka server同步保留着所有的服务信息。然后我们启动不同的eureka client,向服务端发起服务注册和服务查询。不论我们是向那个eureka server进行的注册,最终都会同步给所有配置好的eureka server。我们获取的服务信息,也同样都是一致的。spring cloud已经帮我实现了服务注册中心,我们只需要很简单的几个步骤就可以完成。

一、单点

1、pom中添加依赖

<dependencies><dependency><groupId>org.springframework.cloud</groupId><artifactId>spring-cloud-starter</artifactId></dependency><dependency><groupId>org.springframework.cloud</groupId><artifactId>spring-cloud-starter-eureka-server</artifactId></dependency><dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-test</artifactId><scope>test</scope></dependency>
</dependencies>

2、启动代码中添加@EnableEurekaServer注解

@SpringBootApplication
@EnableEurekaServer
public class SpringCloudEurekaApplication {public static void main(String[] args) {SpringApplication.run(SpringCloudEurekaApplication.class, args);}
}

3、配置文件

在默认设置下,该服务注册中心也会将自己作为客户端来尝试注册它自己,所以我们需要禁用它的客户端注册行为,在application.properties添加以下配置:

spring.application.name=spring-cloud-eurekaserver.port=8000
eureka.client.register-with-eureka=false
eureka.client.fetch-registry=falseeureka.client.serviceUrl.defaultZone=http://localhost:${server.port}/eureka/
  • eureka.client.register-with-eureka :表示是否将自己注册到Eureka Server,默认为true。
  • eureka.client.fetch-registry :表示是否从Eureka Server获取注册信息,默认为true。
  • eureka.client.serviceUrl.defaultZone :设置与Eureka Server交互的地址,查询服务和注册服务都需要依赖这个地址。默认是http://localhost:8761/eureka ;多个地址可使用 , 分隔。

启动工程后,访问:http://localhost:8000/,可以看到下面的页面,其中还没有发现任何服务

二、集群

注册中心这么关键的服务,如果是单点话,遇到故障就是毁灭性的。在一个分布式系统中,服务注册中心是最重要的基础部分,理应随时处于可以提供服务的状态。为了维持其可用性,使用集群是很好的解决方案。Eureka通过互相注册的方式来实现高可用的部署,所以我们只需要将Eureke Server配置其他可用的serviceUrl就能实现高可用部署。

1、双节点注册中心

首次我们尝试一下双节点的注册中心的搭建。

1)创建application-peer1.properties,作为peer1服务中心的配置,并将serviceUrl指向peer2

spring.application.name=spring-cloud-eureka
server.port=8000
eureka.instance.hostname=peer1eureka.client.serviceUrl.defaultZone=http://peer2:8001/eureka/

2)创建application-peer2.properties,作为peer2服务中心的配置,并将serviceUrl指向peer1

spring.application.name=spring-cloud-eureka
server.port=8001
eureka.instance.hostname=peer2eureka.client.serviceUrl.defaultZone=http://peer1:8000/eureka/

3)host转换:在hosts文件中加入如下配置

127.0.0.1 peer1
127.0.0.1 peer2

4)打包启动:依次执行下面命令

#打包
mvn clean package
# 分别以peer1和peeer2 配置信息启动eureka
java -jar spring-cloud-eureka-0.0.1-SNAPSHOT.jar --spring.profiles.active=peer1
java -jar spring-cloud-eureka-0.0.1-SNAPSHOT.jar --spring.profiles.active=peer2

依次启动完成后,浏览器输入:http://localhost:8000/ 效果图如下:

根据图可以看出peer1的注册中心DS Replicas已经有了peer2的相关配置信息,并且出现在available-replicas中。我们手动停止peer2来观察,发现peer2就会移动到unavailable-replicas一栏中,表示peer2不可用。到此双节点的配置已经完成。

2、eureka集群使用

在生产中我们可能需要三台或者大于三台的注册中心来保证服务的稳定性,配置的原理其实都一样,将注册中心分别指向其它的注册中心。这里只介绍三台集群的配置情况,其实和双节点的注册中心类似,每台注册中心分别又指向其它两个节点即可,使用application.yml来配置。application.yml配置详情如下:

---
spring:application:name: spring-cloud-eurekaprofiles: peer1
server:port: 8000
eureka:instance:hostname: peer1client:serviceUrl:defaultZone: http://peer2:8001/eureka/,http://peer3:8002/eureka/
---
spring:application:name: spring-cloud-eurekaprofiles: peer2
server:port: 8001
eureka:instance:hostname: peer2client:serviceUrl:defaultZone: http://peer1:8000/eureka/,http://peer3:8002/eureka/
---
spring:application:name: spring-cloud-eurekaprofiles: peer3
server:port: 8002
eureka:instance:hostname: peer3client:serviceUrl:defaultZone: http://peer1:8000/eureka/,http://peer2:8001/eureka/

分别以peer1、peer2、peer3的配置参数启动eureka注册中心。

java -jar spring-cloud-eureka-0.0.1-SNAPSHOT.jar --spring.profiles.active=peer1
java -jar spring-cloud-eureka-0.0.1-SNAPSHOT.jar --spring.profiles.active=peer2
java -jar spring-cloud-eureka-0.0.1-SNAPSHOT.jar --spring.profiles.active=peer3

依次启动完成后,浏览器输入:http://localhost:8000/ 效果图如下:

可以在peer1中看到了peer2、peer3的相关信息。至此eureka集群也已经完成了

示例:示例代码-github、示例代码-码云

参考:Peer Awareness

注册中心—组件—Eureka相关推荐

  1. SpringCloud知识点梳理 - 1.服务注册中心组件--Eureka

    提纲挈领 注册中心的作用:对各个微服务的管理.记录与监控. 1.核心概念 如下图,服务提供者和服务的消费者,本质上也是 Eureka Client 角色.整体上可以分为两个主体:Eureka Serv ...

  2. 注册中心—常见注册中心组件对比分析

    原文作者:知了V笑 原文地址:微服务技术栈:常见注册中心组件,对比分析 关于注册中心原理,请先阅读微服务注册中心原理 目录 一.Zookeeper组件 二.Eureka组件 三.Consul组件 四. ...

  3. 微服务技术栈:常见注册中心组件,对比分析

    本文源码:GitHub·点这里 || GitEE·点这里 一.注册中心简介 1.基础概念 在分布式架构的系统中注册中心这个概念就已经被提出了,最经典的就是Zookeeper中间件. 微服务架构中,注册 ...

  4. 服务注册中心:Eureka

    目录 第一章 注册中心介绍 1.1.什么是注册中心 1.2.为啥用注册中心 1.3.常见的注册中心 第二章 Eureka介绍 2.1.Eureka的介绍 2.2.Eureka的三种角色 2.3.Eur ...

  5. 微服务 注册中心的作用_102,谈谈微服务注册中心zookeeperamp;Eureka

    首先,大家要明确一点微服务注册中心是一个重要的组件,解决的是服务的注册和发现的问题,而zookeeper,Eureka都只是其中一款落地实现的产品,再比如Nacos也是如此,所以关键是掌握注册中心的工 ...

  6. 微服务 注册中心的作用_SpringCloud(二)服务注册中心与Eureka工作原理介绍

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

  7. 服务注册中心,Eureka与Zookeeper比较

    2019独角兽企业重金招聘Python工程师标准>>> 1. 前言 服务注册中心,给客户端提供可供调用的服务列表,客户端在进行远程服务调用时,根据服务列表然后选择服务提供方的服务地址 ...

  8. 服务注册中心之Eureka简介及原理

    服务注册中心对整个微服务架构起着最核心的整合作用,因此对Eureka还是有很大的必要进行深入研究.     在讨论Eureka前我们先来了解下其与zookeeper的区别: 著名的CAP理论指出,一个 ...

  9. 微服务注册中心:Eureka详解

    文章目录 Eureka基础概念 Eureka概述 Eureka架构图 Eureka集群架构图 Eureka关键概念 Eureka的自我保护模式 创建Eureka服务端 服务提供者cloud-provi ...

最新文章

  1. 从零开始学python微课视频版-从零开始学Python(微课视频版)
  2. Servlet第一个示例
  3. 数据中心背后的地缘政治学
  4. linux运行 netcore,linux 下netcore程序开机自动启动服务
  5. vue-cli 搭建的项目处理不同环境下请求不同域名的问题
  6. Go程序设计语言1.1 hello,world
  7. python 把网页转换成Pdf格式下载到本地
  8. 获取临时凭证AWS STS
  9. 立体栅格地图_基于八叉树表示的三维栅格地图路径规划系统及方法与流程
  10. 职场管理(3)——提取公积金需要满足哪些条件?你还不知道吧
  11. 【微信小程序】-- 全局配置 -- window - 下拉刷新 上拉触底(十六)
  12. 史帝奇动感影院技术|4D特效影院|4D电影院的建造要求
  13. 四轴码垛机器人DH模型运动学
  14. ORA-20005: object statistics are locked (stattype = ALL)-转
  15. python中re.match和re.search和re.findall的用法
  16. pic18f66k80_boot 与 led (hex)
  17. C#使用Emgu实现大图找图,并获得匹配区域
  18. jenkins 插件包
  19. 我和 XOP的 醉生梦死
  20. 华为云CDN内容分发网络节点分布介绍

热门文章

  1. 【Xamarin挖墙脚系列:使用Xamarin进行Hybrid应用开发】
  2. 《那些年啊,那些事——一个程序员的奋斗史》——104
  3. android intent action 介绍大全
  4. Oracle学习(十六)Oracle安装
  5. 创建第一个Django项目
  6. ORA-00923: FROM keyword not found where expected(单双引号)
  7. 第11讲++数据的基本查询
  8. linux core
  9. 简单递推公式转换矩阵求解
  10. pb - unable to initialize client library context