SpringCloudSpringCloud 快速入门
Posted H__D
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了SpringCloudSpringCloud 快速入门相关的知识,希望对你有一定的参考价值。
SpringCloud简介
Spring Cloud为开发人员提供了快速构建分布式系统中一些常见模式的工具(例如配置管理,服务发现,断路器,智能路由,微代理,控制总线)。分布式系统的协调导致了样板模式, 使用Spring Cloud开发人员可以快速地支持实现这些模式的服务和应用程序。他们将在任何分布式环境中运行良好,包括开发人员自己的笔记本电脑,裸机数据中心,以及Cloud Foundry等托管平台。
官网:https://spring.io/projects/spring-cloud
特点
Spring Cloud专注于为典型的用例和可扩展性机制(包括其他用例)提供良好的开箱即用体验。
-
分布式/版本化配置
-
服务注册和发现
-
路由
-
服务到服务的呼叫
-
负载均衡
-
断路器
-
全局锁
-
领导选举和集群状态
-
分布式消息传递
Spring Cloud 架构图
SpringCloud项目搭建
学习SpringCloud先要有,SpringBoot的相关知识,参考【SpringBoot】SpringBoot快速入门(一)
SpringBoot 是基于 SpringFramework 来构建的,SpringFramework 是一种 J2EE 的框架,SpringBoot 是一种快速构建 Spring 应用,SpringCloud 是构建 Spring Boot 分布式环境,也就是常说的云应用,SpringBoot 中流砥柱,承上启下
本例项目架构
环境准备
1)JDK 环境必须是 1.8 及以上,本例使用版本:1.8.0_181
2)Maven 项目管理工具,3.6.0及以上版本,本例使用版本:3.6.3
3)开发工具使用 IDEA
搭建项目父工程
1、新建一个maven空工程test-springcloud
2、编写pom文件,引入项目所需要依赖的包
本例使用的SpringBoot版本是2.2.5.RELEASE,SpringCloud版本是Hoxton.SR3
使用其他版本,需要注意SpringBoot和SpringCloud版本的兼容问题
1 <!-- spring boot --> 2 <dependency> 3 <groupId>org.springframework.boot</groupId> 4 <artifactId>spring-boot-dependencies</artifactId> 5 <version>2.2.5.RELEASE</version> 6 <type>pom</type> 7 <scope>import</scope> 8 </dependency> 9 <!-- spring cloud --> 10 <dependency> 11 <groupId>org.springframework.cloud</groupId> 12 <artifactId>spring-cloud-dependencies</artifactId> 13 <version>Hoxton.SR3</version> 14 <type>pom</type> 15 <scope>import</scope> 16 </dependency>
完整pom文件如下:
1 <?xml version="1.0" encoding="UTF-8"?> 2 <project xmlns="http://maven.apache.org/POM/4.0.0" 3 xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" 4 xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd"> 5 <modelVersion>4.0.0</modelVersion> 6 7 <groupId>com.test</groupId> 8 <artifactId>test-springcloud</artifactId> 9 <version>1.0-SNAPSHOT</version> 10 <packaging>pom</packaging> 11 12 13 <modules> 14 <module>test-springcloud-eureka-server8761</module> 15 <module>test-springcloud-order8000</module> 16 <module>test-springcloud-provider-payment8001</module> 17 </modules> 18 19 20 <!-- 统一管理jar包版本 --> 21 <properties> 22 <spring-boot.version>2.2.5.RELEASE</spring-boot.version> 23 <spring-cloud.version>Hoxton.SR3</spring-cloud.version> 24 <!-- <spring-cloud-alibaba.version>2.1.0.RELEASE</spring-cloud-alibaba.version>--> 25 <mybatis-spring-boot.version>2.1.2</mybatis-spring-boot.version> 26 <mysql.version>8.0.12</mysql.version> 27 <druid.version>1.1.21</druid.version> 28 <lombok.version>1.18.12</lombok.version> 29 <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding> 30 <project.reporting.outputEncoding>UTF-8</project.reporting.outputEncoding> 31 <java.version>1.8</java.version> 32 </properties> 33 34 35 <!-- 依赖管理:子模块继承后,提供作用:锁定版本 + 子module 不用写 version --> 36 <dependencyManagement> 37 <dependencies> 38 <!-- spring boot --> 39 <dependency> 40 <groupId>org.springframework.boot</groupId> 41 <artifactId>spring-boot-dependencies</artifactId> 42 <version>${spring-boot.version}</version> 43 <type>pom</type> 44 <scope>import</scope> 45 </dependency> 46 <!-- spring cloud --> 47 <dependency> 48 <groupId>org.springframework.cloud</groupId> 49 <artifactId>spring-cloud-dependencies</artifactId> 50 <version>${spring-cloud.version}</version> 51 <type>pom</type> 52 <scope>import</scope> 53 </dependency> 54 <!-- spring cloud alibaba --> 55 <!-- <dependency>--> 56 <!-- <groupId>com.alibaba.cloud</groupId>--> 57 <!-- <artifactId>spring-cloud-alibaba-dependencies</artifactId>--> 58 <!-- <version>${spring-cloud-alibaba.version}</version>--> 59 <!-- <type>pom</type>--> 60 <!-- <scope>import</scope>--> 61 <!-- </dependency>--> 62 63 <!-- mybatis --> 64 <dependency> 65 <groupId>org.mybatis.spring.boot</groupId> 66 <artifactId>mybatis-spring-boot-starter</artifactId> 67 <version>${mybatis-spring-boot.version}</version> 68 </dependency> 69 70 <!-- mysql --> 71 <dependency> 72 <groupId>mysql</groupId> 73 <artifactId>mysql-connector-java</artifactId> 74 <version>${mysql.version}</version> 75 </dependency> 76 77 <!-- druid --> 78 <dependency> 79 <groupId>com.alibaba</groupId> 80 <artifactId>druid-spring-boot-starter</artifactId> 81 <version>${druid.version}</version> 82 </dependency> 83 84 <!-- lombok --> 85 <dependency> 86 <groupId>org.projectlombok</groupId> 87 <artifactId>lombok</artifactId> 88 <version>${lombok.version}</version> 89 </dependency> 90 91 <!-- test --> 92 <dependency> 93 <groupId>org.springframework.boot</groupId> 94 <artifactId>spring-boot-starter-test</artifactId> 95 <version>${spring-boot.version}</version> 96 <scope>test</scope> 97 <exclusions> 98 <exclusion> 99 <groupId>org.junit.vintage</groupId> 100 <artifactId>junit-vintage-engine</artifactId> 101 </exclusion> 102 </exclusions> 103 </dependency> 104 </dependencies> 105 </dependencyManagement> 106 107 <!-- SpringBoot打包插件,可以将代码打包成一个可执行的jar包 --> 108 <build> 109 <finalName>${project.artifactId}</finalName> 110 <plugins> 111 <plugin> 112 <groupId>org.apache.maven.plugins</groupId> 113 <artifactId>maven-compiler-plugin</artifactId> 114 <configuration> 115 <source>${java.version}</source> 116 <target>${java.version}</target> 117 </configuration> 118 </plugin> 119 <plugin> 120 <groupId>org.springframework.boot</groupId> 121 <artifactId>spring-boot-maven-plugin</artifactId> 122 <version>${spring-boot.version}</version> 123 <configuration> 124 <fork>true</fork> 125 <addResources>true</addResources> 126 </configuration> 127 </plugin> 128 </plugins> 129 </build> 130 </project> 131 132 pom.xml
3、项目结构图如下:
搭建Eureka注册中心
即Eureka的服务端
1、在父项目上,new module 新建一个模块Eureka注册中心,及Eureka服务端 test-springboot-eureka-server8761
2、编写pom.xml文件
Eureka服务端依赖如下:
1 <!-- eureka server --> 2 <dependency> 3 <groupId>org.springframework.cloud</groupId> 4 <artifactId>spring-cloud-starter-netflix-eureka-server</artifactId> 5 </dependency>
完整pom.xml文件如下:
1 <?xml version="1.0" encoding="UTF-8"?> 2 <project xmlns="http://maven.apache.org/POM/4.0.0" 3 xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" 4 xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd"> 5 <parent> 6 <artifactId>test-springcloud</artifactId> 7 <groupId>com.test</groupId> 8 <version>1.0-SNAPSHOT</version> 9 </parent> 10 <modelVersion>4.0.0</modelVersion> 11 12 <artifactId>test-springcloud-eureka-server8761</artifactId> 13 14 <dependencies> 15 <!-- eureka server --> 16 <dependency> 17 <groupId>org.springframework.cloud</groupId> 18 <artifactId>spring-cloud-starter-netflix-eureka-server</artifactId> 19 </dependency> 20 21 <!-- spring boot --> 22 <dependency> 23 <groupId>org.springframework.boot</groupId> 24 <artifactId>spring-boot-starter-web</artifactId> 25 </dependency> 26 <dependency> 27 <groupId>org.springframework.boot</groupId> 28 <artifactId>spring-boot-starter-actuator</artifactId> 29 </dependency> 30 <dependency> 31 <groupId>org.springframework.boot</groupId> 32 <artifactId>spring-boot-devtools</artifactId> 33 <scope>runtime</scope> 34 <optional>true</optional> 35 </dependency> 36 37 <dependency> 38 <groupId>org.springframework.boot</groupId> 39 <artifactId>spring-boot-starter-test</artifactId> 40 <scope>test</scope> 41 </dependency> 42 43 </dependencies> 44 45 <build> 46 <finalName>test-springcloud-eureka-server8761</finalName> 47 </build> 48 </project>
3、编写application.yml配置文件
1 # 端口 2 server: 3 port: 8761 4 5 spring: 6 application: 7 name: cloud-eureka-server 8 9 # Eureka配置 10 eureka: 11 instance: 12 # eureka服务端的实例名称 13 hostname: localhost 14 client: 15 # false表示不向注册中心注册自己 16 register-with-eureka: false 17 # false表示自己端就是注册中心,职责就是维护服务实例,并不需要去检查服务 18 fetch-registry: false 19 # 设置与Eureka Server交互的地址查询服务和注册服务都需要依赖这个地址 20 service-url: 21 defaultZone: http://localhost:8761/eureka
4、编辑SpringBoot启动类EurekaMain8761.java,并使用@EnableEurekaServer
1 // Eureka服务端 2 @EnableEurekaServer 3 @SpringBootApplication 4 public SpringCloudSpringCloud 简单的 Demospringcloudspringcloud与springboot的版本对应关系
SpringCloudSpringCloud 之 Eureka注册中心