SpringCloud
springcloud是一个分布式的整体解决方案、springcloud为开发者提供了在分布式系统(配置管理、服务发现、熔断、路由、微代理、控制总线、一次性token、全局锁、leader选举、分布式session、集群状态)中快速构建的工具。
SpringCloud分布式开发五大常用组件
- 服务发现–Netflix Eureka
- 客服端负载均衡–Netflix Ribbon
- 断路器–Netflix Hystrix
- 服务网关–Netflix Zuul
- 分布式配置–Spring Cloud Config
搭建Eureka服务发现中心
1、书写一个yml文件来标明此为注册中心
server:
port: 8761
eureka:
instance:
hostname:euraka-server #euraka实例主机名
client:
register-with-eureka: false #不把自己注册到euraka上
fetch-registry: false #不从eureka上来获取服务的注册信息
service-url:
defaultZone: http://localhost:8761/eureka/
2、@EnableEurekaServer
可以将项目作为SpringCloud中的注册中心。
3、启动起来就看到了Eureka的界面。
搭建提供方
server:
port: 8001
spring:
application:
name: provider-name
eureka:
instance:
prefer-ip-address: true #注册服务的时候使用服务的IP地址
client:
service-url:
defaultZone: http://localhost:8761/eureka/
搭建消费者
spring:
application:
name: consumer--user
server:
port: 8200
eureka:
instance:
prefer-ip-address: true
client:
service-url:
defaultZone: http://localhost:8761/eureka/
RestTemplate
RestTemplate是Spring提供的用于访问Rest服务的客户端,RestTemplate提供了多种便捷访问远程Http服务的方法,能够大大提高客户端的编写效率
@LoadBalanced
在Spring Cloud中服务的发现与消费一文中首先使用了RestTemplate并且开启了客户端负载均衡功能,开启负载均衡很简单,只需要在RestTemplate的bean上再添加一个@LoadBalanced注解即可
@EnableDiscoveryClient//开启发现服务功能
@SpringBootApplication
public class ConsumerUserApplication {
public static void main(String[] args) {
SpringApplication.run(ConsumerUserApplication.class, args);
}
@LoadBalanced
@Bean
public RestTemplate restTemplate(){
return new RestTemplate();
}
}
@RestController
public class UserController {
@Autowired
RestTemplate restTemplate;
@GetMapping("/buy")
public String buyTicket(String name){
ResponseEntity<String> s=
restTemplate.getForEntity("http://PROVIDER-NAME/ticket",String.class);
return name+"购买了"+s.getBody();
}
}
来源:CSDN
作者:mufengmozi
链接:https://blog.csdn.net/mufengmozi/article/details/103343943