前言:学习和使用SpringCloud是从2017年底开始的,当时项目选择框架的时候定的就是springboot的全家桶,到现在已经整整一年时间了,期间也遇到了很多问题,每次都是看官方文档或者学习优秀的博客来解决,但是总感觉只是都是零碎的点,没有连成线,结成网,所以计划有空的时候就把相关的内容做一个系列记录下来,这个系列的文章是结合自己学习的视频和文章加上自己实际做的项目总结出来的。其中肯定有疏漏和不详实的内容,希望观看文章的小伙伴能帮我指出来,我都会亲自验证各位提出的问题,并将验证的结果更新在这个系列文章中。写这个系列的动机也很简单明确——整理自己技能、和大家交流、帮助更多想更加全面掌握SpringCloud的人。
好的,废话到此结束,下面开始第一篇文章:注册中心Eureka的搭建
其实就我实践的经验来看,相信很多初学的人跟我一样,刚开始的时候分不清楚SpringBoot和SpringCloud的版本关系。其实SpringCloud是建立在SpringBoot的基础之上的,所有要学习SpringCloud就必须先选择一个合适版本的SpringBoot。如果用maven构建工程的话,如果你不会选版本,教你一个小窍门,到官方网站的SpringBoot项目页面:https://spring.io/projects/spring-boot
然后按照下面的步骤:
点完第3步跳转到下面的页面:
在Search for dependencies下面的搜索框输入Eureka关键字,就会出现Eureka相关的依赖组件,因为这里我要搭建Eureka注册中心,所以选择第二个Eureka Server,然后点击下面的Generate Project按钮,这样就会自动下载一个名字叫demo的maven构建的项目了,你可以直接导入你的IDE,也可以自己构建maven工程,然后把里面的依赖信息粘贴到你的pom文件里面,这样SpringBoot和SpringCloud的版本关系就轻松解决了,是不是很简单。注意,这种方式生成的是最新版本的依赖。
下面把pom.xml依赖粘贴出来,大家可以直接使用:
<!--SpringBoot parent依赖-->
<parent>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-parent</artifactId>
<!--这里指定版本号,下面的dependency相关的SpringBoot组件就不需要指定版本好啦,自动继 承-->
<version>2.1.0.RELEASE</version>
<relativePath/> <!-- lookup parent from repository -->
</parent>
<properties>
<project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
<project.reporting.outputEncoding>UTF-8</project.reporting.outputEncoding>
<java.version>1.8</java.version>
<spring-cloud.version>Greenwich.M1</spring-cloud.version>
</properties>
<dependencies>
<!--这就是Eureka Server组件-->
<dependency>
<groupId>org.springframework.cloud</groupId>
<artifactId>spring-cloud-starter-netflix-eureka-server</artifactId>
</dependency>
<!--这监控相关组件,暂时保留,后续会有用-->
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-actuator</artifactId>
</dependency>
</dependencies>
<!--这里指定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>
<!--这里是SpringBoot的maven插件-->
<build>
<plugins>
<plugin>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-maven-plugin</artifactId>
</plugin>
</plugins>
</build>
<!--这里是Spring的仓库地址-->
<repositories>
<repository>
<id>spring-milestones</id>
<name>Spring Milestones</name>
<url>https://repo.spring.io/milestone</url>
<snapshots>
<enabled>false</enabled>
</snapshots>
</repository>
</repositories>
下面是properties.yml文件配置,也可以直接粘贴使用:
####当前服务启动端口号
server:
port: 8761
####eureka基本信息配置
spring:
####启动加载配置文件,组册中心集群时可以指定启用选择的配置文件
profiles: peer1
application:
####当前应用服务的名称
name: eureka-server
eureka:
instance:
####注册中心|域名
hostname: localhost
#preferIpAddress: true
client:
serviceUrl:
####注册中心地址(单节点)
defaultZone: http://${eureka.instance.hostname}:${server.port}/eureka/
####注册中心地址(集群,填写其他节点地址)
#defaultZone: http://${eureka.instance.hostname}:8762/eureka/
####因为自己是注册中心,是否需要将自己注册给自己的注册中心,(eureka集群的时候是需要设置为true)默认为true,所以eureka client端可以不设置此参数
registerWithEureka: false
####获取eureka注册中心上的服务列表,默认为true(同上面的属性一起一起使用)
fetchRegistry: false
好的,到这里基本的配置信息就结束了,是不是很简单,下面贴出工程目录结构:(maven聚合项目)
AppEurekaServer.java代码:
package eurekaserver;
import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;
import org.springframework.cloud.netflix.eureka.server.EnableEurekaServer;
@SpringBootApplication//这个注解表示为SpringBoot启动类
@EnableEurekaServer//将服务作为eureka注册中心
public class AppEurekaServer {
public static void main(String[] args){
SpringApplication.run(AppEurekaServer.class, args);
}
}
因为我们的properties.yml文件中指定了spring.profiles=peer1,所以启动上面的主类的时候要指定如下环境变量参数:目的是指定加载的配置文件
这样启动AppEurekaServer类之后,如果没有报错信息,控制台会打印启动成功的信息。然后我们在浏览器的地址栏输入:http://127.0.0.1:8761/就会出现下面的页面:
到此为止,我们的Eureka注册中心就搭建成功了,是不是很简单呀!~
这是项目的github地址:https://github.com/wjzuo/SpringCloud2.0.git
如有疏漏,欢迎留言谈论,或者在github上提交修改,提交修改时请添加备注信息,详情请加QQ群讨论:807597909
让SpringCloud不再难学,需要你的助力!