SpringCloud入门实战五

一:SpringCloud之Hystrix断路器

  1.  分布式系统面临的问题
     复杂分布式体系结构中的应用程序有数十个依赖关系,每个依赖关系在某些时候将不可避免的失败。
     SpringCloud入门实战五_第1张图片    
  2. 什么是Hystrix?
     SpringCloud入门实战五_第2张图片   
  3. 什么是服务熔断?
     SpringCloud入门实战五_第3张图片 
     

二:将Hystrix熔断器整合到项目中去(参考之前的8001提供者部门

       微服务,这个新的提供者微服务加了熔断器)

  1.  创建子模块microservicecloud-provider-dept-hystrix-8001微服务
      SpringCloud入门实战五_第4张图片   
  2. 在pom.xml中添加依赖(这个文件与之前的8001基本没有区别,只有新增了spring-cloud-starter-hystrix依赖)
      
    
      4.0.0
      
        com.topcheer
        microservicecloud
        0.0.1-SNAPSHOT
      
      microservicecloud-provider-dept-hystrix-8001
     
     	
     	
          org.springframework.cloud
          spring-cloud-starter-hystrix
         
          
         
           com.topcheer
           microservicecloud-api
           ${project.version}
    	
    	
    	       junit
    	       junit
    	
    	
    	       mysql
    	       mysql-connector-java
    	
    	
    	       com.alibaba
    	       druid
    	
    	
    	       ch.qos.logback
    	       logback-core
    	
    	
    	       org.mybatis.spring.boot
    	       mybatis-spring-boot-starter
    	
    	
    			org.springframework.boot
    			spring-boot-starter-jetty
    	
    	
    	       org.springframework.boot
    	       spring-boot-starter-web
    	
    	
    	       org.springframework.boot
    	       spring-boot-starter-test
    	
    	
    	
    	       org.springframework
    	       springloaded
    	
    	
    	       org.springframework.boot
    	       spring-boot-devtools
    	
    	
    	
          org.springframework.cloud
          spring-cloud-starter-eureka
         
        
          org.springframework.cloud
          spring-cloud-starter-config
         
        
        
    	       org.springframework.boot
    	       spring-boot-starter-actuator
    	
      
    
  3. 修改application.yml文件内容(这个文件与之前的8001基本没有区别,只有instance-id名称编号了)
     
    server:
      port: 8001 #设置端口为8001
      
    mybatis:
      config-location: classpath:mybatis/mybatis.cfg.xml  #设置mybatis配置文件所在的路径
      type-aliases-package: com.topcheer.springcloud.entities #扫描所有实体类所在包
      mapper-locations:
      - classpath:mybatis/mapper/**/*.xml #扫描mybatis的映射文件
      
    spring:
      application:
        name: microservicecloud-dept
      datasource:
        type: com.alibaba.druid.pool.DruidDataSource #设置当前数据源
        driver-class-name: org.gjt.mm.mysql.Driver #设置mysql驱动包
        url: jdbc:mysql://localhost:3306/cloudDB01 #设置数据库名称
        username: root
        password: 897570
        dbcp2:
          min-idle: 5 #设置数据库连接池的最小维持连接数
          initial-size: 5 #设置初始化链接数
          max-total: 5 #设置最大连接数
          max-wait-millis: 200 #设置链接获取的最大超时时间  
    
    eureka: #这个就是将8001服务端注册进入注册中心,下面的就是注册中心的注册地址
      client:
        service-url:
          defaultZone: http://eureka7001.com:7001/eureka/,http://eureka7002.com:7002/eureka/,http://eureka7003.com:7003/eureka/
      instance: 
         instance-id: microservicecloud-dept8001-hystrix #自定义服务名称信息
         prefer-ip-address: true #访问路径可以显示IP地址     
     
    info:
      app.name: topcheer-microservicecloud
      company.name: com.topcheer
      build.artifactId: $project.artifactId$
      build.version: $project.version$   
       
    SpringCloud入门实战五_第5张图片
  4. 将之前8001的java代码拷贝过来,部分进行修改
     SpringCloud入门实战五_第6张图片   
     a:修改DeptController.java类,我们对这个类中的get方法进行改造,我们在调用
           这个方法进行查询的时候,传递一个参数,数据库中查询不到,如果返回null,
           那么我们就人为的抛出一个异常,那么我们这里就可以使用hystrix去解决这个
           问题,代码如下:
           SpringCloud入门实战五_第7张图片
     b:修改启动类DeptProvider_hystrix_8001_App.java
            SpringCloud入门实战五_第8张图片       
  5. 测试,首先启动3个Eureka的注册中心,再启动microservicecloud-provider-dept-hystrix-8001这个新建的带Hystrix
    的提供者微服务,最后启动我们的80消费者微服务。
     a:访问7001
            
     b:访问我们刚刚创建的get方法,先访问一个存在的数据
           SpringCloud入门实战五_第9张图片
     c:访问一个不存在的数据
           SpringCloud入门实战五_第10张图片

三:Hystrix之服务降级

           c:修改microservicecloud-consumer-dept-feign整合了feign的消费者微服务中application.yml文件
                 SpringCloud入门实战五_第11张图片
           d:测试,首先启动3个Eureka的服务,再启动microservicecloud-provider-dept-8001这个没有加Hystrix的
                提供者微服务,以及后面启动microservicecloud-consumer-dept-feign消费者微服务
                 ①首先正常访问get方法
                      SpringCloud入门实战五_第12张图片  
                  ②下面我们故意关闭microservicecloud-provider-dept-8001微服务
                        SpringCloud入门实战五_第13张图片

  1.  什么叫做服务降级?(并且上面的Hystrix的@HystrixCommand方式会导致,每多一个方法,就需要
      创建一个fallbackMethod对应的方法,比较麻烦)。
         
      SpringCloud入门实战五_第14张图片
      简单点说:就是比如现在我们存在3个微服务A,B,C,现在微服务A访问量特别大,销耗的内存特别大,导致
                        整体服务器内存不够,那么现在为了维持服务器的运行不会崩溃,那么我们可以先将微服务C先
                        关掉,等待A的访问量小了,再开启C.
      注意:服务降级处理是在客户端完成的,与服务端没有关系。
  2.  实现步骤如下:
     a:修改microservicecloud-api工程,根据已有的DeptClientService接口,新建一个实现了FallbackFactory接口的类。
           SpringCloud入门实战五_第15张图片   
           SpringCloud入门实战五_第16张图片
      b:修改DeptClientService这个对应提供者服务端方法调用的接口类
            SpringCloud入门实战五_第17张图片   

四:服务监控之hystrixDashboard

  1.  简介
                
  2. 项目实例步骤
     ⑴新建微服务microservicecloud-consumer-hystrix-dashboard
         SpringCloud入门实战五_第18张图片
     ⑵修改pom.xml文件,添加依赖
         
    
      4.0.0
      
        com.topcheer
        microservicecloud
        0.0.1-SNAPSHOT
      
      microservicecloud-consumer-hystrix-dashboard
    
    		
    		
    		       org.springframework.cloud
    		       spring-cloud-starter-hystrix
    		
    		
    		       org.springframework.cloud
    		       spring-cloud-starter-hystrix-dashboard
    		
             
    	    
    	       com.topcheer
    	       microservicecloud-api
    	       ${project.version} 
    	    
    	     
    	       org.springframework.boot
    	       spring-boot-starter-web
    	    
    	    
    		
    		       org.springframework
    		       springloaded
    		
    		
    		       org.springframework.boot
    		       spring-boot-devtools
    		
    		
    		
    		       org.springframework.cloud
    		       spring-cloud-starter-eureka
    		
    		
    		       org.springframework.cloud
    		       spring-cloud-starter-ribbon
    		
    		
    		       org.springframework.cloud
    		       spring-cloud-starter-config
    		
      
    

    ⑶修改application.yml文件
         SpringCloud入门实战五_第19张图片
     ⑷创建启动类DeptConsumer_DashBoard_App
         SpringCloud入门实战五_第20张图片SpringCloud入门实战五_第21张图片
     ⑸我们需要监控所有的提供者微服务,那么我们需要在这些微服务中进行配置,都要添加一个actuator依赖
      (8001,8002,8003都添加   即可)
          SpringCloud入门实战五_第22张图片
      ⑹下面我们单独启动刚刚新建的这个microservicecloud-consumer-hystrix-dashboard微服务,看看是否可以正常启动
          SpringCloud入门实战五_第23张图片

  3. 上面可以发现我们的hystrix-dashboard已经成功启动,下面我们可以启动其他微服务进行测试了
     a:首先启动3个Eureka注册中心,再启动带hystrix熔断降级的微服务microservicecloud-provider-dept-hystrix-8001,
           最后启动我们新建的microservicecloud-consumer-hystrix-dashboard微服务
     b:效果
           SpringCloud入门实战五_第24张图片
     c:那么现在我们要使用hystrixdashboard去监控这个8001提供者微服务,该如何做呢?
           地址:http://ip:要监控微服务的端口/hystrix.stream
           SpringCloud入门实战五_第25张图片
      d:让效果图形化
           SpringCloud入门实战五_第26张图片
           SpringCloud入门实战五_第27张图片  
      e:  图形化的效果如下
          SpringCloud入门实战五_第28张图片

  4. 上面图形化的结果看不懂怎办?
      a:7种颜色一一对应
          SpringCloud入门实战五_第29张图片
      b:一圈一线
           SpringCloud入门实战五_第30张图片
           
           
       c:下面我们多次通过http://localhost:8001/dept/get/1地址访问,看看图形变化
             SpringCloud入门实战五_第31张图片
      d:图形中含义
            SpringCloud入门实战五_第32张图片
            SpringCloud入门实战五_第33张图片

 

文章目录

你可能感兴趣的:(微服务,maven,springboot,hystrix)