溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊(cè)×
其他方式登錄
點(diǎn)擊 登錄注冊(cè) 即表示同意《億速云用戶服務(wù)條款》

Spring cloud中怎么配置項(xiàng)目結(jié)構(gòu)實(shí)現(xiàn)Eureka服務(wù)

發(fā)布時(shí)間:2021-11-16 11:13:25 來源:億速云 閱讀:143 作者:iii 欄目:大數(shù)據(jù)

本篇內(nèi)容主要講解“Spring cloud中怎么配置項(xiàng)目結(jié)構(gòu)實(shí)現(xiàn)Eureka服務(wù)”,感興趣的朋友不妨來看看。本文介紹的方法操作簡(jiǎn)單快捷,實(shí)用性強(qiáng)。下面就讓小編來帶大家學(xué)習(xí)“Spring cloud中怎么配置項(xiàng)目結(jié)構(gòu)實(shí)現(xiàn)Eureka服務(wù)”吧!

父項(xiàng)目管理

首先,我們?cè)趧?chuàng)建投放系統(tǒng)之前,先看一下我們的工程結(jié)構(gòu):

Spring cloud中怎么配置項(xiàng)目結(jié)構(gòu)實(shí)現(xiàn)Eureka服務(wù)

mscx-ad-sponsor就是我們的廣告投放系統(tǒng)。如上結(jié)構(gòu),我們需要首先創(chuàng)建一個(gè)Parent Project mscx-ad

來編寫父項(xiàng)目的pom,來管理我們的統(tǒng)一依賴信息。

<?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>
    <packaging>pom</packaging>
    <modules>
        <module>mscx-ad-discovery</module>
        <module>mscx-ad-zuul</module>
        <module>mscx-ad-gateway</module>
        <module>mscx-ad-discovery-nacos</module>
        <module>mscx-ad-common</module>
        <module>mscx-ad-db</module>
        <module>mscx-ad-sponsor</module>
        <module>mscx-ad-search</module>
        <module>mscx-ad-feign-sdk</module>
    </modules>

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

    <groupId>com.sxzhongf</groupId>
    <artifactId>mscx-ad</artifactId>
    <version>1.0-SNAPSHOT</version>
    <name>分布式廣告系統(tǒng)</name>
    <description>基于Spring Cloud Alibaba 實(shí)現(xiàn)的分布式廣告系統(tǒng)</description>

    <properties>
        <java.version>1.8</java.version>
        <spring-cloud.version>Greenwich.SR2</spring-cloud.version>
    </properties>

    <dependencies>
        <dependency>
            <groupId>org.projectlombok</groupId>
            <artifactId>lombok</artifactId>
        </dependency>
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-test</artifactId>
            <scope>test</scope>
        </dependency>
       <!--Spring cloud 監(jiān)控端點(diǎn)管理依賴-->
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-actuator</artifactId>
        </dependency>
    </dependencies>
		<!--定義Spring Cloud 主版本-->
    <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>

    <!--定義遠(yuǎn)程maven倉庫-->
    <repositories>
      	<!-- Spring 中央倉庫 -->
        <repository>
            <id>spring-milestones</id>
            <name>Spring Milestones</name>
            <url>https://repo.spring.io/milestone</url>
            <snapshots>
                <enabled>false</enabled>
            </snapshots>
        </repository>
        <!-- Ali 中央倉庫 -->
        <repository>
            <id>alibaba-milestones</id>
            <name>ali Milestones</name>
            <url>http://maven.aliyun.com/nexus/content/groups/public/</url>
            <snapshots>
                <enabled>false</enabled>
            </snapshots>
        </repository>
    </repositories>
		<!--項(xiàng)目編譯插件-->
    <build>
        <plugins>
            <plugin>
                <groupId>org.springframework.boot</groupId>
                <artifactId>spring-boot-maven-plugin</artifactId>
            </plugin>
        </plugins>
    </build>

</project>

服務(wù)發(fā)現(xiàn)

Eureka
  • Eureka Server (提供服務(wù)的注冊(cè)和發(fā)現(xiàn))

  • Eureka Client

    Spring cloud中怎么配置項(xiàng)目結(jié)構(gòu)實(shí)現(xiàn)Eureka服務(wù)

    • Service provider (服務(wù)提供方,將自身注冊(cè)到server上,從而讓Eureka Server保存provider的元數(shù)據(jù),讓其他的服務(wù)消費(fèi)者可以找到當(dāng)前服務(wù))

    • Service Consumer(服務(wù)消費(fèi)方,從Eureka Server上獲取注冊(cè)的服務(wù)列表,從而消費(fèi)服務(wù))

