前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >springboot-springcloud-Eureka服务中心的搭建

springboot-springcloud-Eureka服务中心的搭建

作者头像
知识浅谈
发布2020-10-29 10:59:43
8580
发布2020-10-29 10:59:43
举报
文章被收录于专栏:分享学习

首先解释一下集群与分布, 集群:就是把一个业务放到不同的服务器上,集群是一个比较有组织的架构,如果其中一个节点挂掉,其他节点可以顶上来,所以集群服务的健壮性比较好。 分布:简单来说就是,把一个大的业务拆分成多个小业务分别部署在不同的服务器上,如果一个节点挂掉,这个业务就挂了,如果这个业务还会被其他业务调用的话,那么另一个业务也挂了,所以其健壮性不好。

开始干活: 搭建eureka集群: 重要的说在前边:注意springboot和springcloud版本的匹配问题,可以百度,也可以使用我的pom.xml中给出的版本

开启 Eureka 集群配置后,服务启动时 Eureka Server 会将注册信息向其它 Eureka Server 进行同步,因此搭建高可用架构只需要将 Eureke Server 配置指向其它可用的 serviceUrl 即可。一会到配置文件中还会有解释

首先建立三个springboot的项目(这个要不会,找度娘吧) 这三个项目分别是eurekaA,eurekaB,eurekaC,这是三个 Eureka Server 的集群。

第一个Eureka server的配置如下:

代码语言:javascript
复制
package com.test.spring;
import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;
import org.springframework.cloud.netflix.eureka.server.EnableEurekaServer;
@SpringBootApplication
@EnableEurekaServer    //启动服务注册中心
public class SpringcloudMutilApplication {

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

}

application.yml

代码语言:javascript
复制
spring:
  application:
    name: eureka server
server:
  port: 8001

eureka:
  instance:
    hostname: eurekaA
  client:
    serviceUrl.defaultZone: http://eurekaB:8002/eureka/,http://eurekaC:8003/eureka/  #集群的情况下,服务器要相互注册互相指向对方
    register-with-eureka: false #服务注册 false 自己不注册到服务中心,因为自己就是注册中心,维护服务实例
    fetch-registry: false #服务发现  表示自己端就是注册中心 我的职责就是维护服务实例 false  自己不获取注册信息

pom.xml

代码语言:javascript
复制
<?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 https://maven.apache.org/xsd/maven-4.0.0.xsd">
    <modelVersion>4.0.0</modelVersion>
    <parent>
        <groupId>org.springframework.boot</groupId>
        <artifactId>spring-boot-starter-parent</artifactId>
        <version>2.3.4.RELEASE</version>
        <relativePath/> <!-- lookup parent from repository -->
    </parent>
    <groupId>com.test.spring</groupId>
    <artifactId>demo</artifactId>
    <version>1.0.0-SNAPSHOT</version>
    <properties>
        <java.version>1.8</java.version>
        <!--在使用springboot集成springcloud的时候,注意版本的匹配,否则运行失败-->
        <spring-cloud-version>Hoxton.SR8</spring-cloud-version>
    </properties>

    <dependencies>
        <!--springboot起步依赖-->
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-web</artifactId>
        </dependency>
        <!--集成springcloud-->
        <dependency>
            <groupId>org.springframework.cloud</groupId>
            <artifactId>spring-cloud-starter-netflix-eureka-server</artifactId>
        </dependency>

        <!--springtest起步依赖-->
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-test</artifactId>
            <scope>test</scope>
            <exclusions>
                <exclusion>
                    <groupId>org.junit.vintage</groupId>
                    <artifactId>junit-vintage-engine</artifactId>
                </exclusion>
            </exclusions>
        </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>
            <!--springboot打包插件-->
            <plugin>
                <groupId>org.springframework.boot</groupId>
                <artifactId>spring-boot-maven-plugin</artifactId>
            </plugin>
        </plugins>
    </build>

</project>

第二个Euraka server 项目启动文件:

代码语言:javascript
复制
package com.test.springboot;

import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;
import org.springframework.cloud.netflix.eureka.server.EnableEurekaServer;

@SpringBootApplication
@EnableEurekaServer    //启动服务注册中心
public class SpringbootMultiBApplication {

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

}

application.yml

代码语言:javascript
复制
spring:
  application:
    name: eureka server
