Spring Cloud 微服务简单搭建 使用Maven
Posted _DiMinisH
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Spring Cloud 微服务简单搭建 使用Maven相关的知识,希望对你有一定的参考价值。
Spring Cloud 微服务搭建 使用Maven
1. 各组件版本
jdk | Spring Cloud | Spring Cloud Alibaba | Spring Boot | nacos | sentinel | zipkin |
---|---|---|---|---|---|---|
OpenJDK 11 | Hoxton.SR8 | 2.2.1.RELEASE | 2.3.3.RELEASE | 1.3.2 | 1.8.0 | 2.23.15 |
2. 创建父工程
(1). 创建Maven项目
(2). 选择JDK 11 和 Maven项目
(3). 项目命名
(4). 完成
(5). 删除src目录
因为父工程不写代码, 所有删除不影响
(6). 引入依赖
<dependencyManagement>
<!-- Spring Boot-->
<dependencies>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-dependencies</artifactId>
<version>2.3.3.RELEASE</version>
<type>pom</type>
<scope>import</scope>
</dependency>
<!-- Spring Cloud-->
<dependency>
<groupId>org.springframework.cloud</groupId>
<artifactId>spring-cloud-dependencies</artifactId>
<version>Hoxton.SR8</version>
<type>pom</type>
<scope>import</scope>
</dependency>
<!-- Spring Cloud Alibaba-->
<dependency>
<groupId>com.alibaba.cloud</groupId>
<artifactId>spring-cloud-alibaba-dependencies</artifactId>
<version>2.2.1.RELEASE</version>
<type>pom</type>
<scope>import</scope>
</dependency>
</dependencies>
</dependencyManagement>
添加<packaging></packaging>
(7). 引入Maven打包配置
<!-- maven插件-->
<build>
<plugins>
<plugin>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-maven-plugin</artifactId>
<configuration>
<fork>true</fork>
<addResources>true</addResources>
</configuration>
</plugin>
</plugins>
</build>
3. 创建子模块
(1). 创建Maven项目
按照父工程的创建过程, 名字按照自己的需要来
点开父工程pom, 可以直接看到自动加入了module
(2). 根据需要引入依赖
1). Spring MVC
<!-- Spring MVC-->
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-web</artifactId>
</dependency>
2). 数据库驱动
<!-- 数据库驱动-->
<dependency>
<groupId>mysql</groupId>
<artifactId>mysql-connector-java</artifactId>
</dependency>
3). nacos注册中心服务发现
<!-- nacos注册中心服务发现-->
<dependency>
<groupId>com.alibaba.cloud</groupId>
<artifactId>spring-cloud-starter-alibaba-nacos-discovery</artifactId>
</dependency>
4). nacos注册中心配置
<!-- nacos注册中心配置-->
<dependency>
<groupId>com.alibaba.cloud</groupId>
<artifactId>spring-cloud-starter-alibaba-nacos-config</artifactId>
</dependency>
5). Feign
<!-- feign-->
<dependency>
<groupId>org.springframework.cloud</groupId>
<artifactId>spring-cloud-starter-openfeign</artifactId>
</dependency>
6). Sentinel
<!-- sentinel-->
<dependency>
<groupId>com.alibaba.cloud</groupId>
<artifactId>spring-cloud-starter-alibaba-sentinel</artifactId>
</dependency>
7). Spring Cloud sleuth
<!-- Spring Cloud sleuth-->
<dependency>
<groupId>org.springframework.cloud</groupId>
<artifactId>spring-cloud-starter-sleuth</artifactId>
</dependency>
8). Zipkin
<!-- zipkin-->
<dependency>
<groupId>org.springframework.cloud</groupId>
<artifactId>spring-cloud-starter-zipkin</artifactId>
</dependency>
9). Gateway
<dependency>
<groupId>org.springframework.cloud</groupId>
<artifactId>spring-cloud-starter-gateway</artifactId>
</dependency>
4. 创建另一个子模块 (子模块依赖子模块)
(1). 创建Maven项目
按照相同的步骤创建
(2). 子模块依赖子模块
order900 依赖 common
<dependency>
<groupId>org.example</groupId>
<artifactId>common</artifactId>
<version>1.0-SNAPSHOT</version>
</dependency>
注意
groupId
artifactId
version
要与引入的子模块一致
(3). 测试
测试一下是否可以打包成功
1). clean
在父工程的pom下, 选择clean, 清理一下
BUILD SUCCESS 表示成功
此时的目录如下
2). package
BUILD SUCCESS
看看目录
出现了jar文件
这个就是用来部署到服务器上的
5. Mybatis依赖引入
(1). 父工程引入依赖
<!-- mybatis-->
<dependency>
<groupId>org.mybatis.spring.boot</groupId>
<artifactId>mybatis-spring-boot-starter</artifactId>
<version>2.1.2</version>
<type>pom</type>
<scope>import</scope>
</dependency>
引入后刷新一下Maven
(2). 子模块引入依赖
<!-- mybatis-->
<dependency>
<groupId>org.mybatis.spring.boot</groupId>
<artifactId>mybatis-spring-boot-starter</artifactId>
</dependency>
测试一下成不成功
6. 依赖需要的相关常用配置 (.properties)
(1). 一般的配置
# 启动端口, 默认是8080
server.port=9003
# 应用的名称
spring.application.name=video-service
(2). 数据库驱动配置
# 数据库驱动名称
spring.datasource.driver-class-name=com.mysql.cj.jdbc.Driver
# 数据库的url
spring.datasource.url=jdbc:mysql://127.0.0.1:3306/cloud_video?useUnicode=true&characterEncoding=utf-8&useSSL=false&serverTimezone=GMT
# 数据库用户名和密码
spring.datasource.username=root
spring.datasource.password=123456
(3). nacos注册中心服务发现
# nacos注册中心地址
spring.cloud.nacos.discovery.server-addr=192.168.100.130:8848
# 使用的命名空间
spring.cloud.nacos.discovery.namespace=SpringCPQuestion
# 发现服务
spring.cloud.nacos.discovery.service=$spring.application.name
# 分组
spring.cloud.nacos.group=DEFAULT_GROUP
(4). nacos注册中心配置
bootstrap.properties中配置
# 应用的名称
spring.application.name=video-service
# nacos配置中心地址
spring.cloud.nacos.config.server-addr=192.168.100.130:8848
# 使用的配置文件类型
spring.cloud.nacos.config.file-extension=properties
# 文件后缀
spring.profiles.active=dev
上述配置在注册中心添加配置文件时, 应该以下图方式命名
spring.application.name-spring.profiles.active
(5). Sentinel
# sentinel控制台端口
spring.cloud.sentinel.transport.dashboard=192.168.100.130:8080
# 与sentinel通信的端口
spring.cloud.sentinel.transport.port=9999
(6). Feign
# 开启feign对sentinel的支持
feign.sentinel.enabled=true
(7). Zipkin
1). 配置
# zipkin地址
spring.zipkin.base-url=http://192.168.100.130:9411/
# 不⽤开启服务发现
spring.zipkin.discovery-client-enabled=false
2). 指定数据库启动:
java -jar zipkin-server-x.xx.x-exec.jar --STORAGE_TYPE=mysql --MYSQL_HOST=127.0.0.1 --MYSQL_TCP_PORT=3306 --MYSQL_DB=数据库名字 --MYSQL_USER=root --MYSQL_PASS=数据库密码
3). 指定的数据库建表语句
CREATE TABLE IF NOT EXISTS zipkin_spans (
`trace_id_high` BIGINT NOT NULL DEFAULT 0 COMMENT 'If non zero, this
means the trace uses 128 bit traceIds instead of 64 bit',
`trace_id` BIGINT NOT NULL,
`id` BIGINT NOT NULL,
`name` VARCHAR(255) NOT NULL,
`parent_id` BIGINT,
`debug` BIT(1),
`start_ts` BIGINT COMMENT 'Span.timestamp(): epoch micros used for endTs
query and to implement TTL',
`duration` BIGINT COMMENT 'Span.duration(): micros used for minDuration
and maxDuration query'
) ENGINE=InnoDB ROW_FORMAT=COMPRESSED CHARACTER SET=utf8 COLLATE
utf8_general_ci;
ALTER TABLE zipkin_spans ADD UNIQUE KEY(`trace_id_high`, `trace_id`, `id`)
COMMENT 'ignore insert on duplicate';
ALTER TABLE zipkin_spans ADD INDEX(`trace_id_high`, `trace_id`, `id`) COMMENT 'for joining with zipkin_annotations';
ALTER TABLE zipkin_spans ADD INDEX(`trace_id_high`, `trace_id`) COMMENT 'for
getTracesByIds';
ALTER TABLE zipkin_spans ADD INDEX(`name`) COMMENT 'for getTraces and
getSpanNames';
ALTER TABLE zipkin_spans ADD INDEX(`start_ts`) COMMENT 'for getTraces
ordering and range';
CREATE TABLE IF NOT EXISTS zipkin_annotations (
`trace_id_high` BIGINT NOT NULL DEFAULT 0 COMMENT 'If non zero, this
means the trace uses 128 bit traceIds instead of 64 bit',
`trace_id` BIGINT NOT NULL COMMENT 'coincides with
zipkin_spans.trace_id',
`span_id` BIGINT NOT NULL COMMENT 'coincides with zipkin_spans.id',
`a_key` VARCHAR(255) NOT NULL COMMENT 'BinaryAnnotation.key or
Annotation.value if type == -1',
`a_value` BLOB COMMENT 'BinaryAnnotation.value(), which must be smaller
than 64KB',
`a_type` INT NOT NULL COMMENT 'BinaryAnnotation.type() or -1 if
Annotation',
`a_timestamp` BIGINT COMMENT 'Used to implement TTL;
Annotation.timestamp or zipkin_spans.timestamp',
`endpoint_ipv4` INT COMMENT 'Null when Binary/Annotation.endpoint is
null',
`endpoint_ipv6` BINARY(16) COMMENT 'Null when Binary/Annotation.endpoint
is null, or no IPv6 address',
`endpoint_port` SMALLINT COMMENT 'Null when Binary/Annotation.endpoint
is null',
`endpoint_service_name` VARCHAR(255) COMMENT 'Null when
Binary/Annotation.endpoint is null'
) ENGINE=InnoDB ROW_FORMAT=COMPRESSED CHARACTER SET=utf8 COLLATE
utf8_general_ci;
ALTER TABLE zipkin_annotations ADD UNIQUE KEY(`trace_id_high`, `trace_id`, `span_id`, `a_key`, `a_timestamp`) COMMENT 'Ignore insert on duplicate';
ALTER TABLE zipkin_annotations ADD INDEX(`trace_id_high`, `trace_id`,
`span_id`) COMMENT 'for joining with zipkin_spans';
ALTER TABLE zipkin_annotations ADD INDEX(`trace_id_high`, `trace_id`)
COMMENT 'for getTraces/ByIds';
ALTER TABLE zipkin_annotations ADD INDEX(`endpoint_service_name`) COMMENT 'for getTraces and getServiceNames';
ALTER TABLE zipkin_annotations ADD INDEX(`a_type`) COMMENT 'for getTraces';
ALTER TABLE zipkin_annotations ADD INDEX(`a_key`) COMMENT 'for getTraces';
ALTER TABLE zipkin_annotations ADD INDEX(`trace_id`, `span_id`, `a_key`)
COMMENT 'for dependencies job';
以上是关于Spring Cloud 微服务简单搭建 使用Maven的主要内容,如果未能解决你的问题,请参考以下文章