博客信息

SpringCloud小结

发布时间:『 2019-04-30 09:05』  博客类别:SpringCloud  阅读(1055)

花了一周时间学习了下SpringCloud,这里做一个小结。

各组件

SpringCloud主要包括以下几块

 

核心组件

Eureka:服务提供者注册中心;

Ribbon服务消费者相关组件,可直接通过服务提供者名称,调用提供者所注册的服务,摒弃IP+Port的方式;

Hystrix:服务提供者组件,主要作用服务熔断服务降级,解决服务调用时系统阻塞的情况(即解决服务雪崩效应);

Zuul:用户访问服务消费者前加锁,提高微服务架构系统的安全性;域名+Port映射到IP2+port

Config:解决分布式多模块开发,配置文件统一管理问题,主要是方便维护;

 

扩展组件

Feign:基于Ribbon的一个组件,对Ribbon公用的代码进行抽取,形成一个接口,在消费者中直接注入即可使用,不需要在消费者服务者进行硬编码了;

Dashboard:用来监控集成了Hystrix的消费者,不单独使用,通常与turbine组合使用;

Turbine:基于Dashboard,与Dashboard组合使用,用来监控Hystrix消费者集群;


 

SpringCloud项目结构

除却父工程是maven项目,packagingpom的形式;其它Module都是SpringBoot项目,packagingjar的形式;

Microservice(父工程)

microservice-common

microservice-eureka-server-2001

microservice-eureka-server-2002

microservice-eureka-server-2003

microservice-student-consumer-80

microservice-student-consumer-feign-80

microservice-student-consumer-hystrix-dashboard-90

microservice-student-consumer-hystrix-turbine-91

microservice-student-provider-1001

microservice-student-provider-1002

microservice-student-provider-1003

microservice-student-provider-hystrix-1004

microservice-student-provider-hystrix-1005

microservice-student-provider-hystrix-1006

microservice-zuul-3001

microservice-config-server-4001

microservice-config-client-5001

microservice-eureka-server-config-2004

microservice-eureka-server-config-2005

microservice-student-provider-config-1007

microservice-student-provider-config-1006

 

各工程的用途

microservice-common

存放通用的实体类或工具类;

消费者若是使用Feign时所用接口也许在此定义;

 

microservice-eureka-server-*

搭建Eureka单机以及集群服务器所用;

 

microservice-student-consumer-80

消费者直接调用服务者,消费者通过Ribbon调用服务者,两种方式均在此有所体现;

 

microservice-student-consumer-feign-80

基于Feign的一个消费者,在消费者中直接注入common模块中的接口即可调用服务者接口;

 

microservice-student-provider-*

服务提供者集群

 

microservice-student-provider-hystrix-*

服务熔断演示、服务熔断监控、服务熔断集群监控

 

microservice-student-consumer-hystrix-dashboard-90

