采用RebbitMQ收集数据监控-设计原理与服务搭建
1.使用RebbitMQ收集数据的原理是什么?
2.1创建Consumer服务。
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服务。
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微服务中有几种常见的设计模式?
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的映射配置文件,接口,实试结果。