注:本文章基于尚硅谷Springboot高级特性相关视频及资料进行编写,代码简单,较容易理解,若有问题或者源码资料获取可以在评论区留言或者联系作者!
导引
SpringCloud是一个分布式的整体解决方案,SpringCloud为开发者提供了在分布式系统(配置管理,服务发现,熔断,路由,微代理,控制总线,一次性Token,全局锁,leader选举,分布式session,集群状态)中快速构建的工具,使用SpringCloud的开发者可以快速启动服务或者构建应用,同时能快速和云平台资源进行对接;
一、整合SpringCloud
(1)SpringCloud创建工程
(2)在工程中创建eureka-server的项目,引入Eureka Server的依赖(用来做注册中心
)
(3)在工程中创建provider-ticket,引入Eureka Discovery(用来做服务提供者
)
注意;服务提供者和服务消费者都是注册中心;(可参考下面的图片)
(4)在工程中创建consumer-user,引入Eureka Discovery(用来做服务消费者
)
(5)在注册中心配置文件中进行配置,并在注册中心启动文件上使用@EnableEurakaServer注解启用注册中心的功能:
server:
PORT:8761 #服务的端口号
eureka:
instance:
hostname:euraka-server #euraka实例的主机名
client:
register-with-eureka:false #不把自己注册到euraka上
fetch-registry:false#不从euraka上来获取服务的注册信息
service-url:
defaultZone:http:localhost:8761/euraka/
(6)启动注册中心项目文件,并访问http:localhost:8761
二、服务注册
(1)在provider-ticket中编写TicketService文件
@Service
pulic class TicketService{
public String getTicket(){
return "《厉害了我的国》";
}
}
(2)提供Controller:
public class TicketController{
@Autowired
TicketService ticketService;
@GetMapping("/ticket)
public String getTicket(){
return ticketService.getTicket();
}
}
(3)将服务提供者注册到服务中心中,在服务中心的配置文件中进行编写:
server:
port:8001 #服务提供者的名字
spring:
application:
name:provider-ticket #服务提供者的名字
eureka:
instance:
prefer-ip-address:True #注册服务的时候,使用服务的ip地址
client:
service-url:
defaultZone:http:localhost:8761/euraka/
(4)提供服务提供方的项目和注册中心的项目,访问http:localhost:8001/ticket,可以获取数据
三、消费服务
(1)在consumer-user项目中编写UserController:
@RestController
public class UserController(){
@Autowired
RestTemlate testTemplate;//后面会编写这个类
@GetMapping("buy")
public String buyTicket(String name){
String s=restTemlate.getForObject("http://PROVIDER-TICKET/ticket",String.calss);
return name+"购买了"+s}
}
(2)在consumer-user项目中编写application.yaml配置文件:
spring:
application:
name:consumer-user
server:
port:8200
eureka:
instance:
prefer-ip-address:True #注册服务的时候,使用服务的ip地址
client:
service-url:
defaultZone:http:localhost:8761/euraka/
(3)在配置文件中使用@EnableDiscoveryClient注解开启服务发现功能,并使用RestTemplate发送HTTP请求
public class ConsumerUserAppplication(){
//主启动方法省略
@LoadBalanced //使用负载均衡机制
@Bean
public RestTemplate restTemplate(){
return RestTemplate();
}
}
(4)启动消费者进行测试,访问8200的buy方法:http:localhost:8200/buy?name=张三
总结:
这一节我们学习了SpringBoot分布式应用的第二部分,使用SpringCloud与SpringBoot整合。需要注意
使用SpringCloud的Eureka(服务发现),需要有注册中心,服务提供者和服务消费者,其中服务提供者和服务消费者都需要在注册中心注册进行调用,另外的可以在服务消费者开启负载均衡机制;
SpringBoot分布式学习到此为止!
如果感觉内容写的还不错的话,一键三连不迷路!!!!
后面将会更新更多学习内容,一起学习吧!!!!!!