1. springCloud框架
     是springboot的升级框架,其中包含很多子项目
     eureka注册中心, feign消费者,Hystrix熔断器,Zuul路由,
     Config全局配置中心,Bus消息总线,负载均衡策略
     
     底层基于httpClient实现,发布一个controller类
     
     spring家族:
      spring Framework5.0 --》 springboot2.0 --》springcloud Finchley.SR2
     
      springboot(微服务)相对于spring 约定优于配置2.
     创建springboot项目勾选cloud discovery --》Eureka Server    配置Eureka注册服务 Eureka Server
     server:
       port: 8761  #设置端口号    #配置eureka
     eureka:
       instance:
         hostname: localhost #配置实例地址
       client:
         register-with-eureka: false
         fetch-registry: false #阻止eureka自身项目注册到注册中心
         service-url:
           defaultZone: http://${eureka.instance.hostname}:${server.port}/eureka
       server:
           enable-self-preservation: false # 关闭自我保护机制 , 默认为true开启
  
   2.1在启动类上加@EnableEurekaServer //启用eureka服务端          3.配置生产者 Eureka注册发现 Eureka Discover
     server:
       port: 8764 #可以配置多个每个服务不同的端口号    #配置实例名称
     spring:
       application:
         name: springcloud-login #配置多个实例名称,springCloud集群    eureka:
       client:
         service-url:
           defaultZone: http://localhost:8761/eureka #要和eureka注册服务的路径保持一致  3.1在启动类上加@EnableEurekaClient //启用eureka客户端
     
     
 4.idea启动多个实例
     Edit Configurations--> single instance only 只能启动单个实力 将勾去掉
     Edit Configurations--> Allow running in parallel 允许并行启动 将勾选上 5.配置消费者Ribbon
     spring
     创建项目选择 Web  Eureka Discover   Ribbon
     配置文件
     server:
       port: 8080    spring:
       application:
         name: springcluodribbon    eureka:
       client:
         service-url:
           defaultZone: http://localhost:8761/eureka  5.1 在启动类上加@EnableEurekaClient 注解
   
   5.2 在启动类中将RestRestTemplate注入spring中
     // 将RestTemplate注入到spring容器中
     // LoadBalanced负载均衡默认为轮询
     // 通过注入在controller中就可以使用调用生产者实例
     @Bean
     @LoadBalanced
     RestTemplate restTemplate(){
         return new RestTemplate();
     }
     
   5.3 在controller中注入RestTemplate
         @Autowired
         private RestTemplate restTemplate;
     
   5.4 消费者调用生产者
     restTemplate.getForObject("http://生产者实例名/请求生产者的Controller方法", 返回值类型.class);
     
     
   5.5 @RequestBody可以将请求体中的JSON字符串绑定到相应的bean上
     6. 配置Feign客户端
     
     6.1 在配置文件中
         server:
           port: 8080        spring:
           application:
             name: springcloud-feign        eureka:
           client:
             service-url:
               defaultZone: http://localhost:8761/eureka
     
     6.2 在启动类上加注解
         @EnableEurekaClient
         @EnableFeignClients
         如果启动类不在根目录则需要扫面包(basePackages = "com.jk.*")
     
     6.3 创建service接口,并加上注解
         @FeignClient("生产者实例名") //指定生产者实例名
     
     6.4 在接口里面创建方法
         // 定义抽象方法,抽象方法没有方法体
         // 方法的定义和生产者controller中的方法保持一致
         // 包括请求的方式,传入的参数,方法定义和返回参数
         @GetMapping("/selectUser/{id}")
         public User selectUser(@PathVariable("id") Integer userId);
     
 7. 配置Hystrix熔断器
     7.1 创建熔断器类实现FeignClient接口
     7.2 添加注解@Compent 将熔断器类注入spring容器中
     7.3 注意添加@RequestMapping("/error")保持唯一
     7.4 开启熔断器机制
         feign:
           hystrix:
             enabled: true
             
 8. 配置SpringCloud Config 全局配置中心
     8.1 在git上创建配置文件远程仓库
     8.2 在将仓库目录克隆到本地,在目录中创建三个配置(环境名:dev开发(development environment)、test测试(testing environment)、pro正式(production environment))
         配置文件名称定义:实例名称-环境名称.yml
         配置信息如下:
         # testing environment
         server:
           port: 8092        eureka:
           client:
             service-url:
               defaultZone: http://localhost:8761/eureka
               
     8.3 创建config server项目选择Config Server 和 Eureka Discover
     8.4 在配置中配置信息如下:
         server:
           port: 8081        spring:
           application:
             name: springcloud-config
           cloud:
             config:
               server:
                 git:
                   # 配置git仓库路径,注意路径为HTTP
                   uri: https://github.com/liuc12580/springcloud-config.git
                   # 配置文件路径
                   search-paths: /
                   # git账号   当创建的仓库为private则需要账号密码
                   username:
                   # git密码
                   password:
               # 分支
               label: master
         
         # 往eureka注册中心中注册config server实例
         eureka:
           client:
             service-url:
               defaultZone: http://localhost:8761/eureka
     8.5 在启动上添加注解
         @EnableEurekaClient
         @EnableConfigServer
         
     8.6 配置server client项目,以生产者项目为例
         将配置文件的名称改为bootstrap.yml
         
     8.7 配置bootstrap.yml文件
         spring:
           application:
             name: springcloudprovider-login
           cloud:
             config:
               # 分支
               label: master
               # 环境
               profile: test
               # config server 服务发现
               discovery:
                 # 开启服务发现
                 enabled: true
                 # 配置config server 服务实例
                 service-id: springcloud-config    8.8 任务:
             搭建springCloud框架(eureka注册中心、eureka注册发现生产者、feign+hystrix消费者、config全局配置中心)
             配置全局配置中心自己为开发环境,组员1为测试环境,组员2为正式环境
             整合redis、mongodb、rabbitmq
             做一套增删改查