服务熔断监控仪表盘(与其它Module之间没有调用关系,可以看成独立于父工程的Module

 

microservice-student-consumer-hystrix-turbine-91

服务熔断集群监控组件,辅助Dashboard监控Hystrix

 

microservice-zuul-3001

路由网关服务


microservice-config-server-4001

配置中心服务端


microservice-config-client-5001

配置中心客户端(SpringCloud Config入门级的讲解)


microservice-eureka-server-config-*

配置中心客户端与Eureka整合


microservice-student-provider-config-*

配置中心客户端与与服务提供者整合

 

图解分布式服务

小李飞刀

常用注解及yml配置

microservice-common

@SpringBootApplication(exclude={DataSourceAutoConfiguration.class, HibernateJpaAutoConfiguration.class})
因为该Module不访问数据库,但是SpringBoot默认又会加载数据库,所以要加此注解,默认排除数据库相关配置信息加载

@FeignClient(value="MICROSERVICE-STUDENT",fallbackFactory=StudentClientFallbackFactory.class)
Feign与Hystrix整合所用,用来对熔断降级代码进行抽取


microservice-eureka-server-*

@EnableEurekaServer
启动类上开启注册中心服务
eureka:
  instance:
    hostname: localhost  #eureka客户端主机实例名称
    appname: microservice-student  #客户端服务名
    instance-id: microservice-student:1001 #客户端实例名称
    prefer-ip-address: true #显示IP
  client:
    service-url:
      defaultZone: http://localhost:2001/eureka   #把服务注册到eureka注册中心

microservice-student-consumer-80

@LoadBalanced  // 引入ribbon负载均衡
在配置类中添加此注解,由Spring管理RestTemplate,因为SpringCloud底层就是通过restful进行服务之间的调用
eureka:
  client:
    register-with-eureka: false #false 由于注册中心的职责就是维护服务实例,它并不需要去检索服务,所以也设置为false
    service-url:
      defaultZone: http://eureka2001.javaxl.com:2001/eureka/,http://eureka2002.javaxl.com:2002/eureka/,http://eureka2003.javaxl.com:2003/eureka/

microservice-student-consumer-feign-80

@EnableEurekaClient
开启Eureka客户端调用服务
@EnableFeignClients(value = "com.javaxl.*.*")
启用Feign客户端调用,由于只有Feign的接口,没有被实现,不能直接注入到controller中,需要加入包扫描
#  feign整合Hystrix
feign:
  hystrix:
    enabled: true
#  Ribbon的超时时长设置后才能设置Hystrix的
ribbon:
  ReadTimeout: 10000
  ConnectTimeout: 9000
hystrix:
  command:
    default:
      execution:
        isolation:
          thread:
            timeoutInMilliseconds: 3000

microservice-student-provider-*

@EntityScan("com.javaxl.*.*")
服务提供者读取不到common Module下的实体类,需要扫描
@EnableEurekaClient
注册中心服务启动
eureka:
  instance:
    # 单机 hostname: localhost #eureka注册中心实例名称
    hostname: eureka2001.javaxl.com # 集群
  client:
    register-with-eureka: false     #false 由于该应用为注册中心,所以设置为false,代表不向注册中心注册自己。
    fetch-registry: false     #false 由于注册中心的职责就是维护服务实例,它并不需要去检索服务,所以也设置为false
    service-url:
      defaultZone: http://eureka2002.javaxl.com:2002/eureka/,http://eureka2003.javaxl.com:2003/eureka/ # 集群
      #单机defaultZone: http://${eureka.instance.hostname}:${server.port}/eureka/       #设置与Eureka注册中心交互的地址,查询服务和注册服务用到

microservice-student-provider-hystrix-*

#使用Hystrix不整合Feign的情况,超时设置放在Hystrix这边
hystrix:
  command:
    default:
      execution:
        isolation:
          thread:
            timeoutInMilliseconds: 3000
@EnableCircuitBreaker
启动类加此注解,代表启用断路器的意思
/**
     * 测试Hystrix服务降级
     *  Controller加此,表明服务降级具体处理方案
     * @return
     * @throws InterruptedException
     */
    @ResponseBody
    @GetMapping(value="/getInfo")
    @HystrixCommand(fallbackMethod="getInfoFallback")
    public Map<String,Object> getInfo() throws InterruptedException{
        Thread.sleep(2000);
        Map<String,Object> map=new HashMap<String,Object>();
        map.put("code", 200);
        map.put("info", "业务数据xxxxx");
        return map;
    }

    public Map<String,Object> getInfoFallback() throws InterruptedException{
        Map<String,Object> map=new HashMap<String,Object>();
        map.put("code", 500);
        map.put("info", "系统出错,稍后重试");
        return map;
    }

microservice-student-consumer-hystrix-dashboard-90

@EnableHystrixDashboard
启动类加此,代表启用Hystrix监控仪表盘

microservice-student-consumer-hystrix-turbine-91

turbine:
  app-config: microservice-student   # 指定要监控的应用名称,以逗号隔开
  clusterNameExpression: "'default'" #表示集群的名字为default
spring:
  application:
    name: turbine
@EnableTurbine
启动类加此注解,表明启用turbine

microservice-zuul-3001

@EnableZuulProxy
启动类加此注解,表明启用路由代理
zuul:
  routes:
    studentServer.serviceId: microservice-student
    studentServer.path: /studentServer/**
  ignored-services: "*"
  prefix: /javaxl

配置映射关系,拦截原始url服务,映射后的url加前缀



关键字:     SpringCloud  

备案号:湘ICP备19000029号

Copyright © 2018-2019 javaxl晓码阁 版权所有