小伙伴们,你们好,我是老寇,上一节学习了COLA环境搭建,这一节学习COLA架构
COLA架构分析
运行项目
安装Docker
参考 Centos7安装Docker 23.0.6(傻瓜式安装)
安装Mysql
编写Docker-Compose脚本
services:
mysql:
image: registry.cn-shenzhen.aliyuncs.com/koushenhai/mysql:9.1.0
container_name: mysql
# 保持容器在没有守护程序的情况下运行
tty: true
restart: always
privileged: true
ports:
- "3306:3306"
command:
--character-set-server=utf8mb4
--collation-server=utf8mb4_general_ci
--lower-case-table-names=1
volumes:
- ./mysql9/data:/var/lib/mysql
- ./mysql9/conf/my.cnf:/etc/mysql/my.cnf
environment:
- MYSQL_ROOT_PASSWORD=123456
- TZ=Asia/Shanghai
networks:
- laokou_network
networks:
laokou_network:
driver: bridge
Mysql配置文件【my.cnf】
[client]
port = 3306
default-character-set = utf8mb4
[mysql]
no-auto-rehash
default-character-set = utf8mb4
[mysqld]
character-set-client-handshake = FALSE
character-set-server = utf8mb4
collation-server = utf8mb4_general_ci
init_connect = 'SET NAMES utf8mb4'
port = 3306
skip-external-locking
key_buffer_size = 16M
max_allowed_packet = 1M
table_open_cache = 64
sort_buffer_size = 512K
net_buffer_length = 8K
read_buffer_size = 256K
read_rnd_buffer_size = 512K
myisam_sort_buffer_size = 8M
lower_case_table_names = 1
innodb_flush_log_at_trx_commit = 1
sync_binlog = 1
[mysqldump]
quick
max_allowed_packet = 16M
[myisamchk]
key_buffer_size = 20M
sort_buffer_size = 20M
read_buffer = 2M
write_buffer = 2M
[mysqlhotcopy]
interactive-timeout
部署Mysql
sudo chmod -R 7777 /home/laokou/app
sudo docker-compose up -d
# 停止容器
sudo docker-compose stop
# 移除容器
sudo docker-compose rm
启动项目
1.使用Idea打开COLA项目,找到 craftsman.all
2.创建craftsman数据库并运行SQL脚本
create database craftsman;
CREATE TABLE `metric` (
`id` bigint(20) unsigned NOT NULL AUTO_INCREMENT COMMENT '主键',
`user_id` varchar(64) NOT NULL COMMENT '域账号',
`main_metric` varchar(64) NOT NULL COMMENT '主度量',
`sub_metric` varchar(64) NOT NULL COMMENT '度量项',
`metric_item` json DEFAULT NULL COMMENT '度量项内容',
`creator` varchar(64) NOT NULL COMMENT '创建人',
`modifier` varchar(64) NOT NULL COMMENT '修改人',
`gmt_create` datetime NOT NULL COMMENT '创建时间',
`gmt_modified` datetime NOT NULL COMMENT '修改时间',
`is_deleted` char(1) NOT NULL DEFAULT 'n' COMMENT '逻辑删除',
PRIMARY KEY (`id`),
KEY `idx_username` (`user_id`)
) ENGINE=InnoDB AUTO_INCREMENT=1000 DEFAULT CHARSET=utf8mb4 COMMENT='度量表';
CREATE TABLE `user_profile` (
`id` bigint(20) unsigned NOT NULL AUTO_INCREMENT COMMENT '主键',
`user_id` varchar(64) NOT NULL COMMENT '工号',
`user_name` varchar(64) NOT NULL COMMENT '名字',
`dep` varchar(128) NOT NULL COMMENT '部门',
`role` varchar(6) NOT NULL COMMENT '角色',
`total_score` decimal(10,2) NOT NULL DEFAULT '0.00' COMMENT '综合得分',
`app_quality_score` decimal(10,2) NOT NULL DEFAULT '0.00' COMMENT '代码质量分',
`tech_influence_score` decimal(10,2) NOT NULL DEFAULT '0.00' COMMENT '技术影响力分',
`tech_contribution_score` decimal(10,2) NOT NULL DEFAULT '0.00' COMMENT '技术贡献分',
`dev_quality_score` decimal(10,2) NOT NULL DEFAULT '0.00' COMMENT '开发质量分',
`checkin_code_quantity` decimal(9,2) NOT NULL DEFAULT '0.00' COMMENT 'checkin代码量',
`is_manager` char(1) DEFAULT NULL COMMENT '是否主管',
`creator` varchar(64) NOT NULL COMMENT '创建人',
`modifier` varchar(64) NOT NULL COMMENT '修改人',
`gmt_create` datetime NOT NULL COMMENT '创建时间',
`gmt_modified` datetime NOT NULL COMMENT '修改时间',
`is_deleted` char(1) NOT NULL DEFAULT 'n' COMMENT '逻辑删除',
PRIMARY KEY (`id`),
KEY `idx_user_id` (`user_id`)
) ENGINE=InnoDB AUTO_INCREMENT=1000 DEFAULT CHARSET=utf8mb4 COMMENT='用户Profile表';
INSERT INTO `craftsman`.`metric` (`id`, `user_id`, `main_metric`, `sub_metric`, `metric_item`, `creator`, `modifier`, `gmt_create`, `gmt_modified`, `is_deleted`) VALUES (1001, '1', 'tech-influence', 'ATA', '{\"url\": \"测试链接\", \"title\": \"测试标题\", \"hitCount\": 1, \"commentCount\": 1, \"favoriteCount\": 1, \"thumbsUpCount\": 1}', 'test', 'test', '2024-12-14 08:54:36', '2024-12-14 08:54:36', 'n');
INSERT INTO `craftsman`.`user_profile` (`id`, `user_id`, `user_name`, `dep`, `role`, `total_score`, `app_quality_score`, `tech_influence_score`, `tech_contribution_score`, `dev_quality_score`, `checkin_code_quantity`, `is_manager`, `creator`, `modifier`, `gmt_create`, `gmt_modified`, `is_deleted`) VALUES (1, '1', '1', '1', 'DEV', 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, NULL, '1', '1', '2024-12-14 09:32:42', '2024-12-14 09:32:45', 'n');
3.修改数据库配置
project.name=start
# mysql configruation
spring.datasource.driver-class-name=com.mysql.cj.jdbc.Driver
spring.datasource.url=jdbc:mysql://127.0.0.1:3306/craftsman?useUnicode=true&characterEncoding=utf8&autoReconnect=true&zeroDateTimeBehavior=convertToNull
spring.datasource.username=root
spring.datasource.password=123456
mybatis-plus.mapper-locations=classpath*:/mybatis/*.xml
mybatis-plus.type-aliases-package=com.alibaba.craftsman.gatewayimpl.database.dataobject
4.运行项目【略】
5.报错解决
1.JDK1.8改为JDK21
2.validation-api替换成hibernate-validator
<dependency>
<groupId>org.hibernate.validator</groupId>
<artifactId>hibernate-validator</artifactId>
</dependency>
3.mysql-connector-java替换成mysql-connector-j
<dependency>
<groupId>com.mysql</groupId>
<artifactId>mysql-connector-j</artifactId>
<version>9.1.0</version>
</dependency>
4.javax.el-api和jakarta.el替换成jakarta.el-api
<dependency>
<groupId>jakarta.el</groupId>
<artifactId>jakarta.el-api</artifactId>
<version>6.0.1</version>
</dependency>
5.mybatis-spring-boot-starter替换成mybatis-plus-spring-boot3-starter
<dependency>
<groupId>com.baomidou</groupId>
<artifactId>mybatis-plus-spring-boot3-starter</artifactId>
<version>3.5.9</version>
</dependency>
<dependency>
<groupId>com.baomidou</groupId>
<artifactId>mybatis-plus-jsqlparser</artifactId>
<version>3.5.9</version>
<exclusions>
<exclusion>
<groupId>com.github.jsqlparser</groupId>
<artifactId>jsqlparser</artifactId>
</exclusion>
</exclusions>
</dependency>
<dependency>
<groupId>com.baomidou</groupId>
<artifactId>mybatis-plus-extension</artifactId>
<version>3.5.9</version>
</dependency>
6.运行项目【略】
7.调试项目
1.创建request.http
POST http://localhost:8080/metrics/ata
Content-Type: application/json
{
"ataMetricCO": {
"title": "测试标题",
"url": "测试链接",
"thumbsUpCount": 1,
"hitCount": 1,
"commentCount": 1,
"favoriteCount": 1,
"ownerId": "1"
}
}
###
GET http://localhost:8080/metrics/ata?ownerId=1
2.调试项目