euraka 服务中心
springcloud简介
Spring Cloud是⼀系列框架的有序集合。它利⽤Spring Boot的开发便利性巧妙地简化了分布式系统基础设施
的开发,如服务发现注册、配置中⼼、消息总线、负载均衡、断路器、数据监控等,都可以⽤Spring Boot的
开发⻛格做到⼀键启动和部署。Spring并没有重复制造轮⼦,它只是将⽬前各家公司开发的⽐较成熟、经得
起实际考验的服务框架组合起来,通过Spring Boot⻛格进⾏再封装屏蔽掉了复杂的配置和实现原理,最终给
开发者留出了⼀套简单易懂、易部署和易维护的分布式系统开发⼯具包。
Netflix Eureka
服务中⼼,云端服务发现,⼀个基于 REST 的服务,⽤于定位服务,以实现云端中间层服务发现和故障转移.
这个可是springcloud最⽜⿐的⼩弟,服务中⼼,任何⼩弟需要其它⼩弟⽀持什么都需要从这⾥来拿,同样的
你有什么独⻔武功的都赶紧过报道,⽅便以后其它⼩弟来调⽤;它的好处是你不需要直接找各种什么⼩弟⽀
持,只需要到服务中⼼来领取,也不需要知道提供⽀持的其它⼩弟在哪⾥,还是⼏个⼩弟来⽀持的,反正拿
来⽤就⾏,服务中⼼来保证稳定性和质量。相当于springioc容器的概念.
导包
父项目依赖
由于我用的是分模块编写,并且用的maven,并且我用的版本Greenwich.SR1,此版本只兼容2.1.0以上版本。
父项目的依赖如下
<?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>
<groupId>com.zsl</groupId>
<artifactId>springcloud01Demo</artifactId>
<packaging>pom</packaging>
<version>1.0-SNAPSHOT</version>
<modules>
<module>common</module>
<module>customer-80</module>
<module>provider</module>
<module>euraka-8000</module>
<module>feign-8088</module>
<module>provider02</module>
<module>feignre8099</module>
<module>listen9999</module>
<module>zuul9099</module>
<module>config-server</module>
<module>config-client</module>
</modules>
<properties>
<project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
<maven.compiler.source>1.8</maven.compiler.source>
<maven.compiler.target>1.8</maven.compiler.target>
<junit.version>4.12</junit.version>
<log4j.version>1.2.17</log4j.version>
<!-- lombok插件可以消除封装对象需要写重复的代码 -->
<lombok.version>1.16.18</lombok.version>
</properties>
<dependencyManagement>
<dependencies>
<!-- springcloud的依赖 -->
<dependency>
<groupId>org.springframework.cloud</groupId>
<artifactId>spring-cloud-dependencies</artifactId>
<version>Greenwich.SR1</version>
<type>pom</type>
<scope>import</scope>
</dependency>
<!-- springboot依赖 -->
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-dependencies</artifactId>
<version>2.1.0.RELEASE</version>
<type>pom</type>
<scope>import</scope>
</dependency>
<!-- 数据库驱动包 -->
<dependency>
<groupId>mysql</groupId>
<artifactId>mysql-connector-java</artifactId>
<version>5.0.4</version>
</dependency>
<dependency>
<groupId>com.alibaba</groupId>
<artifactId>druid-spring-boot-starter</artifactId>
<version>1.1.10</version>
</dependency>
<dependency>
<groupId>org.mybatis.spring.boot</groupId>
<artifactId>mybatis-spring-boot-starter</artifactId>
<version>1.2.2</version>
</dependency>
<dependency>
<groupId>junit</groupId>
<artifactId>junit</artifactId>
<version>${junit.version}</version>
<scope>test</scope>
</dependency>
<dependency>
<groupId>log4j</groupId>
<artifactId>log4j</artifactId>
<version>${log4j.version}</version>
</dependency>
</dependencies>
</dependencyManagement>
<!-- 等会要读取mavan项目文件的文件的时候需要用到 -->
<build>
<finalName>woniucloud</finalName>
<resources>
<resource>
<directory>src/main/resources</directory>
<filtering>true</filtering>
</resource>
</resources>
<plugins>
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-resources-plugin</artifactId>
<configuration>
<delimiters>
<delimit>$</delimit>
</delimiters>
</configuration>
</plugin>
</plugins>
</build>
</project>
dependencyManagement是指定版本,这样,子类就不用指定版本号,只要写入依赖就可以了。
子项目依赖
<?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>springcloud01Demo</artifactId>
<groupId>com.zsl</groupId>
<version>1.0-SNAPSHOT</version>
</parent>
<modelVersion>4.0.0</modelVersion>
<artifactId>euraka-8000</artifactId>
<dependencies>
<!-- SpringCloud-Eureka服务端 -->
<dependency>
<groupId>org.springframework.cloud</groupId>
<artifactId>spring-cloud-starter-netflix-eureka-server</artifactId>
</dependency>
</dependencies>
</project>
导入了spring-cloud-starter-netflix-eureka-server依赖,用来开始euraka服务中心
。
application配置
我用的是yml配置方式。
server:
port: 9000
eureka:
instance:
hostname: localhost #eurakeserver9000.com #eureka服务端的实例名称
client:
register-with-eureka: false #false表示不向注册中心注册自己。
fetch-registry: false #false表示自己端就是注册中心,我的职责就是维护服务实例,并不需要去检索服务
service-url:
#设置与Eureka Server交互的地址查询服务和注册服务都需要依赖这个地址(单机)。
defaultZone: http://${eureka.instance.hostname}:${server.port}/eureka/
详细信息看代码注释
项目启动
@SpringBootApplication
@EnableEurekaServer
public class applicationEuraka {
public static void main(String[] args) {
SpringApplication.run(applicationEuraka.class,args);
}
}
@EnableEurekaServer表示开始eureka服务中心,最后 ,代码完成如下图所示 ,eureka服务中心成功启动