vlambda博客
学习文章列表

第一章:简单springcloud微服务项目,Eureka Server服务注册中心搭建

spring cloud简介

Spring Cloud是一系列框架的有序集合。它利用Spring Boot的开发便利性巧妙地简化了分布式系统基础设施的开发,如服务发现注册、配置中心、消息总线、负载均衡、断路器、数据监控等,都可以用Spring Boot的开发风格做到一键启动和部署。


开发工具: eclipse 、Jdk: 1.8 、maven: apache-maven-3.3.9


开始创建第一个springcloud maven项目,项目名称xm-web-server

步骤一:New-Project-Maven Project


步骤二:基本maven项目格式,如不勾选Create a simple project(skip archetype selection),需自行选择类型

第一章:简单springcloud微服务项目,Eureka Server服务注册中心搭建

步骤三:项目基本配置

第一章:简单springcloud微服务项目,Eureka Server服务注册中心搭建

步骤四:xm-web-server项目结构图

第一章:简单springcloud微服务项目,Eureka Server服务注册中心搭建

步骤五:在xm-web-server项目pom.xml中配置,如下


  
    
    
  
  1. <?xml version="1.0" encoding="UTF-8"?>

  2. <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">

  3. <modelVersion>4.0.0</modelVersion>

  4. <groupId>com.maven.xm</groupId>

  5. <artifactId>xm-web-server</artifactId>

  6. <version>0.0.1-SNAPSHOT</version>

  7. <packaging>pom</packaging>

  8. <!-- 1、默认使用Java 8

  9. 2、使用UTF-8编码

  10. 3、一个引用管理的功能,在dependencies里的部分配置可以不用填写version信息,这些version信息会从spring-boot-dependencies里得到继承。

  11. 4、能够识别application.properties和application.yml类型的文件,同时也能支持profile-specific类型的文件(如:application-foo.properties and application-foo.yml,这个功能可以更好的配置不同生产环境下的配置文件)。

  12. 5、识别插件的配置(Sensible plugin configuration (exec plugin, surefire, Git commit ID, shade).)

  13. -->

  14. <parent>

  15. <groupId>org.springframework.boot</groupId>

  16. <artifactId>spring-boot-starter-parent</artifactId>

  17. <version>1.5.2.RELEASE</version>

  18. </parent>

  19. <!-- properties声明一些公共配置,该节点配置了自定义属性即可在任意地方使用,通过${}访问,形式如${java.version} -->

  20. <properties>

  21. <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>

  22. <project.reporting.outputEncoding>UTF-8</project.reporting.outputEncoding>

  23. <java.version>1.8</java.version>

  24. <spring.cloud.dependencies.version>Camden.SR7</spring.cloud.dependencies.version>

  25. <io.springfox>2.7.0</io.springfox>

  26. </properties>

  27. <!-- dependencyManagement的作用其实相当于一个对所依赖jar包进行版本管理的管理器 -->

  28. <!--

  29. 说明1:如果dependencies里的dependency自己没有声明version元素,那么maven就会倒dependencyManagement里面去找有没有对该artifactId和groupId进行过版本声明,

  30. 如果有,就继承它,如果没有就会报错,告诉你必须为dependency声明一个version

  31. 说明2:如果dependencies中的dependency声明了version,那么无论dependencyManagement中有无对该jar的version声明,都以dependency里的version为准。

  32. -->

  33. <dependencyManagement>

  34. <dependencies>

  35. <dependency>

  36. <groupId>org.springframework.cloud</groupId>

  37. <artifactId>spring-cloud-dependencies</artifactId>

  38. <version>${spring.cloud.dependencies.version}</version>

  39. <type>pom</type>

  40. <scope>import</scope>

  41. </dependency>

  42. </dependencies>

  43. </dependencyManagement>

  44. <!-- 一种<build>被称为Project Build,即是<project>的直接子元素。另一种<build>被称为Profile Build,即是<profile>的直接子元素。-->

  45. <build>

  46. <!--

  47. <plugins>给出构建过程中所用到的插件

  48. extensions,是否加载该插件的扩展,默认false

  49. inherited,该插件的configuration中的配置是否可以被(继承该POM的其他Maven项目)继承,默认true

  50. configuration,该插件所需要的特殊配置,在父子项目之间可以覆盖或合并

  51. dependencies,该插件所特有的依赖类库

  52. executions,该插件的某个goal(一个插件中可能包含多个goal)的执行方式。一个execution有如下设置:

  53. id,唯一标识

  54. goals,要执行的插件的goal(可以有多个),如<goal>run</goal>

  55. phase,插件的goal要嵌入到Maven的phase中执行,如verify

  56. inherited,该execution是否可被子项目继承

  57. configuration,该execution的其他配置参数

  58. -->

  59. <plugins>

  60. <plugin>

  61. <groupId>org.apache.maven.plugins</groupId>

  62. <artifactId>maven-surefire-plugin</artifactId>

  63. <configuration>

  64. <source>${java.version}</source>

  65. <target>${java.version}</target>

  66. <encoding>UTF-8</encoding>

  67. <skipTests>true</skipTests>

  68. </configuration>

  69. </plugin>

  70. </plugins>

  71. </build>

  72. 打开该文件,能找到超级POM:\org\apache\maven\model\pom-4.0.0.xml ,它是所有Maven POM的父POM,所有Maven项目继承该配置,你可以在这个POM中发现如下配置

  73. -->

  74. <repositories>

  75. <repository>

  76. <id>central</id>

  77. <name>Central Repository</name>

  78. <url>https://repo.maven.apache.org/maven2</url>

  79. <layout>default</layout>

  80. <snapshots>

  81. <enabled>false</enabled>

  82. </snapshots>

  83. </repository>

  84. </repositories>

  85. <modules>

  86. <module>eureka-server</module>

  87. </modules>

  88. </project>