server:
  port: 8002
eureka:
  instance:
    hostname: eurekaB
  client:
    register-with-eureka: false
    fetch-registry: false
    service-url:    #这个要指向其他的两个eureka server
      defaultZone: http://eurekaA:8001/eureka/,http://eurekaC:8003/eureka/

pom.xml文件:

代码语言:javascript
复制
<?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 https://maven.apache.org/xsd/maven-4.0.0.xsd">
	<modelVersion>4.0.0</modelVersion>
	<parent>
		<groupId>org.springframework.boot</groupId>
		<artifactId>spring-boot-starter-parent</artifactId>
		<version>2.3.4.RELEASE</version>
		<relativePath/> <!-- lookup parent from repository -->
	</parent>
	<groupId>com.test.springboot</groupId>
	<artifactId>springboot-multi-b</artifactId>
	<version>0.0.1-SNAPSHOT</version>
	<name>springboot-multi-b</name>
	<description>Demo project for Spring Boot</description>

	<properties>
		<java.version>1.8</java.version>
		<!--在使用springboot集成springcloud的时候,注意版本的匹配,否则运行失败-->
		<spring-cloud-version>Hoxton.SR8</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-netflix-eureka-server</artifactId>
		</dependency>

		<dependency>
			<groupId>org.springframework.boot</groupId>
			<artifactId>spring-boot-starter-test</artifactId>
			<scope>test</scope>
			<exclusions>
				<exclusion>
					<groupId>org.junit.vintage</groupId>
					<artifactId>junit-vintage-engine</artifactId>
				</exclusion>
			</exclusions>
		</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>

第三个Eureka server: springboot启动文件:

代码语言:javascript
复制
package com.test.springboot;

import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;
import org.springframework.cloud.netflix.eureka.server.EnableEurekaServer;

@SpringBootApplication
@EnableEurekaServer    //服务注册中心
public class SpringbootMulticApplication {

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

}

application.yml

代码语言:javascript
复制
spring.application.name=eureka server
server.port=8003
eureka.instance.hostname=eurekaC
eureka.client.register-with-eureka=false
eureka.client.fetch-registry=false
eureka.client.service-url.defaultZone=http://eurekaA:8001/eureka/,http://eurekaB:8002/eureka/

pom.xml

代码语言:javascript
复制
<?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 https://maven.apache.org/xsd/maven-4.0.0.xsd">
	<modelVersion>4.0.0</modelVersion>
	<parent>
		<groupId>org.springframework.boot</groupId>
		<artifactId>spring-boot-starter-parent</artifactId>
		<version>2.3.4.RELEASE</version>
		<relativePath/> <!-- lookup parent from repository -->
	</parent>
	<groupId>com.test.springboot</groupId>
	<artifactId>springboot-multic</artifactId>
	<version>0.0.1-SNAPSHOT</version>
	<name>springboot-multic</name>
	<description>Demo project for Spring Boot</description>

	<properties>
		<java.version>1.8</java.version>
		<!--在使用springboot集成springcloud的时候,注意版本的匹配,否则运行失败-->
		<spring-cloud-version>Hoxton.SR8</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-netflix-eureka-server</artifactId>
		</dependency>

		<dependency>
			<groupId>org.springframework.boot</groupId>
			<artifactId>spring-boot-starter-test</artifactId>
			<scope>test</scope>
			<exclusions>
				<exclusion>
					<groupId>org.junit.vintage</groupId>
					<artifactId>junit-vintage-engine</artifactId>
				</exclusion>
			</exclusions>
		</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>

三个服务器部署好之后分别启动, 然后访问localhost:8001就可以看到主页了,就表示服务集群部署成功。

本文参与 腾讯云自媒体同步曝光计划,分享自作者个人站点/博客。
原始发表:2020/10/26 ,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
相关产品与服务
微服务引擎 TSE
微服务引擎(Tencent Cloud Service Engine)提供开箱即用的云上全场景微服务解决方案。支持开源增强的云原生注册配置中心(Zookeeper、Nacos 和 Apollo),北极星网格(腾讯自研并开源的 PolarisMesh)、云原生 API 网关(Kong)以及微服务应用托管的弹性微服务平台。微服务引擎完全兼容开源版本的使用方式,在功能、可用性和可运维性等多个方面进行增强。
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档