# 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