springboot+eureka


server集群<--------->應用集群

 

 

1 搭建注冊中心(集群)

Maven

 <parent>
        <groupId>org.springframework.boot</groupId>
        <artifactId>spring-boot-starter-parent</artifactId>
        <version>2.0.1.RELEASE</version>
    </parent>
    <!-- 管理依賴 -->
    <dependencyManagement>
        <dependencies>
            <dependency>
                <groupId>org.springframework.cloud</groupId>
                <artifactId>spring-cloud-dependencies</artifactId>
                <version>Finchley.M7</version>
                <type>pom</type>
                <scope>import</scope>
            </dependency>
        </dependencies>
    </dependencyManagement>
    <dependencies>
        <!--SpringCloud eureka-server -->
        <dependency>
            <groupId>org.springframework.cloud</groupId>
            <artifactId>spring-cloud-starter-netflix-eureka-server</artifactId>
        </dependency>
    </dependencies>
    <!-- 注意: 這里必須要添加, 否者各種依賴有問題 -->
    <repositories>
        <repository>
            <id>spring-milestones</id>
            <name>Spring Milestones</name>
            <url>https://repo.spring.io/libs-milestone</url>
            <snapshots>
                <enabled>false</enabled>
            </snapshots>
        </repository>
    </repositories>

1.1

server1 配置文件

###服務端口號
server:
  port: 8100
###eureka 基本信息配置
eureka:
  instance:
    ###注冊到eurekaip地址
    hostname: 127.0.0.1
  client:
    serviceUrl:
      defaultZone: http://server2_IP:port/eureka/,http://server3_IP:port/eureka/,.....
###因為自己是為注冊中心,不需要自己注冊自己 
register-with-eureka: true
###因為自己是為注冊中心,不需要檢索服務
fetch-registry: true

server2 配置文件

###服務端口號
server:
  port: 8200
###eureka 基本信息配置
spring: 
 application: 
  name: eureka-server
eureka:
  instance:
    ###注冊到eurekaip地址
    hostname: 127.0.0.1
  client:
    serviceUrl:
      defaultZone: http://server1_IP:port/eureka/,http://server3_IP:port/eureka/,.....
###因為自己是為注冊中心,不需要自己注冊自己 
register-with-eureka: true
###因為自己是為注冊中心,不需要檢索服務
fetch-registry: true

 

ps: 

defaultZone:  指定地址 注冊到其他server,server之間互相注冊


 

3 啟動配的幾個server服務

@EnableEurekaServer
@SpringBootApplication
public class AppEureka {

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

}

 

現在可以登陸服務去看一下頁面效果

 

 

 

二  配置應用

1 maven

<parent>
        <groupId>org.springframework.boot</groupId>
        <artifactId>spring-boot-starter-parent</artifactId>
        <version>2.0.1.RELEASE</version>
    </parent>
    <!-- 管理依賴 -->
    <dependencyManagement>
        <dependencies>
            <dependency>
                <groupId>org.springframework.cloud</groupId>
                <artifactId>spring-cloud-dependencies</artifactId>
                <version>Finchley.M7</version>
                <type>pom</type>
                <scope>import</scope>
            </dependency>
        </dependencies>
    </dependencyManagement>
    <dependencies>
        <!-- SpringBoot整合Web組件 -->
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-web</artifactId>
        </dependency>
        <!-- SpringBoot整合eureka客戶端 -->
        <dependency>
            <groupId>org.springframework.cloud</groupId>
            <artifactId>spring-cloud-starter-netflix-eureka-client</artifactId>
        </dependency>
    </dependencies>
    <!-- 注意: 這里必須要添加, 否者各種依賴有問題 -->
    <repositories>
        <repository>
            <id>spring-milestones</id>
            <name>Spring Milestones</name>
            <url>https://repo.spring.io/libs-milestone</url>
            <snapshots>
                <enabled>false</enabled>
            </snapshots>
        </repository>
    </repositories>
View Code

 

2 配置文件 指定注冊到哪個server ,name 指定自己在注冊中心叫什么名字

ps :若是一個應用部署在兩台機器 那么name:app-xxxxx指定相同 即可輪訓訪問應用

###服務啟動端口號
server:
  port: 8000
###服務名稱(服務注冊到eureka名稱)  
spring:
    application:
        name: app-itmayiedu-member
###服務注冊到eureka地址
eureka:
  client:
    service-url:
           defaultZone: http://localhost:8100/eureka,...

           
###因為該應用為注冊中心,不會注冊自己
    register-with-eureka: true
###是否需要從eureka上獲取注冊信息
    fetch-registry: true

 

3 啟動服務(只提供服務:無法調用別人的服務)

@SpringBootApplication
@EnableEurekaClient
public class AppMember {

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

}

 

4 調用其他服務(修改了啟動方式)

@SpringBootApplication
@EnableEurekaClient
public class AppOrder {

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

    @Bean
    @LoadBalanced
    RestTemplate restTemplate() {
        return new RestTemplate();
    }

 

@LoadBalanced就能讓這個RestTemplate在請求時擁有客戶端負載均衡的能力

 

 

public String getOrder() {
        // order 使用rpc 遠程調用技術 調用 會員服務
        String memberUrl = "http://app-itmayiedu-member/getMember";
        String result = restTemplate.getForObject(memberUrl, String.class);
        System.out.println("會員服務調用訂單服務,result:" + result);
        return result;
    }

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM