您的位置:首页 > 编程语言 > Java开发

Spring Cloud 学习记录及实践(1)-DS 服务注册中心

2020-04-23 11:54 274 查看

在正式学习Spring Cloud之前,可能需要先了解一下微服务的概念。知乎有文: https://zhuanlan.zhihu.com/p/24777431
Spring Cloud 简介

Spring Cloud为开发人员提供了快速构建分布式系统中一些常见模式的工具(例如配置管理,服务发现,断路器,智能路由,微代理,控制总线)。分布式系统的协调导致了样板模式, 使用Spring Cloud开发人员可以快速地支持实现这些模式的服务和应用程序。他们将在任何分布式环境中运行良好,包括开发人员自己的笔记本电脑,裸机数据中心,以及Cloud Foundry等托管平台。(官网照搬)

在 Spring Cloud 中有多种服务注册中心的实现,包括支持最好的Eureka,基于zookeeper的注册中心等等。本质上的区别在这里就不赘述了。本文使用Eureka作为整个学习demo的服务注册中心,包括后面会用到的服务中心的HA机制。

下面就开始搭建一个最基本的Spring Cloud项目。项目全程使用maven来构建,如果不熟悉maven的童鞋可以自己先了解下maven。

当然这里创建 Spring Cloud项目有多种方式,最方便的方式是使用IDEA直接创建一个Spring Cloud项目

使用maven的方式
1. 创建一个根目录的文件夹,用于存放以后所有Spring Cloud项目的相关项目,然后在IDEA中打开这个文件夹 Spring-Cloud-Project
2. 创建一个基本的maven项目。右键IDEA中打开的文件夹,选择new -> module 选中maven选项,选中Create from archetype, 在archetype列表中选择 maven-archetype-quickstart -> next, 指定groupId 为 com.bool.spring, artifactId 为 eureka-server。然后一直next 直到项目创建完成。至此 不出意外一个基本的maven项目创建完毕
结构如下:

--Spring-Cloud-Project
--eureka-server
--src
--main
--java
--resources
--test
--pom.xml

3. 打开eureka-server, 在pom.xml文件中引入如下代码

<parent>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-parent</artifactId>
<version>1.5.7.RELEASE</version>
<relativePath/>
</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>Dalston.SR3</spring-cloud.version>
</properties>

<dependencies>
<!--eureka server -->
<dependency>
<groupId>org.springframework.cloud</groupId>
<artifactId>spring-cloud-starter-eureka-server</artifactId>
</dependency>

<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-test</artifactId>
<scope>test</scope>
</dependency>
</dependencies>
<build>
<plugins>
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-compiler-plugin</artifactId>
<version>3.5.1</version>
<configuration>
<source>1.8</source>
<target>1.8</target>
<encoding>${project.build.sourceEncoding}</encoding>
</configuration>
</plugin>
<!--spring项目的maven 打包插件-->
<plugin>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-maven-plugin</artifactId>
<dependencies>
<dependency>
<groupId>org.springframework</groupId>
<artifactId>springloaded</artifactId>
<version>1.2.6.RELEASE</version>
</dependency>
</dependencies>
<!--指定jar文件的启动类-->
<configuration>
<mainClass>com.bool.spring.App</mainClass>
</configuration>
</plugin>
</plugins>
</build>
<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>

4. 打开eureka-server, 修改java目录下的启动类文件 **.java (一般在groupId 生成的包路径下),添加以下代码
import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;
import org.springframework.cloud.netflix.eureka.server.EnableEurekaServer;

@SpringBootApplication // 基本的spring boot 项目环境
@EnableEurekaServer // 启用服务注册中心
public class App{
public static void main(String[] args) {
SpringApplication.run(App.class, args);
}
}

5. 在main文件夹中创建resources文件夹,或直接在IDEA Project structure (ctrl+shift+alt+s)中创建,并指定为 resources 类型。接下来创建 application.yml 文件(直接File->New->file application.yml创建即可)并添加如下内容:

server:
port: 8080 # 指定启动端口
spring:
application:
name: eureka-ha # 指定应用名称
eureka:
instance:
hostname: localhost # 指定运行的主机
client:
serviceUrl:
defaultZone: http://localhost:${server.port}/eureka/ # 注册中心地址
  1. 接下来就可以启动这个Spring Cloud 基于 Eureka 创建的独立的服务注册中心了,打开App.java 右键run AS,启动完成后打开浏览器 http://localhost:8080 即可看到注册中心的信息页面

使用IDEA 创建Spring项目的方式
1. 使用IDEA打开创建好的Spring-Cloud-Project文件夹,
选中项目右键 new -> module 选中左边项目类型中的 Spring Initializr -> next ->
自此整个基于Spring Boot 的环境以及Spring Cloud Eureka 的基本环境就搭建好了
2. 接下来就是将上面的第4步和之后的流程走一下就Ok了
这样Spring Cloud服务中心的搭建就全部结束了,整个流程还算是比较简单,但初次尝试的时候还是会遇到一些莫名的问题,包括maven,spring boot 相关的一些问题都有可能出现,希望大家在尝鲜的时候多多分享一下其中遇到的坑。

声明一下,本人也是刚刚接触Spring Cloud 不久,包括后续更新的博文中肯定会存在一些不足和缺陷,希望大家谅解

项目文件地址: https://github.com/heart-bool/Spring-Cloud-Project/

注:
由于创建的时间是在国庆之前,也没想过写博文,其中也包括了一些我自己加的一些东西,参考的时候可以忽略
  • 点赞
  • 收藏
  • 分享
  • 文章举报
wa565938491 发布了1 篇原创文章 · 获赞 0 · 访问量 82 私信 关注
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: