您的位置:首页 > 编程语言 > Java开发

Spring cloud系列四 Eureka 之概述和服务注册中心集群

2017-10-12 22:28 961 查看

1. 概述

之前的博客的Spring cloud系列一 包含所有基本要素的完整Spring Cloud dem这一节介绍如何启动一个简单注册中心,但是这个例子有个问题注册中心为单点,一但这个节点故障,则整个服务不可用。本节我们先对Eureka进行概述,然后介绍如何对注册中心进行集群。

2. Eureka概述

2.1. Eureka分类

Spring Cloud针对服务注册与发现,进行了一层抽象,并提供了三种实现:

Eureka

Consul

Zookeeper

Spring Cloud对Eureka的支持最好,本文只介绍Eureka用法。

在Eureka中,所有的Eureka服务都被称为实例(instance),这些实例又分成为两大类:

Eureka Server: Eureka的服务端,即服务注册中心,负责维护所有实例的注册信息

Eureka Client: Eureka的客户端,根据功能又分为两类

a. Service Provider:服务提供方,向Eureka Server做服务注册、续约和下线等操作,注册的主要数据包括服务名、机器ip、端口号、域名等等

b. Service Consumer:服务消费方, 向Eureka Server获取Service Provider的注册信息,并通过远程调用与Service Provider进行通信

可以将Service Provider和Service Consumer理解为角色。一个Eureka Client可以只是Service Provider,也可以只是Service Consumer,也可以同时即是Service Provider也是Service Consumer。

2.2. Eureka配置参数

理解了上节的概念,我们来对Eureka的配置参数进行理解,它的配置主要分为三类:

eureka.instance.*: Eureka实例注册配置项,这些是无论Eureka是做Server端,还是做Client端都需要的公共配置项。这些属性配置在类org.springframework.cloud.netflix.eureka.EurekaInstanceConfigBean中

eureka.server.*: Eureka做为Eureka Server才需要配置的选项,即使用eureka做注册中心时才需要配置这个选项。这些属性配置在类org.springframework.cloud.netflix.eureka.EurekaClientConfigBean中

eureka.client.*: Eureka做为Eureka Client才需要配置的选项,即服务需要向注册中心注册(实例做为Service Provider时)或使用注册中心中的服务(实例做为Service Consumer时)时才需要配置这些选项。这些属性配置在类org.springframework.cloud.netflix.eureka.server.EurekaServerConfigBean中

3. Eureka Server 注册中心集群

3.1. 单机Eureka Server 注册中心的配置

单机注册中心的配置见这篇博客的Spring cloud系列一 包含所有基本要素的完整Spring Cloud dem这一节

3.2 实现Eureka Server注册中心集群

Eureka官网的架构图



如上图所示,为了解决Eureka Server单点的问题,我们可以启动多个Eureka Server注册中心,并让多个Eureka Server注册中心相互注册,这样可以实现Eureka Server注册中心集群。这是一种去中心化的架构中,各个节点是平等的,每个节点都保存完整实例注册服务的信息。

参数配置

配置多注册中心和单个注册中心基本相同,唯一的不同是eureka.client.serviceUrl配置。如本节我们配置一个注册中心集群,它包含两台服务,IP和端口分别是192.168.21.4:10761和192.168.21.3:10761,则Eureka Server对应的配置是

eureka:
client:
# 设置eureka服务器所在的地址,查询服务和注册服务都需要依赖这个地址
serviceUrl:
# defaultZone: http://127.0.0.1:10761/eureka/ # 设置eureka服务器所在的地址,可以同时向多个服务注册服务
defaultZone: http://192.168.21.3:10761/eureka/,http://192.168.21.4:10761/eureka/[/code] 
如果Eureka client要使用注册中心集群,其它配置和使用单机注册中心相同,只需要修改defaultZone配置:

eureka:
client:
# 设置eureka服务器所在的地址,查询服务和注册服务都需要依赖这个地址
serviceUrl:
# defaultZone: http://127.0.0.1:10761/eureka/ # 设置eureka服务器所在的地址,可以同时向多个服务注册服务
defaultZone: http://192.168.21.3:10761/eureka/,http://192.168.21.4:10761/eureka/ 


“Eureka官网的架构图”除了介绍注册中心外,还涉及服务实例的注册、续约、下线等功能,我们在下节在介绍。

4. 代码

以上的详细的代码见下面

github代码,请尽量使用tag v0.4,不要使用master,因为我不能保证master代码一直不变
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: