hystrix 全局熔断_Hystrix

第243次(Hystrix)

学习主题:Hystrix

采用RebbitMQ收集数据监控-设计原理与服务搭建

1.使用RebbitMQ收集数据的原理是什么?

hystrix 全局熔断_Hystrix_第1张图片

2.1创建Consumer服务。

hystrix 全局熔断_Hystrix_第2张图片

2.2修改POM文件添加相关坐标。



	4.0.0

	com.bjsxt
	srpingcloud-eureka-consumer-ribbon-dashboard-mq
	0.0.1-SNAPSHOT
	jar

	srpingcloud-eureka-consumer-ribbon-dashboard-mq
	Demo project for Spring Boot

	
		org.springframework.boot
		spring-boot-starter-parent
		1.5.13.RELEASE
		 
	

	
		UTF-8
		UTF-8
		1.8
	

	
		
			
				org.springframework.cloud
				spring-cloud-dependencies
				Dalston.SR5
				pom
				import
			
		
	
	
		
			org.springframework.cloud
			spring-cloud-starter-hystrix
		
		
			org.springframework.boot
			spring-boot-starter-actuator
		
		
			org.springframework.cloud
			spring-cloud-starter-hystrix-dashboard
		
		
			org.springframework.cloud
			spring-cloud-netflix-hystrix-stream
		
		
			org.springframework.cloud
			spring-cloud-starter-stream-rabbit
		

		
			org.springframework.boot
			spring-boot-starter-web
		
		
			org.springframework.boot
			spring-boot-starter-test
			test
		
		
			org.springframework.cloud
			spring-cloud-starter-config
		
		
			org.springframework.cloud
			spring-cloud-starter-eureka
		
	
	
		
			
				org.springframework.boot
				spring-boot-maven-plugin
			
		
	

2.3修改POM文件,添加actuator启动器,添加hystrix启动器、hystrix-dashboard启动器、hystrix-stream启动器、stream-rabbit启动器。

如上

2.4修改全局配文件,添加RabbitMQ配置。

spring.application.name=srpingcloud-eureka-consumer-ribbon-dashboard-mq
server.port=9010
#设置服务注册中心地址,指向另一个注册中心
eureka.client.serviceUrl.defaultZone=http://user:123456@eureka1:8761/eureka/,http://user:123456@eureka2:8761/eureka/

spring.rabbitmq.host=192.168.63.141
spring.rabbitmq.port=5672
spring.rabbitmq.username=oldlu
spring.rabbitmq.password=123456
spring.rabbitmq.virtualHost=/

2.5修改启动类,开始HystrixDashboard。

 package com.bjsxt;

import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;
import org.springframework.cloud.client.circuitbreaker.EnableCircuitBreaker;
import org.springframework.cloud.netflix.eureka.EnableEurekaClient;
import org.springframework.cloud.netflix.hystrix.EnableHystrix;
import org.springframework.cloud.netflix.hystrix.dashboard.EnableHystrixDashboard;

@EnableCircuitBreaker//开启熔断器 断路器[我们的微服务就是根据断路器来决定是否对服务做降级处理]
@EnableEurekaClient
@SpringBootApplication
@EnableHystrix
@EnableHystrixDashboard
public class SrpingcloudEurekaConsumerApplication {
      
	 
	public static void main(String[] args) {
      
		SpringApplication.run(SrpingcloudEurekaConsumerApplication.class, args);
	}

}

采用RebbitMQ收集数据监控-测试服务

3.1 @EnableTurbineStream注解的作用是什么?

答:启用Turbine Stream的配置

4.1创建Turbine服务。

hystrix 全局熔断_Hystrix_第3张图片

4.2修改POM文件添加hystrix-stream启动器、stream-rabbit启动器。



	4.0.0

	com.bjsxt
	srpingcloud-eureka-consumer-ribbon-dashboard-turbine
	0.0.1-SNAPSHOT
	jar

	srpingcloud-eureka-consumer-ribbon-dashboard-turbine
	Demo project for Spring Boot

	
		org.springframework.boot
		spring-boot-starter-parent
		1.5.13.RELEASE
		 
	

	
		UTF-8
		UTF-8
		1.8
	

	
		
			
				org.springframework.cloud
				spring-cloud-dependencies
				Dalston.SR5
				pom
				import
			
		
	
	
		
			org.springframework.boot
			spring-boot-starter-web
		
		
			org.springframework.boot
			spring-boot-starter-test
			test
		
		
			org.springframework.cloud
			spring-cloud-starter-config
		
		
			org.springframework.cloud
			spring-cloud-starter-turbine-stream
		
		
			org.springframework.cloud
			spring-cloud-starter-stream-rabbit
		
	
	
		
			
				org.springframework.boot
				spring-boot-maven-plugin
			
		
	

