├── .gitattributes
├── .github
└── workflows
│ └── maven.yml
├── .gitignore
├── .mvn
├── settings.xml
└── wrapper
│ ├── maven-wrapper.jar
│ └── maven-wrapper.properties
├── LICENSE
├── README.md
├── docker
├── README.md
├── docker-compose-mysql.yml
├── docker-compose-seata.yml
├── mysql
│ ├── leaf.sql
│ ├── mysql-dockerfile
│ ├── seata_order.sql
│ ├── seata_storage.sql
│ ├── spring_project_1.sql
│ └── spring_project_2.sql
└── seata
│ └── config
│ ├── file.conf
│ └── registry.conf
├── monitor
├── README.md
├── jmx_prometheus_javaagent-0.16.1.jar
└── prometheus-jmx-config.yml
├── mvnw
├── mvnw.cmd
├── pom.xml
├── springboot-cache
├── pom.xml
└── src
│ └── main
│ └── java
│ └── com
│ └── doodl6
│ └── springboot
│ └── cache
│ ├── CacheAutoConfig.java
│ ├── CacheController.java
│ ├── memcached
│ ├── JSONTranscoder.java
│ ├── MemcachedConfig.java
│ └── MemcachedService.java
│ ├── redis
│ └── RedisService.java
│ └── vo
│ └── Model.java
├── springboot-common-web
├── pom.xml
└── src
│ └── main
│ └── java
│ └── com
│ └── doodl6
│ └── springboot
│ └── common
│ └── web
│ ├── WebAutoConfig.java
│ ├── advice
│ └── ExceptionAdvice.java
│ ├── context
│ ├── RequestParamContext.java
│ └── TraceIdHolder.java
│ ├── filter
│ ├── RequestBodyWrapper.java
│ └── RequestParamFilter.java
│ └── response
│ ├── BaseResponse.java
│ ├── MapResponse.java
│ ├── PageResponse.java
│ └── ResponseCode.java
├── springboot-common
├── pom.xml
└── src
│ └── main
│ └── java
│ └── com
│ └── doodl6
│ └── springboot
│ └── common
│ ├── algorithm
│ └── RedEnvelopeAlgorithm.java
│ ├── check
│ ├── CheckUtil.java
│ └── annotation
│ │ ├── FieldNotEmpty.java
│ │ └── FieldNotNull.java
│ ├── excel
│ └── ExcelVersion.java
│ ├── model
│ ├── Page.java
│ └── RowModel.java
│ ├── tuple
│ └── Tuple2.java
│ └── util
│ ├── DateTimeUtil.java
│ ├── EmailUtil.java
│ ├── FileUtil.java
│ ├── HttpUtil.java
│ ├── IpUtil.java
│ ├── LogUtil.java
│ ├── MathUtil.java
│ ├── NumberUtil.java
│ ├── PPTUtil.java
│ ├── PageUtil.java
│ └── StringUtil.java
├── springboot-dao
├── pom.xml
└── src
│ └── main
│ ├── java
│ └── com
│ │ └── doodl6
│ │ └── springboot
│ │ └── dao
│ │ ├── DaoAutoConfig.java
│ │ ├── entity
│ │ ├── User.java
│ │ └── UserLoginLog.java
│ │ ├── handler
│ │ └── MyMetaObjectHandler.java
│ │ ├── manager
│ │ ├── UserLoginLogManager.java
│ │ └── UserManager.java
│ │ └── mapper
│ │ ├── UserLoginLogMapper.java
│ │ └── UserMapper.java
│ └── resources
│ ├── spring_project_1.sql
│ └── spring_project_2.sql
├── springboot-db-controller
├── pom.xml
└── src
│ └── main
│ └── java
│ └── com
│ └── doodl6
│ └── springboot
│ └── db
│ └── controller
│ ├── DbControllerConfig.java
│ ├── DruidViewConfig.java
│ ├── UserController.java
│ └── UserService.java
├── springboot-dubbo-api
├── pom.xml
└── src
│ └── main
│ └── java
│ └── com
│ └── doodl6
│ └── springboot
│ └── dubbo
│ └── api
│ ├── FirstDubboService.java
│ ├── domain
│ └── DubboDomain.java
│ ├── request
│ ├── BaseRequest.java
│ └── GetDubboInfoRequest.java
│ └── response
│ ├── BaseResponse.java
│ └── GetDubboInfoResponse.java
├── springboot-dubbo-consumer
├── pom.xml
└── src
│ └── main
│ ├── java
│ └── com
│ │ └── doodl6
│ │ └── springboot
│ │ └── dubbo
│ │ └── consumer
│ │ ├── DubboController.java
│ │ ├── config
│ │ ├── DubboConfig.java
│ │ └── SentinelAspectConfiguration.java
│ │ ├── filter
│ │ └── DubboTraceFilter.java
│ │ └── service
│ │ └── DubboService.java
│ └── resources
│ └── META-INF
│ └── dubbo
│ └── org.apache.dubbo.rpc.Filter
├── springboot-dubbo-provider
├── pom.xml
└── src
│ └── main
│ ├── java
│ └── com
│ │ └── doodl6
│ │ └── springboot
│ │ └── dubbo
│ │ └── provider
│ │ ├── DubboApplication.java
│ │ ├── config
│ │ └── DubboConfig.java
│ │ └── service
│ │ └── FirstDubboServiceImpl.java
│ └── resources
│ ├── application-local.yml
│ └── application.yml
├── springboot-elasticsearch
├── pom.xml
└── src
│ └── main
│ └── java
│ └── com
│ └── doodl6
│ └── springboot
│ └── elasticsearch
│ ├── ElasticsearchAutoConfig.java
│ ├── ElasticsearchController.java
│ ├── repository
│ └── ArticleRepository.java
│ └── vo
│ └── Article.java
├── springboot-feign-consumer
├── pom.xml
└── src
│ └── main
│ └── java
│ └── com
│ └── doodl6
│ └── springboot
│ └── feign
│ └── consumer
│ ├── FeignAutoConfig.java
│ ├── FeignController.java
│ └── service
│ └── FeignService.java
├── springboot-feign-provider
├── pom.xml
└── src
│ └── main
│ ├── java
│ └── com
│ │ └── doodl6
│ │ └── springboot
│ │ └── feign
│ │ └── provider
│ │ ├── FeignApplication.java
│ │ └── FeignServiceController.java
│ └── resources
│ └── application.yml
├── springboot-leaf
├── pom.xml
└── src
│ └── main
│ ├── java
│ └── com
│ │ └── doodl6
│ │ └── springboot
│ │ └── leaf
│ │ ├── Constants.java
│ │ ├── IDGen.java
│ │ ├── aspect
│ │ └── RtAspect.java
│ │ ├── common
│ │ ├── PropertyFactory.java
│ │ ├── Result.java
│ │ ├── Status.java
│ │ └── ZeroIDGen.java
│ │ ├── exception
│ │ └── InitException.java
│ │ └── segment
│ │ ├── SegmentIDGenImpl.java
│ │ ├── SegmentService.java
│ │ ├── dao
│ │ ├── IDAllocDao.java
│ │ ├── IDAllocMapper.java
│ │ └── impl
│ │ │ └── IDAllocDaoImpl.java
│ │ └── model
│ │ ├── LeafAlloc.java
│ │ ├── Segment.java
│ │ └── SegmentBuffer.java
│ └── resources
│ └── leaf.sql
├── springboot-netty
├── pom.xml
└── src
│ └── main
│ ├── java
│ └── com
│ │ └── doodl6
│ │ └── springboot
│ │ └── netty
│ │ ├── config
│ │ └── ChatServerConfig.java
│ │ └── server
│ │ ├── ChatServer.java
│ │ ├── ChatServerHandler.java
│ │ ├── HeartbeatHandler.java
│ │ └── WebSocketServerInitializer.java
│ └── resources
│ └── static
│ └── chat-netty.html
├── springboot-opentelemetry
├── pom.xml
└── src
│ └── main
│ └── java
│ └── com
│ └── doodl6
│ └── springboot
│ └── metrics
│ ├── Counter.java
│ ├── MetricsAutoConfig.java
│ └── filter
│ └── RequestCountFilter.java
├── springboot-rocketmq-consumer
├── pom.xml
└── src
│ └── main
│ └── java
│ └── com
│ └── doodl6
│ └── springboot
│ └── rocketmq
│ └── consumer
│ ├── domain
│ └── NewChatRecord.java
│ ├── listener
│ ├── ClearUserMessageListener.java
│ ├── NewChatRecordListener.java
│ └── OrderlyMessageListener.java
│ └── service
│ └── ChatService.java
├── springboot-rocketmq-producer
├── pom.xml
└── src
│ └── main
│ ├── java
│ └── com
│ │ └── doodl6
│ │ └── springboot
│ │ └── rocketmq
│ │ └── producer
│ │ ├── MessageController.java
│ │ ├── ProducerConstants.java
│ │ ├── UserController.java
│ │ ├── domain
│ │ ├── NewChatRecord.java
│ │ └── TransactionMessageObj.java
│ │ ├── listener
│ │ └── ClearUserTransactionListener.java
│ │ ├── service
│ │ └── RocketMQService.java
│ │ └── websocket
│ │ ├── ChatWebSocket.java
│ │ └── WebSocketConfig.java
│ └── resources
│ └── static
│ └── chat-websocket.html
├── springboot-seata-common
├── pom.xml
└── src
│ └── main
│ └── java
│ └── com
│ └── doodl6
│ └── springboot
│ └── seata
│ └── common
│ ├── Constants.java
│ └── entity
│ ├── Order.java
│ └── Storage.java
├── springboot-seata-order
├── pom.xml
└── src
│ └── main
│ ├── java
│ └── com
│ │ └── doodl6
│ │ └── springboot
│ │ └── seata
│ │ └── order
│ │ ├── OrderApplication.java
│ │ ├── controller
│ │ └── OrderController.java
│ │ ├── manager
│ │ └── OrderManager.java
│ │ ├── mapper
│ │ └── OrderMapper.java
│ │ └── service
│ │ └── OrderService.java
│ └── resources
│ └── application.yml
├── springboot-seata-storage
├── pom.xml
└── src
│ └── main
│ ├── java
│ └── com
│ │ └── doodl6
│ │ └── springboot
│ │ └── seata
│ │ └── storage
│ │ ├── StorageApplication.java
│ │ ├── controller
│ │ └── StorageController.java
│ │ ├── manager
│ │ └── StorageManager.java
│ │ ├── mapper
│ │ └── StorageMapper.java
│ │ └── service
│ │ └── StorageService.java
│ └── resources
│ └── application.yml
├── springboot-seata
├── pom.xml
└── src
│ └── main
│ ├── java
│ └── com
│ │ └── doodl6
│ │ └── springboot
│ │ └── seata
│ │ ├── SeataApplication.java
│ │ ├── controller
│ │ └── TradeController.java
│ │ ├── feign
│ │ ├── IOrderService.java
│ │ └── IStorageService.java
│ │ ├── response
│ │ └── StorageWithOrderData.java
│ │ └── service
│ │ └── TradeService.java
│ └── resources
│ └── application.yml
├── springboot-web
├── pom.xml
└── src
│ └── main
│ ├── java
│ └── com
│ │ └── doodl6
│ │ └── springboot
│ │ └── web
│ │ ├── WebApplication.java
│ │ ├── config
│ │ ├── DocConfig.java
│ │ └── WebMvcConfig.java
│ │ ├── constant
│ │ └── WebConstants.java
│ │ ├── controller
│ │ ├── ChatController.java
│ │ ├── EventStreamController.java
│ │ ├── ExcelController.java
│ │ ├── MonitorController.java
│ │ ├── StandardController.java
│ │ └── XhttpController.java
│ │ ├── dto
│ │ └── ExcelData.java
│ │ ├── listener
│ │ └── InitDataListener.java
│ │ ├── request
│ │ └── CheckParameterRequest.java
│ │ ├── response
│ │ └── CheckParameterResult.java
│ │ ├── util
│ │ ├── RequestUtil.java
│ │ └── ResponseUtil.java
│ │ └── vo
│ │ ├── ExcelVo.java
│ │ └── MessageVo.java
│ └── resources
│ ├── application-local.yml
│ ├── application.properties
│ ├── application.yml
│ ├── leaf.properties
│ ├── logback-common.xml
│ ├── logback-spring.xml
│ ├── logback.properties
│ ├── sharding-db.yml
│ └── static
│ ├── chat-long-polling.html
│ ├── event-stream.html
│ ├── favicon.ico
│ └── xhttp.html
└── springboot-zookeeper
├── pom.xml
└── src
└── main
└── java
└── com
└── doodl6
└── springboot
└── zookeeper
├── ZookeeperController.java
└── service
└── ZookeeperService.java
/.gitattributes:
--------------------------------------------------------------------------------
1 | #
2 | # https://help.github.com/articles/dealing-with-line-endings/
3 | #
4 | # These are explicitly windows files and should use crlf
5 | * text=auto eol=lf
--------------------------------------------------------------------------------
/.github/workflows/maven.yml:
--------------------------------------------------------------------------------
1 | name: Java CI with Maven
2 |
3 | on:
4 | push:
5 | branches:
6 | - master
7 | - 'feature/**'
8 | pull_request:
9 | branches: [ master ]
10 |
11 | jobs:
12 | build:
13 | runs-on: ubuntu-latest
14 | steps:
15 | - uses: actions/checkout@v3
16 | - name: Set up JDK 17
17 | uses: actions/setup-java@v3
18 | with:
19 | java-version: '17'
20 | distribution: 'temurin'
21 | - name: Build with Maven
22 | run: ./mvnw -B package --file pom.xml
23 |
--------------------------------------------------------------------------------
/.gitignore:
--------------------------------------------------------------------------------
1 | # Compiled class files
2 | *.class
3 | target/
4 |
5 | # Log files
6 | /logs/
7 |
8 | # IntelliJ IDEA files
9 | .idea/
10 | *.iml
11 |
12 | .flattened-pom.xml
13 |
14 | # Temp file
15 | /docker/consul/data/
16 | /docker/elasticsearch/master/data/
17 | /docker/elasticsearch/master/logs/
18 | /docker/elasticsearch/master/plugins/
19 | /docker/elasticsearch/slave/data/
20 | /docker/elasticsearch/slave/logs/
21 | /docker/rocketmq/broker/store/
22 | /docker/rocketmq/broker/logs/
23 | /docker/rocketmq/namesrv/logs/
24 | /docker/grafana/
25 | /docker/prometheus/data/
26 | /docker/zk/zoo1/data
27 | /docker/zk/zoo2/data
28 | /docker/zk/zoo3/data
--------------------------------------------------------------------------------
/.mvn/settings.xml:
--------------------------------------------------------------------------------
1 |
2 |
5 |
6 |
7 | sonatype
8 |
9 |
10 | sonatype-nexus-snapshots
11 | https://oss.sonatype.org/content/repositories/snapshots
12 |
13 | true
14 |
15 |
16 | true
17 |
18 |
19 |
20 |
21 |
22 |
23 |
24 | sonatype
25 |
26 |
--------------------------------------------------------------------------------
/.mvn/wrapper/maven-wrapper.jar:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/MartinDai/SpringBoot-Project/44c26572323ad5daecedfb5c5f951a100e3761e5/.mvn/wrapper/maven-wrapper.jar
--------------------------------------------------------------------------------
/.mvn/wrapper/maven-wrapper.properties:
--------------------------------------------------------------------------------
1 | # Licensed to the Apache Software Foundation (ASF) under one
2 | # or more contributor license agreements. See the NOTICE file
3 | # distributed with this work for additional information
4 | # regarding copyright ownership. The ASF licenses this file
5 | # to you under the Apache License, Version 2.0 (the
6 | # "License"); you may not use this file except in compliance
7 | # with the License. You may obtain a copy of the License at
8 | #
9 | # https://www.apache.org/licenses/LICENSE-2.0
10 | #
11 | # Unless required by applicable law or agreed to in writing,
12 | # software distributed under the License is distributed on an
13 | # "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
14 | # KIND, either express or implied. See the License for the
15 | # specific language governing permissions and limitations
16 | # under the License.
17 | distributionUrl=https://repo.maven.apache.org/maven2/org/apache/maven/apache-maven/3.8.6/apache-maven-3.8.6-bin.zip
18 | wrapperUrl=https://repo.maven.apache.org/maven2/org/apache/maven/wrapper/maven-wrapper/3.1.1/maven-wrapper-3.1.1.jar
19 |
--------------------------------------------------------------------------------
/LICENSE:
--------------------------------------------------------------------------------
1 | MIT License
2 |
3 | Copyright (c) 2019 Martin
4 |
5 | Permission is hereby granted, free of charge, to any person obtaining a copy
6 | of this software and associated documentation files (the "Software"), to deal
7 | in the Software without restriction, including without limitation the rights
8 | to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
9 | copies of the Software, and to permit persons to whom the Software is
10 | furnished to do so, subject to the following conditions:
11 |
12 | The above copyright notice and this permission notice shall be included in all
13 | copies or substantial portions of the Software.
14 |
15 | THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
16 | IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
17 | FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
18 | AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
19 | LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
20 | OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
21 | SOFTWARE.
22 |
--------------------------------------------------------------------------------
/docker/README.md:
--------------------------------------------------------------------------------
1 | ## Docker环境部署使用说明
2 |
3 | ### _进入当前目录,根据实际情况选择需要的容器组合命令执行_
4 |
5 | ### MySQL服务
6 |
7 | ```bash
8 | docker-compose -f docker-compose-mysql.yml up -d
9 | ```
10 |
11 | ### Seata-Server服务
12 |
13 | ```bash
14 | docker-compose -f docker-compose-seata.yml up -d
15 | ```
--------------------------------------------------------------------------------
/docker/docker-compose-mysql.yml:
--------------------------------------------------------------------------------
1 | services:
2 | mysql:
3 | container_name: mysql
4 | build:
5 | context: mysql
6 | dockerfile: ./mysql-dockerfile
7 | environment:
8 | - "MYSQL_ROOT_PASSWORD=martin-local"
9 | - "MYSQL_ROOT_HOST=%"
10 | command: [
11 | 'mysqld',
12 | '--innodb-buffer-pool-size=20M',
13 | '--character-set-server=utf8',
14 | '--collation-server=utf8_general_ci',
15 | '--default-time-zone=+8:00',
16 | '--lower-case-table-names=1'
17 | ]
18 | ports:
19 | - "3306:3306"
20 | networks:
21 | - net-mysql
22 | networks:
23 | net-mysql:
24 | driver: bridge
--------------------------------------------------------------------------------
/docker/docker-compose-seata.yml:
--------------------------------------------------------------------------------
1 | services:
2 | seata-server:
3 | image: seataio/seata-server:2.0.0
4 | container_name: seata-server
5 | volumes:
6 | - ./seata/config:/root/seata-config
7 | environment:
8 | - SEATA_PORT=8091
9 | - SEATA_CONFIG_NAME=file:/root/seata-config/registry
10 | ports:
11 | - "8091:8091"
12 | networks:
13 | - net-seata
14 | networks:
15 | net-seata:
16 | driver: bridge
--------------------------------------------------------------------------------
/docker/mysql/leaf.sql:
--------------------------------------------------------------------------------
1 | CREATE DATABASE leaf;
2 | USE leaf;
3 | CREATE TABLE `leaf_alloc` (
4 | `biz_tag` varchar(128) NOT NULL DEFAULT '',
5 | `max_id` bigint(20) NOT NULL DEFAULT '1',
6 | `step` int(11) NOT NULL,
7 | `description` varchar(256) DEFAULT NULL,
8 | `update_time` timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP,
9 | PRIMARY KEY (`biz_tag`)
10 | ) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4;
11 |
12 | insert into leaf_alloc(biz_tag, max_id, step, description) values('traceId', 1, 2000, 'trace id for every request');
13 |
--------------------------------------------------------------------------------
/docker/mysql/mysql-dockerfile:
--------------------------------------------------------------------------------
1 | FROM mysql/mysql-server:8.0
2 |
3 | ADD spring_project_1.sql /docker-entrypoint-initdb.d/
4 | ADD spring_project_2.sql /docker-entrypoint-initdb.d/
5 | ADD leaf.sql /docker-entrypoint-initdb.d/
6 | ADD seata_order.sql /docker-entrypoint-initdb.d/
7 | ADD seata_storage.sql /docker-entrypoint-initdb.d/
--------------------------------------------------------------------------------
/docker/mysql/seata_order.sql:
--------------------------------------------------------------------------------
1 | CREATE DATABASE seata_order;
2 | USE seata_order;
3 | CREATE TABLE `order`
4 | (
5 | `id` bigint(20) NOT NULL AUTO_INCREMENT,
6 | `user_id` int(11) NOT NULL DEFAULT 0,
7 | `goods_code` varchar(32) NOT NULL,
8 | `stock_num` int(11) NOT NULL,
9 | `money` int(11) NOT NULL,
10 | PRIMARY KEY (`id`)
11 | ) ENGINE = InnoDB
12 | DEFAULT CHARSET = utf8mb4;
13 |
14 | -- for AT mode you must to init this sql for you business database. the seata server not need it.
15 | CREATE TABLE IF NOT EXISTS `undo_log`
16 | (
17 | `branch_id` BIGINT NOT NULL COMMENT 'branch transaction id',
18 | `xid` VARCHAR(128) NOT NULL COMMENT 'global transaction id',
19 | `context` VARCHAR(128) NOT NULL COMMENT 'undo_log context,such as serialization',
20 | `rollback_info` LONGBLOB NOT NULL COMMENT 'rollback info',
21 | `log_status` INT(11) NOT NULL COMMENT '0:normal status,1:defense status',
22 | `log_created` DATETIME(6) NOT NULL COMMENT 'create datetime',
23 | `log_modified` DATETIME(6) NOT NULL COMMENT 'modify datetime',
24 | UNIQUE KEY `ux_undo_log` (`xid`, `branch_id`)
25 | ) ENGINE = InnoDB
26 | AUTO_INCREMENT = 1
27 | DEFAULT CHARSET = utf8mb4 COMMENT ='AT transaction mode undo table';
--------------------------------------------------------------------------------
/docker/mysql/seata_storage.sql:
--------------------------------------------------------------------------------
1 | CREATE DATABASE seata_storage;
2 | USE seata_storage;
3 | CREATE TABLE `storage`
4 | (
5 | `id` bigint(20) NOT NULL AUTO_INCREMENT,
6 | `goods_code` varchar(32) NOT NULL,
7 | `stock_num` int(11) NOT NULL,
8 | PRIMARY KEY (`id`),
9 | UNIQUE KEY `UK_GOODS_CODE` (`goods_code`)
10 | ) ENGINE = InnoDB
11 | DEFAULT CHARSET = utf8mb4;
12 |
13 | -- for AT mode you must to init this sql for you business database. the seata server not need it.
14 | CREATE TABLE IF NOT EXISTS `undo_log`
15 | (
16 | `branch_id` BIGINT NOT NULL COMMENT 'branch transaction id',
17 | `xid` VARCHAR(128) NOT NULL COMMENT 'global transaction id',
18 | `context` VARCHAR(128) NOT NULL COMMENT 'undo_log context,such as serialization',
19 | `rollback_info` LONGBLOB NOT NULL COMMENT 'rollback info',
20 | `log_status` INT(11) NOT NULL COMMENT '0:normal status,1:defense status',
21 | `log_created` DATETIME(6) NOT NULL COMMENT 'create datetime',
22 | `log_modified` DATETIME(6) NOT NULL COMMENT 'modify datetime',
23 | UNIQUE KEY `ux_undo_log` (`xid`, `branch_id`)
24 | ) ENGINE = InnoDB
25 | AUTO_INCREMENT = 1
26 | DEFAULT CHARSET = utf8mb4 COMMENT ='AT transaction mode undo table';
--------------------------------------------------------------------------------
/docker/mysql/spring_project_1.sql:
--------------------------------------------------------------------------------
1 | -- ----------------------------
2 | -- create and use database `spring_project_1`
3 | -- ----------------------------
4 | create database spring_project_1;
5 | use spring_project_1;
6 |
7 | -- ----------------------------
8 | -- Table structure for `user`
9 | -- ----------------------------
10 | DROP TABLE IF EXISTS `user`;
11 | CREATE TABLE `user` (
12 | `id` bigint(20) NOT NULL AUTO_INCREMENT,
13 | `name` varchar(48) NOT NULL,
14 | `created` datetime NOT NULL,
15 | `modified` datetime NOT NULL,
16 | PRIMARY KEY (`id`),
17 | UNIQUE KEY `UK_NAME` (`name`)
18 | ) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4;
19 |
20 | -- ----------------------------
21 | -- Table structure for `user_login_log_0`
22 | -- ----------------------------
23 | DROP TABLE IF EXISTS `user_login_log_0`;
24 | CREATE TABLE `user_login_log_0` (
25 | `id` bigint(20) NOT NULL AUTO_INCREMENT,
26 | `user_id` bigint(20) NOT NULL,
27 | `login_time` datetime NOT NULL,
28 | `created` datetime NOT NULL,
29 | PRIMARY KEY (`id`),
30 | KEY `IDX_USER_ID_LOGIN_TIME` (`user_id`,`login_time`)
31 | ) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4;
32 |
33 | -- ----------------------------
34 | -- Table structure for `user_login_log_1`
35 | -- ----------------------------
36 | DROP TABLE IF EXISTS `user_login_log_1`;
37 | CREATE TABLE `user_login_log_1` (
38 | `id` bigint(20) NOT NULL AUTO_INCREMENT,
39 | `user_id` bigint(20) NOT NULL,
40 | `login_time` datetime NOT NULL,
41 | `created` datetime NOT NULL,
42 | PRIMARY KEY (`id`),
43 | KEY `IDX_USER_ID_LOGIN_TIME` (`user_id`,`login_time`)
44 | ) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4;
--------------------------------------------------------------------------------
/docker/mysql/spring_project_2.sql:
--------------------------------------------------------------------------------
1 | -- ----------------------------
2 | -- create and use database `spring_project_2`
3 | -- ----------------------------
4 | create database spring_project_2;
5 | use spring_project_2;
6 |
7 | -- ----------------------------
8 | -- Table structure for `user_login_log_0`
9 | -- ----------------------------
10 | DROP TABLE IF EXISTS `user_login_log_0`;
11 | CREATE TABLE `user_login_log_0` (
12 | `id` bigint(20) NOT NULL AUTO_INCREMENT,
13 | `user_id` bigint(20) NOT NULL,
14 | `login_time` datetime NOT NULL,
15 | `created` datetime NOT NULL,
16 | PRIMARY KEY (`id`),
17 | KEY `IDX_USER_ID_LOGIN_TIME` (`user_id`,`login_time`)
18 | ) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4;
19 |
20 | -- ----------------------------
21 | -- Table structure for `user_login_log_1`
22 | -- ----------------------------
23 | DROP TABLE IF EXISTS `user_login_log_1`;
24 | CREATE TABLE `user_login_log_1` (
25 | `id` bigint(20) NOT NULL AUTO_INCREMENT,
26 | `user_id` bigint(20) NOT NULL,
27 | `login_time` datetime NOT NULL,
28 | `created` datetime NOT NULL,
29 | PRIMARY KEY (`id`),
30 | KEY `IDX_USER_ID_LOGIN_TIME` (`user_id`,`login_time`)
31 | ) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4;
--------------------------------------------------------------------------------
/docker/seata/config/registry.conf:
--------------------------------------------------------------------------------
1 | # 注册中心配置
2 | registry {
3 | # 可选用的类型file 、nacos 、eureka、redis、zk、consul、etcd3、sofa
4 | type = "file"
5 | }
6 |
7 | # 配置中心配置
8 | config {
9 | # file、nacos 、apollo、zk、consul、etcd3
10 | # 配置中心类型,从配置中心获取server的配置参数
11 | # 如果type=file,则从本地file.conf中获取配置参数
12 | type = "file"
13 |
14 | file {
15 | name = "file:/root/seata-config/file.conf"
16 | }
17 | }
18 |
--------------------------------------------------------------------------------
/monitor/README.md:
--------------------------------------------------------------------------------
1 | # 本目录用于存放项目启动植入监控需要的相关配置
2 |
3 | ## 基于JMX+prometheus收集监控信息
4 |
5 | 在启动的时候以下参数
6 |
7 | ```
8 | -javaagent:/monitor/jmx_prometheus_javaagent-0.16.1.jar=8088:/monitor/prometheus-jmx-config.yml
9 | ```
10 |
11 | 需要替换``为本地的项目目录,`8088`也可以修改为自己想要的端口,启动以后,访问 `http://localhost:8088/metrics` 即可查看当前JVM各维度统计信息(prometheus格式)
12 |
13 |
--------------------------------------------------------------------------------
/monitor/jmx_prometheus_javaagent-0.16.1.jar:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/MartinDai/SpringBoot-Project/44c26572323ad5daecedfb5c5f951a100e3761e5/monitor/jmx_prometheus_javaagent-0.16.1.jar
--------------------------------------------------------------------------------
/monitor/prometheus-jmx-config.yml:
--------------------------------------------------------------------------------
1 | lowercaseOutputLabelNames: true
2 | lowercaseOutputName: true
3 | whitelistObjectNames: ["java.lang:type=OperatingSystem"]
4 | blacklistObjectNames: []
5 | rules:
6 | - pattern: 'java.lang<>(committed_virtual_memory|free_physical_memory|free_swap_space|total_physical_memory|total_swap_space)_size:'
7 | name: os_$1_bytes
8 | type: GAUGE
9 | attrNameSnakeCase: true
10 | - pattern: 'java.lang<>((?!process_cpu_time)\w+):'
11 | name: os_$1
12 | type: GAUGE
13 | attrNameSnakeCase: true
--------------------------------------------------------------------------------
/springboot-cache/pom.xml:
--------------------------------------------------------------------------------
1 |
2 |
5 |
6 | SpringBoot-Project
7 | com.doodl6
8 | ${revision}
9 |
10 | 4.0.0
11 | springboot-cache
12 |
13 |
14 |
15 | com.doodl6
16 | springboot-common-web
17 |
18 |
19 |
20 | com.googlecode.xmemcached
21 | xmemcached
22 |
23 |
24 |
25 | org.redisson
26 | redisson-spring-boot-starter
27 |
28 |
29 |
30 |
--------------------------------------------------------------------------------
/springboot-cache/src/main/java/com/doodl6/springboot/cache/CacheAutoConfig.java:
--------------------------------------------------------------------------------
1 | package com.doodl6.springboot.cache;
2 |
3 | import org.springframework.cache.annotation.EnableCaching;
4 | import org.springframework.context.annotation.Configuration;
5 |
6 | @Configuration
7 | @EnableCaching
8 | public class CacheAutoConfig {
9 | }
10 |
--------------------------------------------------------------------------------
/springboot-cache/src/main/java/com/doodl6/springboot/cache/memcached/JSONTranscoder.java:
--------------------------------------------------------------------------------
1 | package com.doodl6.springboot.cache.memcached;
2 |
3 | import com.alibaba.fastjson2.JSON;
4 | import net.rubyeye.xmemcached.transcoders.CachedData;
5 | import net.rubyeye.xmemcached.transcoders.PrimitiveTypeTranscoder;
6 |
7 | import java.io.UnsupportedEncodingException;
8 |
9 | /**
10 | * Created by daixiaoming on 2018/5/12.
11 | */
12 | public class JSONTranscoder extends PrimitiveTypeTranscoder