源码地址:
前言
通过前三篇文章, 用大白话介绍了微服务和 SpringCloud 以及服务治理相关的概念, 从这篇开始 SpringCloud 代码的开发.
SpringCloud 项目环境搭建
SpringCloud 所有的 demo 都会采用 多模块开发 的方式, 通过父项目约束整个项目所有 Module 的版本, 如果你不知道什么是 多模块开发, 请阅读我的文章: SpringBoot 多模块开发 https://mp.weixin.qq.com/s/CDWnG0wr6hk6TvDYIELIaQ
创建父项目「约束版本」
父项目最大的作用就是约束版本, 所有的步骤请严格按照教程进行, 会有全面的截图
1. 在 IDEA 中创建一个 maven 项目 (project)
2. 修改 pom 文件
SpringCloud 版本选择: Finchley.SR2,SpringBoot 版本选择: 2.0.3.RELEASE
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>
- <!--Finchley 版本的 SpringCloud 依赖 2.0.X 的 SpringBoot -->
- <parent>
- <groupId>org.springframework.boot</groupId>
- <artifactId>spring-boot-starter-parent</artifactId>
- <version>2.0.3.RELEASE</version>
- <relativePath/> <!-- lookup parent from repository -->
- </parent>
- <groupId>com.lby</groupId>
- <artifactId>cloud-demo-20f</artifactId>
- <version>1.0-SNAPSHOT</version>
- <!-- 父级项目 使用 pom-->
- <packaging>pom</packaging>
- <properties>
- <java.version>1.8</java.version>
- <!-- 定义 SpringCloud 的版本号 -->
- <spring-cloud.version>Finchley.SR2</spring-cloud.version>
- </properties>
- <!-- 约束整个项目的 SpringCloud 版本 -->
- <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>
- <!-- 插件配置 -->
- <build>
- <plugins>
- <plugin>
- <groupId>org.springframework.boot</groupId>
- <artifactId>spring-boot-maven-plugin</artifactId>
- </plugin>
- </plugins>
- </build>
- </project>
Eureka 注册中心开发「单机版」
1. 基于 Project 创建一个新的 Module
至于骨架, 不选择任何骨架, maven 还是 Spring Initializr 主要看个人习惯, 我选择 maven.
2. 修改 eureka-server-8801 项目的 pom 文件
观察 pom 文件可以发现, eureka-server-8801 项目已经自动继承了父项目
注册中心的完整 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">
- <!-- 通过 maven 方式创建的项目, 可以看到已经自动的继承了父项目, 所以我们
- 只需要配置依赖就可以了
- -->
- <parent>
- <artifactId>cloud-demo-20f</artifactId>
- <groupId>com.lby</groupId>
- <version>1.0-SNAPSHOT</version>
- </parent>
- <modelVersion>4.0.0</modelVersion>
- <artifactId>eureka-server-8801</artifactId>
- <dependencies>
- <!-- 导入注册中心的依赖 -->
- <dependency>
- <groupId>org.springframework.cloud</groupId>
- <artifactId>spring-cloud-starter-netflix-eureka-server</artifactId>
- </dependency>
- </dependencies>
- </project>
3. 创建 SpringBoot 的启动类, 添加注解
代码如下:
- package com.lby;
- import org.springframework.boot.SpringApplication;
- import org.springframework.boot.autoconfigure.SpringBootApplication;
- import org.springframework.cloud.netflix.eureka.server.EnableEurekaServer;
- /**
- * @author luxiaoyang
- * @create 2020-03-29-16:16
- * @SpringBootApplication 声明当前类为 SpringBoot 的启动类
- * @EnableEurekaServer 声明当前项目为注册中心
- */
- @SpringBootApplication
- @EnableEurekaServer
- public class EurekaServer8801 {
- public static void main(String[] args) {
- SpringApplication.run(EurekaServer8801.class,args);
- }
- }
4. 创建配置文件, 写入注册中心的配置
- server:
- port: 8801
- eureka:
- client:
- # 在默认设置下, 该服务注册中心也会将自己作为客户端来尝试注册它自己, 所以我们需要禁用它的客户端注册行为
- # 因为当前服务就是注册中心 不需要向任何人注册
- # eureka.client. register-with-eureka: 由于该应用为注册中心, 所以设置为 false, 代表不向注册中心注册自己
- registerWithEureka: false
- # eureka. client . fetch-registry: 由于注册中心的职责就是维护服务实例, 它并不需要去检索服务, 所以也设置为 false.
- # 不主动发现别人
- fetchRegistry: false
- # 声明注册中心的地址
- serviceUrl:
- defaultZone: http://localhost:8801/eureka/
通过以上四步 就完成注册中心的搭建
5. 启动项目, 访问 http://localhost:8801 可以访问注册中心的管理页面
No application available 目前没有客户端注册到注册中心
Eureka 客户端开发
不用关闭注册中心, 接下来创建一个客户端, 让客户端注册到注册中心上
创建客户端的步骤和注册中心类似
创建项目结构
修改 pom
修改启动类
修改配置文件
1. 创建客户端项目 eureka-client-8803
2. 修改 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">
- <parent>
- <artifactId>cloud-demo-20f</artifactId>
- <groupId>com.lby</groupId>
- <version>1.0-SNAPSHOT</version>
- </parent>
- <modelVersion>4.0.0</modelVersion>
- <artifactId>eureka-client-8803</artifactId>
- <dependencies>
- <!-- Eureka 客户端的依赖 -->
- <dependency>
- <groupId>org.springframework.cloud</groupId>
- <artifactId>spring-cloud-starter-netflix-eureka-client</artifactId>
- </dependency>
- <!-- web 的依赖 -->
- <dependency>
- <groupId>org.springframework.boot</groupId>
- <artifactId>spring-boot-starter-Web</artifactId>
- </dependency>
- <!-- 测试的依赖 -->
- <dependency>
- <groupId>org.springframework.boot</groupId>
- <artifactId>spring-boot-starter-test</artifactId>
- <scope>test</scope>
- </dependency>
- </dependencies>
- </project>
3. 创建启动类
- package com.lby;
- import org.springframework.boot.SpringApplication;
- import org.springframework.boot.autoconfigure.SpringBootApplication;
- import org.springframework.cloud.netflix.eureka.EnableEurekaClient;
- /**
- * @EnableDiscoveryClient 声明当前项目为一个 Eureka 客户端 可以被发现的客户端
- * @EnableEurekaClient 声明当前项目为一个 Eureka 客户端
- *
- * 区别:
- * @EnableEurekaClient 只能向 Eureka 注册中心注册
- * @EnableDiscoveryClient 除了向 Eureka 注册中心注册 可以向其他的注册中心注册 zookeeper consul
- */
- @SpringBootApplication
- @EnableEurekaClient
- public class EurekaClient8803 {
- public static void main(String[] args) {
- SpringApplication.run(EurekaClient8803.class,args);
- }
- }
4. 创建并修改配置文件
通过上面的四步, 就完成一个 Eureka 客户端的搭建
5. 启动项目 观察注册中心的监控页面 看一看有没有服务注册到注册中心
确保注册中心和客户端都启动了
打开注册中心的网址 http://localhost:8803 可以看到
通过以上步骤就完成了最基本的注册中心和客户端的开发
总结
源码地址:
通过 SpringCloud 做微服务开发, 不管是注册中心, 还是客户端, 还是网关等, SpringCloud 几乎所有的组件都是四板斧:
导入依赖
启动类上加注解
写配置文件
直接使用
恭喜你完成了本章的学习, 为你鼓掌! 如果本文对你有帮助, 请帮忙点赞, 评论, 转发, 这对作者很重要, 谢谢.
要掌握 SpringCloud 更多的用法, 请持续关注本系列教程.
求关注, 求点赞, 求转发
来源: https://www.cnblogs.com/bingyang-py/p/12593488.html