spring cloud 服务注册与发现
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
源代码下载
- SpringCloud学习笔记001-SpringCloud_001_SpringCloud简介_单体架构_微服务架构_服务注册与发现_微服务调用关系
- spring cloud服务发现和注册源码分析
- Spring Cloud 微服务注册与发现
- SpringCloud+Consul 服务注册与服务发现
- (1-1)SpringCloud-Eureka:服务的注册与发现
- eclipse springcloud服务发现服务注册(Eureka) 学习日志
- Spring Cloud 学习之旅 --- 服务注册与发现(二)
- Spring Cloud Consul 实现服务注册和发现
- Spring Cloud版——电影售票系统<—>Eureka微服务注册与发现
- SpringCloud——服务的注册与发现Eureka
- Spring Cloud构建微服务架构:服务注册与发现(Eureka、Consul)【Dalston版】
- 详解springcloud之服务注册与发现
- SpringCloud服务注册与发现(Eureka 注册中心)
- SpringCloud 教程 | 第一篇: 服务的注册与发现(Eureka)
- SpringCloud 教程 | 第一篇: 服务的注册与发现(Eureka)
- springcloud consul +consul 实现服务注册及发现
- Spring Cloud Netflix Eureka组件服务注册及发现源码浅析
- 服务注册和服务发现-Eureka的服务认证和集群--Spring Cloud Netflix
- spring cloud服务的注册与发现(Eureka)