前言
最近入职了新公司,主要负责Java后端开发工作。目前正在开展一个全新的业务,技术选型为SpringCloud全家桶,项目的骨架由我负责搭建。由于前几家公司的微服务框架都是使用Dubbo + SpringBoot,然后平时对SpringCloud 这一套了解不多。这两天正好有时间可以研究下SpringCloud如何使用、SpringCloud 如何与其他组件整合。
一、SpringCloud简介
SpringCloud 是基于SpringBoot提供一整套的微服务解决方案,包括服务注册与发现、配置中心、消息总线、服务网关、负载均衡、熔断器、全链路监控等组件。除了Netfix提供的开源组件外,还有一些第三方的开源组件可以使用。
开发者可以很方便的将微服务中常用组件无缝整合进SpringCloud中,然后通过SpringBoot风格进行封装和屏蔽掉底层复杂的配置和实现原理,非常容易上手。简单来说,SpringCloud 就是分布式微服务的一站式解决方案,俗称SpringCloud全家桶。
二、SpringCloud和SpringBoot的关系
- SpringBoot: 专注于方便快速开发单个微服务系统。
- SpringCloud: 微服务系统协调治理框架,就是将SpringBoot开发的多个微服务管理起来。
- SpringBoot 可以不依赖SpringCloud独立使用,而SpringCloud的使用一定离不开SpringBoot。
三、项目搭建
3.1 环境准备
- 开发工具IDEA
- JDK1.8
- Apache Maven 3.5.2,使用阿里云镜像
- SpringBoot 2.1.3.RELEASE 版本
- SpringCloud Greenwich.SR1 版本
3.2 父项目
创建一个名称为 spring-cloud-parent 的pom项目。主要是用来管理SpringBoot、SpringCloud,及其他各种jar 包依赖。pom文件内容如下:
<?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>
<groupId>com.gallenzhang</groupId>
<artifactId>spring-cloud-parent</artifactId>
<version>1.0.0-SNAPSHOT</version>
<packaging>pom</packaging>
<name>spring-cloud-parent</name>
<properties>
<spring-boot.version>2.1.3.RELEASE</spring-boot.version>
<spring-cloud.version>Greenwich.SR1</spring-cloud.version>
<spring-cloud-alibaba.version>2.1.0.RELEASE</spring-cloud-alibaba.version>
<mybatis-spring-boot.version>2.1.2</mybatis-spring-boot.version>
<mysql.version>5.1.26</mysql.version>
<lombok.version>1.18.12</lombok.version>
<java.version>1.8</java.version>
</properties>
<dependencyManagement>
<dependencies>
<!-- spring-boot 依赖-->
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-dependencies</artifactId>
<version>${spring-boot.version}</version>
<type>pom</type>
<scope>import</scope>
</dependency>
<!-- spring-cloud 依赖-->
<dependency>
<groupId>org.springframework.cloud</groupId>
<artifactId>spring-cloud-dependencies</artifactId>
<version>${spring-cloud.version}</version>
<type>pom</type>
<scope>import</scope>
</dependency>
<!-- spring-cloud-alibaba 依赖-->
<dependency>
<groupId>com.alibaba.cloud</groupId>
<artifactId>spring-cloud-alibaba-dependencies</artifactId>
<versio