4.3修改全局配置文件,添加RabbitMQ配置。

spring.application.name=srpingcloud-eureka-consumer-ribbon-dashboard-turbine-mq
server.port=1002
#设置服务注册中心地址,指向另一个注册中心
eureka.client.serviceUrl.defaultZone=http://user:123456@eureka1:8761/eureka/,http://user:123456@eureka2:8761/eureka/

spring.rabbitmq.host=192.168.63.141
spring.rabbitmq.port=5672
spring.rabbitmq.username=oldlu
spring.rabbitmq.password=123456
spring.rabbitmq.virtualHost=/

4.4修改启动类,开启TurbineStream。

 package com.bjsxt;

import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;
import org.springframework.cloud.netflix.turbine.stream.EnableTurbineStream;

@SpringBootApplication
@EnableTurbineStream
public class SrpingcloudEurekaConsumerApplication {
      
	 
	public static void main(String[] args) {
      
		SpringApplication.run(SrpingcloudEurekaConsumerApplication.class, args);
	}

} 

如何设计微服务作业题

5.1微服务中有几种常见的设计模式?

  • 1代理设计模式

hystrix 全局熔断_Hystrix_第4张图片
  • 2 聚合设计模式

hystrix 全局熔断_Hystrix_第5张图片
  • 3 聚合链条设计模式

hystrix 全局熔断_Hystrix_第6张图片
  • 4 数据共享设计模式

hystrix 全局熔断_Hystrix_第7张图片
  • 5 异步消息设计模式

hystrix 全局熔断_Hystrix_第8张图片

5.2每种设计模式的的特点是什么?

如上

代理链条设计模式-数据库设计

6.1创建Users表。

CREATE DATABASE `book-user`;
USE `book-user`;
/*Table structure for table `user` */
DROP TABLE IF EXISTS `user`;
CREATE TABLE `user` (
 `id` INT(10) NOT NULL AUTO_INCREMENT COMMENT '自增主键',
 `user_name` VARCHAR(50) DEFAULT NULL COMMENT '用户名',
 `password` VARCHAR(50) NOT NULL COMMENT '密码',
 `email` VARCHAR(50) NOT NULL COMMENT 'email',
 `deleted` TINYINT(4) UNSIGNED NOT NULL DEFAULT '0' COMMENT '删除标志,默认 0 不删除,1 删除',
 `create_time` datetime NOT NULL  COMMENT '创建时间',
 `update_time` TIMESTAMP NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP COMMENT '更新时间',
 PRIMARY KEY (`id`)
) ENGINE=INNODB AUTO_INCREMENT=1 DEFAULT CHARSET=utf8 
COMMENT='用户表';
INSERT INTO 
`user`(`id`,`user_name`,`password`,`email`,`deleted`,`create_time`,`update_time`) 
VALUES (1,'admin','admin','[email protected]',0,'2019-06-16 12:56:31','2019-06-16 14:47:25');

6.2创建product表。

CREATE DATABASE `book-product`;
USE `book-product`;
DROP TABLE IF EXISTS `product`;
CREATE TABLE `product` (
 `id` INT(10) NOT NULL AUTO_INCREMENT,
 `name` VARCHAR(100) DEFAULT NULL COMMENT '产品名称',
 `status` TINYINT(4) NOT NULL DEFAULT '0' COMMENT '产品状态:0 待审,1 上架,2 下架,3 停售,4 测试',
 `price` INT(10) NOT NULL COMMENT '产品价格 单位分',
 `detail` TEXT COMMENT '产品详情',
 `deleted` TINYINT(4) UNSIGNED NOT NULL DEFAULT '0' COMMENT '删除标志,默认 0 不删除,1 删除',
 `create_time` datetime NOT NULL  COMMENT '创建时间',
 `update_time` TIMESTAMP NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP COMMENT '更新时间',
 PRIMARY KEY (`id`)
) ENGINE=INNODB AUTO_INCREMENT=1 DEFAULT CHARSET=utf8 
COMMENT='产品信息';

