首页 > Python基础教程 >
-
ASP.net教程之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的简单分布式应用已搭建完毕。