springCloud框架搭建详解


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
            做一套增删改查
            
            
    

你可能感兴趣的:(springCloud框架搭建详解)