INSERT INTO `product` (`id`, `name`, `status`, `price`, `detail`, `deleted`, `create_time`, `update_time`) VALUES('1','波波烤鸭 java 程序设计','1','100','波波烤鸭 java 程序设计','0','2017-12-03 09:08:12','2017-12-17 16:44:39');
INSERT INTO `product` (`id`, `name`, `status`, `price`, `detail`, `deleted`, `create_time`, `update_time`) VALUES('2','波波烤鸭 程序员经典案例','1','200','波波烤鸭 百战程序员经典案例','0','2017-12-03 09:08:12','2017-12-17 16:44:41');
INSERT INTO `product` (`id`, `name`, `status`, `price`, `detail`, `deleted`, `create_time`, `update_time`) VALUES('3','波波烤鸭-人工智能基础教程','1','300','波波烤鸭 人工智能基础教程','0','2017-12-17 16:44:35','2017-12-17 16:45:15');

6.3创建Orders表。

CREATE DATABASE  `book-order`;
USE `book-order`;
DROP TABLE IF EXISTS `orders`;
CREATE TABLE `orders` (
 `id` INT(10) NOT NULL AUTO_INCREMENT,
 `product_id` INT(10) NOT NULL DEFAULT '0' COMMENT '产品 ID',
 `price` INT(10) DEFAULT '0' COMMENT '价格',
 `user_id` INT(10) DEFAULT '0' COMMENT '用户账号 ID',
 `trade_id` INT(10) DEFAULT '0' COMMENT '交易号 ID',
 `trade_status` TINYINT(1) DEFAULT '0' COMMENT '支付状态 0=未支付 1=已支付',
 `deleted` TINYINT(4) UNSIGNED NOT NULL DEFAULT '0' COMMENT '删除标志,默认 0 不删除,1 删除',
 `create_time` datetime NOT NULL  COMMENT '创建时间',
 `update_time` TIMESTAMP NOT NULL DEFAULT CURRENT_TIMESTAMP COMMENT '更新时间',
  PRIMARY KEY (`id`)
) ENGINE=INNODB AUTO_INCREMENT=1 DEFAULT CHARSET=utf8;

6.4创建Trade表。

 CREATE DATABASE `book-trade`;
USE `book-trade`;
DROP TABLE IF EXISTS `trade`;
CREATE TABLE `trade` (
 `id` INT(10) NOT NULL AUTO_INCREMENT COMMENT 'IID',
 `order_id` INT(10) NOT NULL COMMENT '订单 ID',
 `user_id` INT(10) NOT NULL COMMENT '用户 ID',
 `price` INT(10) NOT NULL COMMENT '支付价',
 `pay_status` TINYINT(4) NOT NULL COMMENT '1 未付款 2 付款中 3 付款失败 4 付款完成',
 `pay_type` TINYINT(4) NOT NULL COMMENT '支付类型:1-支付宝支付,2-网银在线,3-银联,4-微信支付',
 `gateway_pay_num` VARCHAR(30) DEFAULT NULL COMMENT '网关支付流水号',
 `gateway_pay_time` DATETIME DEFAULT NULL COMMENT '网关支付时间',
 `gateway_pay_price` INT(10) NOT NULL DEFAULT '0' COMMENT '网关实际支付金额',
 `deleted` TINYINT(4) UNSIGNED NOT NULL DEFAULT '0' COMMENT '删除标志,默认 0 不删除,1 删除',
 `create_time` datetime NOT NULL  COMMENT '创建时间',
 `update_time` TIMESTAMP NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP COMMENT '更新时间',
 PRIMARY KEY (`id`)
) ENGINE=INNODB AUTO_INCREMENT=1 DEFAULT CHARSET=utf8 COMMENT='交易';

generatorSqlmapCustom工具使用

7.1通过generatorSqlmapCustom工具生成MyBatis的映射配置文件,接口,实试结果。

你可能感兴趣的:(hystrix,全局熔断)