創(chuàng)建project mscx-ad-discovery, 然后使用SpringBoot項(xiàng)目的三部曲(加依賴,加注解,改配置)

編寫POM,重點(diǎn)關(guān)注依賴spring-cloud-starter-eureka-server
<?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">
    <parent>
        <artifactId>mscx-ad</artifactId>
        <groupId>com.sxzhongf</groupId>
        <version>1.0-SNAPSHOT</version>
        <relativePath>../pom.xml</relativePath>
    </parent>
    <modelVersion>4.0.0</modelVersion>
    <packaging>jar</packaging>

    <groupId>com.sxzhongf</groupId>
    <artifactId>mscx-ad-discovery</artifactId>
    <version>1.0-SNAPSHOT</version>
    <name>服務(wù)發(fā)現(xiàn)組件</name>
    <description>先使用eureka實(shí)現(xiàn),后續(xù)會(huì)使用nacos替換掉</description>

    <dependencies>
        <dependency>
            <groupId>org.springframework.cloud</groupId>
            <!--<artifactId>spring-cloud-netflix-eureka-server</artifactId>-->
            <artifactId>spring-cloud-starter-eureka-server</artifactId>
            <version>1.2.7.RELEASE</version>
        </dependency>
    </dependencies>

    <build>
        <plugins>
            <plugin>
                <groupId>org.springframework.boot</groupId>
                <artifactId>spring-boot-maven-plugin</artifactId>
            </plugin>
        </plugins>
    </build>
</project>
添加注解(@EnableEurekaServer)
@SpringBootApplication
@EnableEurekaServer
public class DiscoveryApplication {
    public static void main(String[] args) {
        SpringApplication.run(DiscoveryApplication.class, args);
    }
}
改配置

單點(diǎn)

spring:
  application:
    name: ad-discovery-server
server:
  port: 8888
eureka:
  instance:
    hostname: localhost #單機(jī)版
  client:
    fetch-registry: false #是否從eureka server獲取注冊(cè)信息
    register-with-eureka: false #注冊(cè)自己到eureka
    service-url:
      defaultZone: http://${eureka.instance.hostname}:${server.port}/eureka/

集群

測(cè)試的時(shí)候,需要修改hosts文件

zhangpandeMacBook-Pro:etc zhangpan$ cat hosts
##
...
##
127.0.0.1	localhost
127.0.0.1	server1
127.0.0.1	server2
127.0.0.1	server3
::1             localhost

然后修改application.yml

spring:
  application:
    name: ad-discovery
  profiles: server1
server:
  port: 7777
eureka:
  instance:
    hostname: server1
    prefer-ip-address: false
  client:
    service-url:
      defaultZone: http://server2:8888/eureka/,http://server3:9999/eureka/

---
spring:
  application:
    name: ad-discovery
  profiles: server2
server:
  port: 8888
eureka:
  instance:
    hostname: server2
    prefer-ip-address: false
  client:
    service-url:
      defaultZone: http://server1:7777/eureka/,http://server3:9999/eureka/

---
spring:
  application:
    name: ad-discovery
  profiles: server3
server:
  port: 9999
eureka:
  instance:
    hostname: server3
    prefer-ip-address: false
  client:
    service-url:
      defaultZone: http://server2:8888/eureka/,http://server1:7777/eureka/

啟動(dòng)集群測(cè)試:

  • 配置啟動(dòng)profile / java -jar mscx-ad-discovery.jar --spring.profiles.active=server1 Spring cloud中怎么配置項(xiàng)目結(jié)構(gòu)實(shí)現(xiàn)Eureka服務(wù)

  • 效果展示 Spring cloud中怎么配置項(xiàng)目結(jié)構(gòu)實(shí)現(xiàn)Eureka服務(wù)

到此,相信大家對(duì)“Spring cloud中怎么配置項(xiàng)目結(jié)構(gòu)實(shí)現(xiàn)Eureka服務(wù)”有了更深的了解,不妨來實(shí)際操作一番吧!這里是億速云網(wǎng)站,更多相關(guān)內(nèi)容可以進(jìn)入相關(guān)頻道進(jìn)行查詢,關(guān)注我們,繼續(xù)學(xué)習(xí)!

向AI問一下細(xì)節(jié)

免責(zé)聲明:本站發(fā)布的內(nèi)容(圖片、視頻和文字)以原創(chuàng)、轉(zhuǎn)載和分享為主,文章觀點(diǎn)不代表本網(wǎng)站立場(chǎng),如果涉及侵權(quán)請(qǐng)聯(lián)系站長(zhǎng)郵箱:is@yisu.com進(jìn)行舉報(bào),并提供相關(guān)證據(jù),一經(jīng)查實(shí),將立刻刪除涉嫌侵權(quán)內(nèi)容。

AI