什麼是SpringCloud? SpringCloud是一個分散式的整體解決方案。SpringCloud為開發者提供了在分散式系統中快速構建的工具,使用SpringCloud可以快速的啟動服務或構建應用、同時能夠快速和雲平臺資源進行對接。 SpringCloud分散式開發五大常用組件 服務發現——N ...
什麼是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的簡單分散式應用已搭建完畢。