简述:Eureka 是天生集群的,搭建配置相当简单:不论你有多少的机器部署,只要相互之间指定对方的注册中心地址就可以了,而多个 Eureka Server 之间是通过复制的方式完成注册服务的同步,遵循AP原则。
优点:
- 从设计角度来看,Eureka可以说是无懈可击,注册中心、提供者、调用者边界清晰通过去中心化的集群支持保证了注册中心的整体可用性。
- 可以运行多个实例来构建集群,解决单点问题。但不同于 ZooKeeper 的选举 leader 的过程,Eureka Server 采用的是Peer to Peer 对等通信。这是一种去中心化的架构,无 master/slave 之分,每一个 Peer 都是对等的。在这种架构风格中,节点通过彼此互相注册来提高可用性,每个节点需要添加一个或多个有效的 serviceUrl 指向其他节点。每个节点都可被视为其他节点的副本。因此,Eureka可以很好的应对因网络故障导致部分节点失去联系的情况。
缺点:
1.Eureka属于应用内的注册方式,对应用的侵入性太强,且只支持Java应用。
eureka集群注册中心的搭建以及测试:
搭建三个注册中心(也可以多个或者两个,因为eureka集群是p2p的,并不是选举模式,故可随意增加数量且搭建简单)
简而言之,首先搭建父项目springcloud用于统一管理包,然后创建springcloud_eureka的顶级项目,在该项目下创建三个注册中心eureka1、eureka2、eureka3以及测试用的生产者项目provider以及消费者项目consumer,测试注册中心是否正常。
整体目录结构如下:
- 首先创建springcloud项目并在其创建子项目springcloud-eureka项目(该项目下pom文件保持创建时默认配置即可),并在springcloud项目的pom文件中添加以下配置:
<!--spring boot-->
<parent>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-parent</artifactId>
<version>2.6.11</version>
<relativePath/>
</parent>
<!--Spring Cloud-->
<dependencyManagement>
<dependencies>
<dependency>
<groupId>org.springframework.cloud</groupId>
<artifactId>spring-cloud-dependencies</artifactId>
<version>2021.0.2</version>
<type>pom</type>
<scope>import</scope>
</dependency>
</dependencies>
</dependencyManagement>
2.然后在springcloud-eureka项目下创建三个注册中心项目,并在pom文件中添加以下配置,同时对于三个注册中心的application配置需要稍微修改其中几个配置项:
Pom文件添加以下依赖:
<dependencies>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-web</artifactId>
</dependency>
<!--eureka-server-->
<dependency>
<groupId>org.springframework.cloud</groupId>
<artifactId>spring-cloud-starter-netflix-eureka-server</artifactId>
</dependency>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-actuator</artifactId>
</dependency>
</dependencies>
Application.yml配置文件添加以下:
server: