Spring Cloud Eureka服务注册中心 多节点搭建(学习总结)

Spring Cloud Eureka服务注册中心 多节点搭建(学习总结)一、前言:本文主要搭建SpringCloudEureka服务注册中心(多节点),本文基于SpringBoot1.5.2,SpringCloudCamden.SR6版本编写,版本不一致可能会有差异。下面就学习总结记录一下:二、搭建Eureka-Server首先,引入相应的依赖pom.xml:<?xmlversion=”1.0″encoding=”UTF-8″?…

大家好,又见面了,我是你们的朋友全栈君。如果您正在找激活码,请点击查看最新教程,关注关注公众号 “全栈程序员社区” 获取激活教程,可能之前旧版本教程已经失效.最新Idea2022.1教程亲测有效,一键激活。

Jetbrains全系列IDE稳定放心使用

目录

一、前言:

二、搭建Eureka-Server

三、启动类加上@EnableEurekaServer注解,开启Eureka服务发现的功能:

四、新建三个配置文件

五、在C:\Windows\System32\drivers\etc\hosts文件中添加如下:

六、搭建服务提供者Eureka-Client:

七、启动类加上@EnableDiscoveryClient注解,注册成为Eureka的一个服务提供者。

九、采用java -jar的方式启动高可用Eureka Server

十、同样使用java -jar 方式启动Eureka Client

十一、总结


一、前言:

本文主要搭建Spring Cloud Eureka服务注册中心(多节点), 本文基于SpringBoot 1.5.2,Spring Cloud Camden.SR6版本编写,版本不一致可能会有差异。下面就学习总结记录一下:

二、搭建Eureka-Server

首先,引入相应的依赖pom.xml:

<?xml version="1.0" encoding="UTF-8"?>
<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
	xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
	<modelVersion>4.0.0</modelVersion>

	<groupId>com.springcloud.wsh</groupId>
	<artifactId>springcloud_hign_availability_eureka_server</artifactId>
	<version>0.0.1-SNAPSHOT</version>
	<packaging>jar</packaging>

	<name>springcloud_hign_availability_eureka_server</name>
	<description>Spring Cloud Eureka高可用</description>

	<parent>
		<groupId>org.springframework.boot</groupId>
		<artifactId>spring-boot-starter-parent</artifactId>
		<version>1.5.2.RELEASE</version>
		<relativePath/> <!-- lookup parent from repository -->
	</parent>

	<properties>
		<project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
		<project.reporting.outputEncoding>UTF-8</project.reporting.outputEncoding>
		<java.version>1.8</java.version>
		<spring-cloud.version>Camden.SR6</spring-cloud.version>
	</properties>

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

	<dependencyManagement>
		<dependencies>
			<dependency>
				<groupId>org.springframework.cloud</groupId>
				<artifactId>spring-cloud-dependencies</artifactId>
				<version>${spring-cloud.version}</version>
				<type>pom</type>
				<scope>import</scope>
			</dependency>
		</dependencies>
	</dependencyManagement>

	<build>
		<plugins>
			<plugin>
				<groupId>org.springframework.boot</groupId>
				<artifactId>spring-boot-maven-plugin</artifactId>
			</plugin>
		</plugins>
	</build>


</project>

三、启动类加上@EnableEurekaServer注解,开启Eureka服务发现的功能:

/** 
 * @Description:  高可用Eureka服务注册中心
 * @Author: WeiShiHuai  
 * @Date: 2018/9/7 11:45
 * Eureka Server的高可用实际上就是将自己做为服务向其他服务注册中心注册自己
 * 只要有一条边将节点连接,就可以进行信息传播与同步。可以采用两两注册的方式实现集群中节点完全对等的效果,实现最高可用性集群,任何一台注册中心故障都不会影响服务的注册与发现
*/
@SpringBootApplication
@EnableEurekaServer
public class SpringcloudHignAvailabilityEurekaServerApplication {

	public static void main(String[] args) {
		SpringApplication.run(SpringcloudHignAvailabilityEurekaServerApplication.class, args);
	}
}

四、新建三个配置文件

application-availability1.yml:

server:
  port: 3333  #服务端口号
eureka:
  client:
    service-url:
      #相互注册,组成一个集群,实现高可用
      defaultZone: http://availability2:4444/eureka/,http://availability3:5555/eureka/
  instance:
    #主机名
    hostname: availability1
spring:
  application:
    #服务名称
    name: eureka-availability-server

application-availability2.yml:

server:
  port: 4444  #服务端口号
eureka:
  client:
    service-url:
      #相互注册,组成一个集群,实现高可用
      defaultZone: http://availability1:3333/eureka/,http://availability3:5555/eureka/
  instance:
    #主机名
    hostname: availability2
spring:
  application:
    #服务名称
    name: eureka-availability-server

application-availability3.yml:

server:
  port: 5555  #服务端口号
eureka:
  client:
    service-url:
      #相互注册,组成一个集群,实现高可用
      defaultZone: http://availability1:3333/eureka/,http://availability2:4444/eureka/
  instance:
    #主机名
    hostname: availability3
spring:
  application:
    #服务名称
    name: eureka-availability-server

五、在C:\Windows\System32\drivers\etc\hosts文件中添加如下:

127.0.0.1 availability1
127.0.0.1 availability2
127.0.0.1 availability3

六、搭建服务提供者Eureka-Client:

首先引入pom.xml依赖:

<?xml version="1.0" encoding="UTF-8"?>
<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
	xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
	<modelVersion>4.0.0</modelVersion>

	<groupId>com.springcloud.wsh</groupId>
	<artifactId>springcloud_hign_availability_eureka_client</artifactId>
	<version>0.0.1-SNAPSHOT</version>
	<packaging>jar</packaging>

	<name>springcloud_hign_availability_eureka_client</name>
	<description>Spring Cloud Eureka高可用 客户端</description>

	<parent>
		<groupId>org.springframework.boot</groupId>
		<artifactId>spring-boot-starter-parent</artifactId>
		<version>1.5.2.RELEASE</version>
		<relativePath/> <!-- lookup parent from repository -->
	</parent>

	<properties>
		<project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
		<project.reporting.outputEncoding>UTF-8</project.reporting.outputEncoding>
		<java.version>1.8</java.version>
		<spring-cloud.version>Camden.SR6</spring-cloud.version>
	</properties>

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

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

	<dependencyManagement>
		<dependencies>
			<dependency>
				<groupId>org.springframework.cloud</groupId>
				<artifactId>spring-cloud-dependencies</artifactId>
				<version>${spring-cloud.version}</version>
				<type>pom</type>
				<scope>import</scope>
			</dependency>
		</dependencies>
	</dependencyManagement>

	<build>
		<plugins>
			<plugin>
				<groupId>org.springframework.boot</groupId>
				<artifactId>spring-boot-maven-plugin</artifactId>
			</plugin>
		</plugins>
	</build>


</project>

七、启动类加上@EnableDiscoveryClient注解,注册成为Eureka的一个服务提供者。

/** 
 * @Description:  高可用Eureka-服务提供者
 * @Author: WeiShiHuai  
 * @Date: 2018/9/7 14:01
*/
@SpringBootApplication
//注册成为Eureka客户端
@EnableDiscoveryClient
public class SpringcloudHignAvailabilityEurekaClientApplication {

	public static void main(String[] args) {
		SpringApplication.run(SpringcloudHignAvailabilityEurekaClientApplication.class, args);
	}
}

八、编写application.yml配置文件:

server:
  port: 6666  #服务端口号
eureka:
  client:
    service-url:
      #注册到availability1上,由于3个注册中心组成了集群,eureka-availability-client服务通过availability1同步给了与之互相注册的availability2和availability3。
      #两两注册的方式可以实现集群中节点完全对等的效果,实现最高可用性集群,任何一台注册中心故障都不会影响服务的注册与发现
      defaultZone: http://availability1:3333/eureka/
      #也可以指定多个注册中心
      #defaultZone: http://availability1:3333/eureka/,http://availability2:4444/eureka/,http://availability3:5555/eureka/
  instance:
    #主机名
    hostname: localhost
spring:
  application:
    #服务名称
    name: eureka-availability-client

注意,这里我只注册到availability1上,因为availability1、availability2、availability3两两相互注册,所以服务会同步到availability2,availability3上面。
 

九、采用java -jar的方式启动高可用Eureka Server

通过指定–spring.profiles.active=availability1来加载不同的配置文件。

Spring Cloud Eureka服务注册中心 多节点搭建(学习总结)

a. 首先cmd进入到项目根目录

//假设项目位于 F:\zuul-websocket\springcloud_eureka\springcloud_hign_availability_eureka_server

cd F:\zuul-websocket\springcloud_eureka\springcloud_hign_availability_eureka_server

b. 执行mvn install,执行完成后会在项目根目录生成target,通过cd target命令进入target目录,执行以下命令:

springcloud_hign_availability_eureka_server-0.0.1-SNAPSHOT.jar 对应为jar包名称,需要替换成具体生成的。

java -jar springcloud_hign_availability_eureka_server-0.0.1-SNAPSHOT.jar --spring.profiles.active=availability1

c. 以此方式依次启动availability2,availability3,

启动完成之后,浏览器访问http://localhost:3333/,http://localhost:4444/http://localhost:5555/如下图,可以看到服务注册中心相互进行了注册,并且都在available-replicas可用分片中。

Spring Cloud Eureka服务注册中心 多节点搭建(学习总结)

Spring Cloud Eureka服务注册中心 多节点搭建(学习总结)

 

Spring Cloud Eureka服务注册中心 多节点搭建(学习总结)

