这是我学习《微服务从小白到专家》的学习笔记。官方代码地址:https://github.com/banxian-yao/broadview-coupon-center
第三章
第三章直接使用官方代码,所有的依赖服务:mysql, redis, kafka, rabbitmq,自己都使用Docker进行安装,使用docker-compose进行管理,docker-compose.yml
内容如下:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
|
version: "3.9"
services:
mysql80:
container_name: mysql80
image: mysql
ports:
- "3306:3306"
volumes:
- "./data/mysql:/var/lib/mysql"
environment:
- MYSQL_ROOT_PASSWORD=password
zookeeper:
container_name: zookeeper
image: zookeeper
ports:
- "2181:2181"
kafka:
container_name: kafka
image: wurstmeister/kafka
ports:
- "9092:9092"
environment:
- KAFKA_ADVERTISED_HOST_NAME=192.168.0.106
- KAFKA_ZOOKEEPER_CONNECT=zookeeper:2181
rabbitmq:
container_name: rabbitmq
image: rabbitmq:management
ports:
- "5672:5672"
- "15672:15672"
environment:
- RABBITMQ_DEFAULT_USER=guest
- RABBITMQ_DEFAULT_PASS=guest
redis:
container_name: redis
image: redis
ports:
- "6379:6379"
|
写docker-compose.yml
配置的时候需要注意的几点:
- 升级spring boot到2.5.6版本
- 里面有
commons-collections4
和commons-lang3
依赖的地方的版本特别注意,在最顶层的pom.xml里面重复写了两个,需要删掉一个。每个module下面也写了版本号,需要把版本号去掉
- KAFKA_ADVERTISED_HOST_NAME 改成自己物理机的IP地址
- RABBITMQ_DEFAULT_USER 和 RABBITMQ_DEFAULT_PASS 都是guest,而且rabbitmq启动之后必须在admin ui里面手动创建
broadview.queue
这个queue
第五章 Eureka
对spring-cloud-dependencies
的依赖升级到2020.0.4
1
|
<spring.cloud-version>2020.0.4</spring.cloud-version>
|
1
2
3
4
5
6
7
8
9
10
11
|
<dependencyManagement>
<dependencies>
<dependency>
<groupId>org.springframework.cloud</groupId>
<artifactId>spring-cloud-dependencies</artifactId>
<version>${spring.cloud-version}</version>
<type>pom</type>
<scope>import</scope>
</dependency>
</dependencies>
</dependencyManagement>
|
需要额外引用gson
的依赖
1
2
3
4
5
|
<dependency>
<groupId>com.google.code.gson</groupId>
<artifactId>gson</artifactId>
<version>2.8.8</version>
</dependency>
|
EurekaApplication
上面的注解是EnableEurekaServer
,书中写的是EnableDiscoveryClient
是错误的。
浏览器访问的时候是不需要/eureka
这个endpoint。
第六章 Nacos
各依赖版本分别如下:
Spring Boot: 2.5.6
Spring Cloud: 2020.0.4
Nacos Config: 2021.1
特别注意的一点是需要添加如下的依赖:
1
2
3
4
|
<dependency>
<groupId>org.springframework.cloud</groupId>
<artifactId>spring-cloud-starter-bootstrap</artifactId>
</dependency>
|
配置管理
需要先启动nacos server,可以使用docker的方式快速启动一个standalone的容器。git clone https://github.com/nacos-group/nacos-docker
之后进行nacos-docker目录,使用docker-compose -f example/standalone-derby.yaml up -d
启动nacos server。
启动之后访问http://localhost:8848/nacos
使用用户密码均为nacos
的账号进行登录,创建一个spring.application.name
的dataID,特别需要注意的是要把后缀名给加上,比如nacos-demo.properties
。
完整的pom.xml如下:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
|
<?xml version="1.0" encoding="UTF-8"?>
<project xmlns="http://maven.apache.org/POM/4.0.0"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
<modelVersion>4.0.0</modelVersion>
<parent>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-parent</artifactId>
<version>2.5.6</version>
</parent>
<groupId>org.example</groupId>
<artifactId>NacosDemo</artifactId>
<version>1.0-SNAPSHOT</version>
<properties>
<maven.compiler.source>11</maven.compiler.source>
<maven.compiler.target>11</maven.compiler.target>
<spring-cloud.version>2020.0.4</spring-cloud.version>
<nacos.version>2021.1</nacos.version>
</properties>
<dependencies>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-web</artifactId>
</dependency>
<dependency>
<groupId>org.springframework.cloud</groupId>
<artifactId>spring-cloud-starter</artifactId>
</dependency>
<dependency>
<groupId>org.springframework.cloud</groupId>
<artifactId>spring-cloud-starter-bootstrap</artifactId>
</dependency>
<dependency>
<groupId>com.alibaba.cloud</groupId>
<artifactId>spring-cloud-starter-alibaba-nacos-config</artifactId>
</dependency>
</dependencies>
<dependencyManagement>
<dependencies>
<dependency>
<groupId>org.springframework.cloud</groupId>
<artifactId>spring-cloud-dependencies</artifactId>
<version>${spring-cloud.version}</version>
<type>pom</type>
<scope>import</scope>
</dependency>
<dependency>
<groupId>com.alibaba.cloud</groupId>
<artifactId>spring-cloud-alibaba-dependencies</artifactId>
<version>${nacos.version}</version>
<type>pom</type>
<scope>import</scope>
</dependency>
</dependencies>
</dependencyManagement>
<build>
<plugins>
<plugin>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-maven-plugin</artifactId>
</plugin>
</plugins>
</build>
</project>
|
服务注册与服务发现
2021.1版本的alibaba nacos已经不包含Ribbon负载均衡了,可以使用spring cloud loadbalancer,包含如下的依赖到consumer的pom.xml
即可:
1
2
3
4
|
<dependency>
<groupId>org.springframework.cloud</groupId>
<artifactId>spring-cloud-starter-loadbalancer</artifactId>
</dependency>
|