# spring_cloud
**Repository Path**: gudi/spring_cloud
## Basic Information
- **Project Name**: spring_cloud
- **Description**: spring_cloud
- **Primary Language**: Unknown
- **License**: Not specified
- **Default Branch**: master
- **Homepage**: None
- **GVP Project**: No
## Statistics
- **Stars**: 0
- **Forks**: 0
- **Created**: 2018-01-22
- **Last Updated**: 2020-12-19
## Categories & Tags
**Categories**: Uncategorized
**Tags**: None
## README
# spring_cloud
1 服务提供方 microservice-simple-provider-user
1 提供服务
2 注册服务到微服务组件Eureka
2.1 集成Eureka
org.springframework.cloud
spring-cloud-starter-eureka
1.3.0.RELEASE
2.2 添加配置文件
spring.application.name=microservice-provider-user
eureka.client.service-url.defaultZone=http://user:admin@localhost:8761/eureka/
eureka.instance.prefer-ip-address=true
2 服务消费者 microservice-simple-consumer-movie
1 调用服务提供者服务
2 注册服务到微服务组件Eureka
2.1 集成Eureka
org.springframework.cloud
spring-cloud-starter-eureka
1.3.0.RELEASE
2.2 添加配置文件
spring.application.name=microservice-simple-consumer-movie
eureka.client.service-url.defaultZone=http://user:admin@localhost:8761/eureka/
eureka.instance.prefer-ip-address=true
3 微服务注册与发现组件Eureka microservice-discovery-eureka
启用eureka配置文件添加@EnableDiscoveryClient
1 服务发现机制
服务消费者使用这种机制获取服务提供方网络信息服务
2 服务提供者,服务消费者,服务发现组件三者关系
1 各个微服务在启动时,将自己的网络地址等网络信息注册到服务发现组件中,服务发现组件会存储这些信息
2 服务消费者可以从服务发现组件获取服务提供者的网络信息,并使用该地址调用服务提供者的接口
3 各个微服务与服务发现组件使用一定机制(心跳)通信,服务发现组件长时间无法和微服务完成通信,就会注销该实例
4 微服务地址发生变更时,会重新注册到服务发现组件
3 服务发现组件具备:
1 服务注册表:服务发现组件的核心,记录各个微服务的网络信息
2 服务注册与服务发现
3 服务检查:使用心跳机制定时检测已注册的微服务,如果长时间无法访问注销该服务
4 Eureka Server的高可用
1 可以通过运行多个实例并相互注册的方式实现高可用,多节点实例会彼此增量的同步信息
4 Ribbon 实现客户端负载均衡
1 服务消费者整合Ribbon
1 pom文件添加spring-cloud-starter-ribbon,因为当前项目已集成spring-cloud-starter-eureka,该依赖已包含ribbon,所以无需再添加
2 LoadBalanced 添加这个注解,就可以为RestTemplate整合Ribbon,使其具备负载均衡的能力
@Bean
@LoadBalanced
public RestTemplate restTemplate(){
return new RestTemplate();
}
3 服务消费者可以通过虚拟主机名访问服务提供者的网络信息,虚拟主机名可以了理解为提供者的服务名称,默认情况下是一致的,
虚拟主机名不能包含 _之类的字符
restTemplate.getForObject("http://microservice-provider-user/user/"+id,User.class);
5 Feign 实现声明式REST接口调用
1 服务消费者整合Feign
pom文件:
org.springframework.cloud
spring-cloud-starter-feign
1.3.0.RELEASE
配置文件:
@EnableFeignClients
3 定义FeignClient接口,该接口对应提供者所有的接口请求,使用RequestMapping一一对应
@RequestMapping(value = "user/{id}",method = RequestMethod.GET)
public User findById(@PathVariable("id") Long id);
6 Hystrix 实现微服务的容错处理
1 pom:
org.springframework.cloud
spring-cloud-starter-hystrix
1.3.0.RELEASE
2 启动类上添加@EnableHystrix