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

spring cloud 服务注册与发现

2018-05-21 15:17 169 查看
版权声明:原创文章,转载注明出处 https://blog.csdn.net/u010816545/article/details/80392652

spring cloud 服务注册与发现

一,创建父工程

spring cloud有很多功能模块,学习过程中,使用聚合工程,每学习一个模块见创建一个model,方便管理。
spring boot的依赖和spring cloud的依赖在后面的模块中都要引入,因此直接添加到父工程pom,每个model直接继承就好,
每个model的pom就比较简洁

父工程pom:

<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.baosight</groupId>
<artifactId>springboot-parent</artifactId>
<version>0.0.1-SNAPSHOT</version>
<packaging>pom</packaging>

<name>springboot-parent</name>
<url>http://maven.apache.org</url>

<properties>
<project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
<project.reporting.outputEncoding>UTF-8</project.reporting.outputEncoding>
<maven.compiler.source>1.8</maven.compiler.source>
<maven.compiler.target>1.8</maven.compiler.target>
<java.version>1.8</java.version>
<dubbo-spring-boot>1.0.0</dubbo-spring-boot>
<com-alibaba-druid>1.0.29</com-alibaba-druid>
<lombok.version>1.16.18</lombok.version>
</properties>

<dependencyManagement>
<dependencies>
<!-- springboot依赖 -->
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-parent</artifactId>
<version>1.5.13.RELEASE</version>
<type>pom</type>
<scope>import</scope>
</dependency>
<!-- springcloud依赖 -->
<dependency>
<groupId>org.springframework.cloud</groupId>
<artifactId>spring-cloud-dependencies</artifactId>
<version>Dalston.SR5</version>
<type>pom</type>
<scope>import</scope>
</dependency>
</dependencies>
</dependencyManagement>
<dependencies>

<dependency>
<groupId>org.springframework.cloud</groupId>
<artifactId>spring-cloud-starter-eureka-server</artifactId>
</dependency>
</dependencies>
<build>
<plugins>
<plugin>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-maven-plugin</artifactId>
<configuration>
<mainClass>com.baosight.Application</mainClass>
</configuration>
<executions>
<execution>
<goals>
<goal>repackage</goal>
</goals>
</execution>
</executions>
</plugin>
</plugins>
</build>

</project>

二,创建一个model:eureka server

在建好的父工程中新建model:spring boot-eureka

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>
<parent>
<groupId>com.baosight</groupId>
<artifactId>springboot-parent</artifactId>
<version>0.0.1-SNAPSHOT</version>
</parent>
<artifactId>springboot-eurack</artifactId>
<description>Demo project for Spring Boot eurack</description>
<dependencies>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-test</artifactId>
<scope>test</scope>
</dependency>
</dependencies>
<build>
<plugins>
<plugin>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-maven-plugin</artifactId>
</plugin>
</plugins>
</build>

</project>

启动类

@EnableEurekaServer
@SpringBootApplication
public class DemoApplication {
public static void main(String[] args) {
SpringApplication.run(DemoApplication.class, args);
}
}

@EnableEurekaServer表明这是一个eureka注册中心

可以看到@EnableEurekaServer包含了@EnableDiscoveryClient,因此在默认情况下erureka server也是一个eureka client ,必须要指定一个 server。eureka server的配置文件

application.properties

server.port=8761
eureka.instance.hostname=localhost
#false表示不向注册中心注册自己。表明自己是一个eureka server
eureka.client.register-with-eureka=false
#false表示自己端就是注册中心,我的职责就是维护服务实例,并不需要去检索服务
eureka.client.fetch-registry=false
eureka.client.service-url.defaultZone: http://${eureka.instance.hostname}:${server.port}/eureka/

浏览器访问http://localhost:8761/可以看到

这里推荐一个公益-Eureka Server注册中心,是spring cloud中国社区提供的注册中心,使用这个就不用启动本地的注册中心,非常实用。

三,创建一个model:eureka client

eureka client又分为Application client 和 Application server 即服务消费者和服务提供者

先创建服务提供者,pom如下

单独创建一个spring boot 集成mybatis的model,直接依赖进来,就可以直接访问数据库了

<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>
<parent>
<groupId>com.baosight</groupId>
<artifactId>springboot-parent</artifactId>
<version>0.0.1-SNAPSHOT</version>
</parent>
<artifactId>springboot-eureka-clent</artifactId>
<name>eureka-clent</name>
<description>服务提供者</description>
<dependencies>
<dependency>
<groupId>com.baosight</groupId>
<artifactId>spring-boot-mybatis</artifactId>
<version>0.0.1-SNAPSHOT</version>
</dependency>
</dependencies>
</project>

启动类类

加上@EnableEurekaClient注解,

@SpringBootApplication
@EnableEurekaClient
public class DemoApplication {

public static void main(String[] args) {
SpringApplication.run(DemoApplication.class, args);
}
}

可以看到@EnableEurekaClient注解也包含了@EnableDiscoveryClient

application.yml配置

eureka:
client:
serviceUrl:
defaultZone: http://localhost:8761/eureka/  #客户端注册进eureka服务列表内
server:
port: 8762
spring:
application:
name: springboot-eureka-clent

启动这个model,刷新http://localhost:8671

服务列表中多了 springboot-eureka-clent:8762,就说明服务提供者已经注册到注册中心

四,修改instance-id,显示eureka client ip地址

修改application.yml配置

eureka:
client:
serviceUrl:
defaultZone: http://localhost:8761/eureka/
instance:
instance-id: microservicecloud-8762
prefer-ip-address: true     #访问路径可以显示IP地址
server:
port: 8762
spring:
application:
name: springboot-eureka-clent

重启eureka client ,刷新http://localhost:8761

instances -id已经变成* microservicecloud-8762*,而且可以显示这个客户端的IP
源代码下载

阅读更多
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: