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中依次打开以下网址:
可以看到peer1已经被注册到peer2中,peer2也注册至了peer1中。
4.总结:
- Eureka Server对端口是不敏感的
- 服务注册时,尽量使用IP地址作为主机名称
- 了解Eureka RESTful API,了解如何获取相关服务信息。
- 阅读相关文章了解Eureka 保护机制。