十、同样使用java -jar 方式启动Eureka Client

可以看到我们只指定了注册到availability1上面,但是因为注册中心高可用,服务进行同步,所以Eureka Client同样会被注册到availability2和availability3上面。

依次访问http://localhost:3333/http://localhost:4444/http://localhost:5555/,如下:

Spring Cloud Eureka服务注册中心 多节点搭建(学习总结)

十一、总结

a. 两两注册的方式可以实现集群中节点完全对等的效果,实现最高可用性集群,任何一台注册中心故障都不会影响服务的注册与发现。

Spring Cloud Eureka服务注册中心 多节点搭建(学习总结)

b. 首先需要注意必须开启服务注册中心的检索服务、注册自身服务的功能,否则会出现多节点的注册中心都不可用,全部服务都会出现在unavailable-replicas不可用分片中。

#要么不写,要么必须指定为true
eureka:
  client:
    fetch-registry: true #是否检索服务
    register-with-eureka: true #表示向Eureka注册自身服务

c.  application-availability1.yml、application-availability2.yml、application-availability3.yml三个配置文件中的application-name必须相同,否则也会出现注册中心不能高可用,出现在unavailable-replicas不可用分片中。

至此,高可用Eureka服务注册中心已经搭建完成,本文是笔者在温习SpringCloud的时候所写,仅供参考,大家一起学习,共同进步!

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请联系我们举报,一经查实,本站将立刻删除。

发布者:全栈程序员-站长,转载请注明出处:https://javaforall.net/184540.html原文链接:https://javaforall.net

(0)
全栈程序员-站长的头像全栈程序员-站长


相关推荐

  • foreach 遍历map_怎么遍历map集合

    foreach 遍历map_怎么遍历map集合一、原生jsforEach()和map()遍历共同点:1.都是循环遍历数组中的每一项。2.forEach()和map()里面每一次执行匿名函数都支持3个参数:数组中的当前项item,当前项的索引index,原始数组input。3.匿名函数中的this都是指Window。4.只能遍历数组。1.forEach()没有返回值。…

    2022年9月21日
    2
  • 又一个新的开始「建议收藏」

    又有一段时间没有进行整理和总结输出了,其实最近也没有闲着,也是一直在看书学习状态,看Java并发编程相关的知识,之前买了《Java并发编程的艺术》,去年看了一遍。最近又买了《Java并发编程实战》,两本书都挺好的,《Java并发编程的艺术》这本看了一遍,最近在看其中的一些章节,又有新的一些体会,新的认识。很多时候看了一遍的书,就不会在读第二遍,但是有些书适合读两遍以上,要不然根本无法理解书中的精…

    2022年2月27日
    42
  • 【python】蒙特卡洛树搜索(MCTS)简单实现

    过程包括以下四步:选择Selection:从根节点R开始,递归选择最优的子节点(后面会解释)直到达到叶子节点L。扩展Expansion:如果L不是一个终止节点(也就是,不会导致博弈游戏终止)那么就创建一个或者更多的字子节点,选择其中一个C。模拟Simulation:从C开始运行一个模拟的输出,直到博弈游戏结束。反向传播Backpropagation:用模拟的结果输…

    2022年4月4日
    55
  • java工作流详解

    java工作流详解什么是工作流?工作流:两个或两个以上的人,为了共同的目标,连续的以串行或并行的方式去完成某一业务。业务:工作流所指业务涵盖了与经营相关的活动。串行或并行:业务中的步骤也许以一步接着一步的方式进行,我们称之为串行;或者由不同的人或组合根据不同的情况处理,我们称之为并行。两个或两个以上的人:如工作流的名称所表达的含义,一个人处理的业务不称其为工作流,只有任务从一个人”流”向另一个人的时候,才有工作流。共同的目标:个体参与工作流必须是为了同一个工作目标。如果个体处于两个相互独立的项目之中,不会

    2022年5月16日
    78
  • python字典详解_python字典取值

    python字典详解_python字典取值字典字典的key和value一一对应的,字典是可变的,也是有序的(python3.6版本开始字典有序),可迭代的增加元素当key不存在时,直接赋值a={"status"

    2022年7月29日
    15
  • photoshop是目前图像处理理最顶级的一款软件_图片处理软件app

    photoshop是目前图像处理理最顶级的一款软件_图片处理软件app说到照片和图像编辑/操纵,真的没有更好的应用,AdobePS图象处理软件。 摄影师和创意工作室会同意这是总理的照片编辑应用期。不幸的是,PS图象处理软件还配备了一个陡峭的学习曲线和价格标签,我们必须考虑我们不会使用矫枉过正的1/3的功能包装成PS图象处理软件。 记住让我们看一些免费的在线和客户端安装的应用程序可以在互联网上看。 选项是巨大的所以我缩小了我的审查,只有最好的在线和客户端安装

    2022年4月20日
    60

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

关注全栈程序员社区公众号