前言

0
字数 1k
阅读时间 2 分钟

前段时间看完了几个不同版本的 Spring Cloud 教程,趁着还有些记忆,把学习过程中遇到的问题和细节记录下来,包括Spring Cloud 版本更新导致的依赖/配置不可使用,免得以后犯同样的错误。
我自己理解的微服务就是根据服务拆分和集群提高系统可用性,以在可控的程度上减少服务故障造成的损失,整个文章系列都是基于这个理念来写的,微服务的其他特性不会有所体现。
如果不做特殊说明,以后相关文章的必需组件和项目结构都以本文为准,往后章节都以上一章节代码为基础,默认每个项目都使用 yml 做项目配置,默认添加 spring-boot-starter-actuator 系统监控依赖。
目前写文目的仅限于自己搭建 doom 学习,偏实用,对原理一知半解,如果用于线上环境基本上是 100%要出问题的。

准备工作

使用服务/组件版本及端口

组件 版本 端口
RabbitMQ 3.7.15 连接端口 5672
管理页面端口 15672
密码 guest:guest
Zipkin 2.16.2 连接端口/管理页面端口 9411
Redis unknown 连接端口 6379
密码为空
Mysql 5.7 连接端口 3306
密码 root:root
Spring Cloud Hoxton.RELEASE
Spring Cloud Alibaba 0.9.0.RELEASE
Spring Boot 2.2.2.RELEASE Spring Boot Security 密码统一为 admin:admin
JDK 8

组件

组件 作用
Eureka 服务发现、注册
Feign+Hystrix 服务间调用,熔断保护
Spring Cloud Gateway 网关(限流,请求过滤,请求分发)
HystrixDashboard+Turbine 熔断监控聚合可视化
Spring Cloud Config+Git 配置中心
RabbitMQ 消息中间件
Elasticsearch 日志持久化
Sleuth 日志收集
Zipkin 日志追踪
Hystrix Dashboard+Turbine 熔断仪表盘

创建父项目

以后的子模块统一继承此项目下面的子项目,自行在子项目的 modules 标签中添加子模块名称,以后不再作说明。父项目命名为 cloud,pom.xml 内容为:

<?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.2.2.RELEASE</version>
<relativePath/> <!-- lookup parent from repository -->
</parent>
<packaging>pom</packaging>

<groupId>com.github.liuzhuoming23</groupId>
<artifactId>cloud</artifactId>
<version>0.0.1-SNAPSHOT</version>
<name>cloud</name>
<description>Demo project for Spring Boot</description>

<properties>
<java.version>8</java.version>
<spring-cloud.version>Hoxton.RELEASE</spring-cloud.version>
</properties>

<modules>
</modules>

<repositories>
<repository>
<id>aliyun-maven</id>
<url>http://maven.aliyun.com/nexus/content/groups/public/</url>
</repository>
</repositories>

<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>

</project>

创建二级父项目

注册中心(discovery-center)

<?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>com.github.liuzhuoming23</groupId>
<artifactId>cloud</artifactId>
<version>0.0.1-SNAPSHOT</version>
</parent>
<packaging>pom</packaging>

<artifactId>discovery-center</artifactId>
<version>0.0.1-SNAPSHOT</version>
<name>discovery-center</name>
<description>Demo project for Spring Cloud</description>

<modules>
<module>discovery-center</module>
<module>config-center</module>
<module>route-center</module>
<module>monitor-center</module>
</modules>

</project>

配置中心(config-center)

<?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>com.github.liuzhuoming23</groupId>
<artifactId>cloud</artifactId>
<version>0.0.1-SNAPSHOT</version>
</parent>
<packaging>pom</packaging>

<artifactId>config-center</artifactId>
<version>0.0.1-SNAPSHOT</version>
<name>config-center</name>
<description>Demo project for Spring Cloud</description>

<modules>
</modules>

</project>

监控中心(monitor-center)

<?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>com.github.liuzhuoming23</groupId>
<artifactId>cloud</artifactId>
<version>0.0.1-SNAPSHOT</version>
</parent>
<packaging>pom</packaging>

<artifactId>monitor-center</artifactId>
<version>0.0.1-SNAPSHOT</version>
<name>monitor-center</name>
<description>Demo project for Spring Cloud</description>

<modules>
</modules>

</project>

路由中心(route-center)

<?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>com.github.liuzhuoming23</groupId>
<artifactId>cloud</artifactId>
<version>0.0.1-SNAPSHOT</version>
</parent>
<packaging>pom</packaging>

<artifactId>route-center</artifactId>
<version>0.0.1-SNAPSHOT</version>
<name>route-center</name>
<description>Demo project for Spring Cloud</description>

<modules>
</modules>

</project>

服务提供中心(server-center)

<?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>com.github.liuzhuoming23</groupId>
<artifactId>cloud</artifactId>
<version>0.0.1-SNAPSHOT</version>
</parent>
<packaging>pom</packaging>

<artifactId>server-center</artifactId>
<version>0.0.1-SNAPSHOT</version>
<name>server-center</name>
<description>Demo project for Spring Cloud</description>

<modules>
</modules>

</project>

系列文章 #Spring Cloud

(1)前言

(2)注册中心-Eureka

(3)服务间调用-Feign(🔒)

(4)路由中心-Gateway

(5)配置中心-Config

(6)配置中心-Bus

(7)监控中心-Admin

(8)监控中心-Sleuth+Zipkin(🔒)

(9)监控中心-Elasticsearch+Zipkin(🔒)

(10)监控中心-HystrixDashboard+Turbine(🔒)

(11)授权中心-Oauth2+JWT

(12)注册中心/配置中心-Nacos

(13)动态路由-Gateway

(14)授权中心-Oauth2+JWT补全


注册中心-Eureka Bloom filter(布隆过滤器)