Spring Cloud学习笔记(4)- 构建一个Eureka集群

1,016 阅读3分钟

1. Eureka知识点回顾

  • Eureka Server、Eureka Client都是一个Eureka Instance,他们都可以独立运行。
  • Eureka Server同时也是一个Eureka Client,方便Eureka Server可以互相间进行服务注册和发现。
  • Eureka使用了很多AWS(亚马逊云)的基本概念,但是这些概念、特性在其他云(阿里云、腾讯云)都有对应的实现。所以Eureka与环境无关,可以部署在不同的云中。
  • Eureka Server在互相注册的过程中,将采用增量更新的方式同步服务注册表。

2. 构建一个Eureka Server的分布式集群

*** 关键知识点: ***

1.服务器相关知识

在上一章中讲到,Eureka很多的服务器配置项都来自于AWS。其中非常重要的:

  • Region表示AWS中的地理位置,例如us-east-1、us-east-2、eu-west-1等,注意这些都是服务器集群;
  • 每个Region都有多个Availability Zone,彼此内网打通;
  • 各个Region之间完全隔离,彼此内网不打通;
  • AWS通过这种方式实现了最大的容错和稳定性
  • 在其他云环境中部署时,可以认为Region表示一个服务器集群,Zone表示服务器集群中的具体某一台服务器
  • Spring Cloud中,默认使用的Region是us-east-1

2.Eureka Instance

Eureka实例是一个基础对象,它提供了诸如网络通信、数据同步,心跳等基本的网络通信方法。无论是Eureka Server还是Eureka Client,其都是一个Eureka Instance。

3.Eureka Client与Eureka Server

Eureka Client提供了服务注册、服务更新、服务地址等相关信息,并通过相关配置将当前服务注册至指定的Eureka Server上。 Eureka Server提供了服务注册表以及相关管理服务注册表的API,Eureka Server也是一个Eureka Client,通过这种方式Eureka Server可以将当前服务注册至其他的Eureka Server中去。两个Eureka Server通过增量更新的方式更新服务注册表。

3.编写一个示例来演示Eureka Server集群的配置方式

1.Windows系统修改Hosts文件如下:

127.0.0.1 peer1
127.0.0.1 peer2

Hosts文件主要作用是定义IP地址和主机名的映射关系,是一个映射IP地址和主机名的规定。修改Hosts文件是为了模拟两台服务器,一台名为:peer1,一台名为:peer2。主机对应的IP地址都是本地网卡回环地址。

*** Tips: ***

  • 为什么需要配置Hosts文件?因为我们需要在同一台机器模拟多个Eureka Server。
  • **Eureka Server对端口不敏感,区分同一名称的服务仅仅依赖主机名。**由于我们需要在同一台机器上模拟多个Eureka Server,所以无法使用IP地址作为主机名,只能通过修改Hosts文件的方式模拟不同的主机名称。

2.修改上一章中新键的EurekaDemoServer项目中的配置文件application.yml:

spring:
  application:
    name: bruce-eureka-demo-server
---
spring:
  profiles: peer1                                 # 指定profile=peer1
server:
  port: 8761
eureka:
  instance:
    hostname: peer1                               # 指定当profile=peer1时,主机名是peer1
  client:
    serviceUrl:
      defaultZone: http://peer2:8762/eureka/      # 将自己注册到peer2这个Eureka上面去
---
spring:
  profiles: peer2
server:
  port: 8762
eureka:
  instance:
    hostname: peer2
  client:
    serviceUrl:
      defaultZone: http://peer1:8761/eureka/

*** Tips: ***

  • 以上配置中具有两个单独的运行配置,配置名称分别为peer1、peer2。
  • Peer1配置中配置了当前Eureka Server作为一个Eureka Client需要注册的服务发现地址。

3.Maven clean-->Maven Install,编译为Jar

4.运行Jar包:

java -jar EurekaDemoServer-1.0-SNAPSHOT.jar --spring.profiles.active=peer2

首先运行Peer2配置,即运行服务发现的根服务器。

再运行peer1配置:

java -jar EurekaDemoServer-1.0-SNAPSHOT.jar --spring.profiles.active=peer1

4.运行结果如下所示:

在Chrome中依次打开以下网址:

http://peer2:8762/

http://peer1:8761/

可以看到peer1已经被注册到peer2中,peer2也注册至了peer1中。

4.总结:

  • Eureka Server对端口是不敏感的
  • 服务注册时,尽量使用IP地址作为主机名称
  • 了解Eureka RESTful API,了解如何获取相关服务信息。
  • 阅读相关文章了解Eureka 保护机制。