SpringBoot整合SpringCloud搭建分布式應用


什么是SpringCloud?

  SpringCloud是一個分布式的整體解決方案。SpringCloud為開發者提供了在分布式系統中快速構建的工具,使用SpringCloud可以快速的啟動服務或構建應用、同時能夠快速和雲平台資源進行對接。

SpringCloud分布式開發五大常用組件

  服務發現——Netflix Eureka

  客戶端負載均衡——Netflix Ribbon

  斷路器——NetFlix Hystrix

  服務網關——Netflix Zuul

  分布式配置——Spring Cloud Config

創建一個分布式應用

  1)New Project 選擇 Empty Project

  2)創建注冊中心應用

    2.1 New Model→Spring Initializr后面選擇導入Cloud Discovery的Eureka Server依賴。

    2.2 在啟動類上加入@EnableEurekaServer注解。

    2.3 創建application.yml,內容如下

server:
  port: 8761
eureka:
  instance:
    hostname: eureka-server # eureka實例的主機名
  client:
    register-with-eureka: false #不將自己注冊到eureka上
    fetch-registry: false #不從eureka上來獲取服務的注冊信息
    service-url:
      defaultZone: http://localhost:8761/eureka/

  3)創建服務提供者工程

    3.1 New Model→Spring Initializr后面選擇導入Cloud Discovery的Eureka Discovery依賴。

    3.2 創建一個Service

package com.example.providerticket.Service;

import org.springframework.stereotype.Service;

@Service
public class TickerService {

    public String getTicker(){
        return "《厲害了,我的國》";
    }

}

    3.3 創建一個Controller

@RestController
public class TickerController {

    @Autowired
    TickerService tickerService;

    @GetMapping("/ticket")
    public String getTicker(){
        return tickerService.getTicker();
    }

}

    3.4 創建配置application.yml

server:
  port: 8002
spring:
  application:
    name: provider-ticket
eureka:
  instance:
    prefer-ip-address: true #注冊服務的時候使用服務ip地址
  client:
    service-url:
      defaultZone: http://localhost:8761/eureka/

  4)創建服務消費者工程

    4.1 New Model→Spring Initializr后面選擇導入Cloud Discovery的Eureka Discovery依賴。

    4.2 配置啟動類

@EnableDiscoveryClient //開啟發現服務功能
@SpringBootApplication
public class ConsumerUserApplication {

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

    @LoadBalanced //啟用負載均衡機制
    @Bean
    public RestTemplate restTemplate(){
        return new RestTemplate();
    }

}

    4.3 配置application.yml

spring:
  application:
    name: consumer-user
server:
  port: 8200
eureka:
  instance:
    prefer-ip-address: true #注冊服務的時候使用服務ip地址
  client:
    service-url:
      defaultZone: http://localhost:8761/eureka/

    4.4 創建Controller並測試

@RestController
public class UserController {

    @Autowired
    RestTemplate restTemplate;

    @GetMapping("/buy")
    public String byTicket(String name){
        String forObject = restTemplate.getForObject("http://PROVIDER-TICKET/ticket", String.class);
        return name+"購買了"+forObject;
    }

}

  至此,一個SpringBoot整合SpringCloud的簡單分布式應用已搭建完畢。

  

 


免責聲明!

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



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