步骤六:创建一个Maven Module项目,项目名称叫eureka-server,作为服务注册中心

第一章:简单springcloud微服务项目,Eureka Server服务注册中心搭建

步骤七:

第一章:简单springcloud微服务项目,Eureka Server服务注册中心搭建

步骤八:

第一章:简单springcloud微服务项目,Eureka Server服务注册中心搭建

步骤九:eureka-server项目结构图

第一章:简单springcloud微服务项目,Eureka Server服务注册中心搭建

步骤十:相关配置说明

在eureka-server项目pom.xml配置如下:


  
    
    
  
  1. <?xml version="1.0" encoding="UTF-8"?>

  2. <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">

  3. <modelVersion>4.0.0</modelVersion>

  4. <parent>

  5. <groupId>com.maven.xm</groupId>

  6. <artifactId>xm-web-server</artifactId>

  7. <version>0.0.1-SNAPSHOT</version>

  8. </parent>

  9. <artifactId>eureka-server</artifactId>

  10. <!-- 新建项目没有该packaging配置,可手动添加 -->

  11. <packaging>jar</packaging>

  12. <!-- dependencies引入具体jar -->

  13. <dependencies>

  14. <!--eureka server 服务注册中心jar-->

  15. <dependency>

  16. <groupId>org.springframework.cloud</groupId>

  17. <artifactId>spring-cloud-starter-eureka-server</artifactId>

  18. </dependency>

  19. </dependencies>

  20. <!-- maven打包插件,在cmd命令窗口执行,如: mvn install -U -->

  21. <build>

  22. <plugins>

  23. <plugin>

  24. <groupId>org.springframework.boot</groupId>

  25. <artifactId>spring-boot-maven-plugin</artifactId>

  26. </plugin>

  27. </plugins>

  28. </build>

  29. </project>

在eureka-server项目src/main/resources下新建application.yml文件,配置如下:

# 注册中心的端口号
server:
port: 8761

eureka:
instance:
# 地址
hostname: localhost
client:
# 表示是否将自己注册到Eureka Server中,默认为true, 由于当前应用就是 Eureka Server, 故而设置为false
registerWithEureka: false
# 表示是否从 Eureka Server中获取注册信息, 默认为true, 因为这是一个单点的 Eureka Server, 不需要同步其它的 Eureka Server 节点的数据, 故而设置为 false
fetchRegistry: false
serviceUrl:
# 设置与Eureka Server交互的地址, 查询服务和注册服务都需要依赖这个地址. 默认http://localhost:8761/eureka; 多个地址可以使用","分隔
defaultZone: http://${eureka.instance.hostname}:${server.port}/eureka/

在eureka-server项目创建EurekaServerApplication.java文件,内容如下:


  
    
    
  
  1. package com.maven.xm.server;

  2. import org.slf4j.Logger;

  3. import org.slf4j.LoggerFactory;

  4. import org.springframework.boot.SpringApplication;

  5. import org.springframework.boot.autoconfigure.SpringBootApplication;

  6. import org.springframework.cloud.netflix.eureka.server.EnableEurekaServer;

  7. /**

  8. * 服务注册中心

  9. * 注意事项: EurekaServerApplication.java一定要在com.maven.xm包或者子包下,不然扫描不到

  10. * @author ouyangjun

  11. *

  12. * @SpringBootApplication@Configuration@EnableAutoConfiguration@ComponentScan注解简化

  13. * @EnableEurekaServer 该注解表明应用为eureka服务,有可以联合多个服务作为集群,对外提供服务注册以及发现功能

  14. */

  15. @SpringBootApplication

  16. @EnableEurekaServer

  17. public class EurekaServerApplication {

  18. private static final Logger LOGGER = LoggerFactory.getLogger(EurekaServerApplication.class);

  19. public static void main(String[] args) {

  20. // Spring Boot的SpringApplication类,用以启动一个Spring应用,实质上是为Spring应用创建并初始化Spring上下文。

  21. SpringApplication.run(EurekaServerApplication.class);

  22. LOGGER.info("********************Eureka Server Started********************");

  23. }

  24. }

项目结构图如下:

第一章:简单springcloud微服务项目,Eureka Server服务注册中心搭建


更多敬请关注:

1.

2.

3.

4.

5.

6.