Eureka 服务的注册与发现
Posted skylogin
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Eureka 服务的注册与发现相关的知识,希望对你有一定的参考价值。
(一)服务的注册于发现(eureka);
Eureka Server: 服务注册中心,负责服务列表的注册、维护和查询等功能
在Idea里,新建项目,选择Spring initializer.
下面的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> <groupId>com.example</groupId> <artifactId>spring-clound-eureka-demo</artifactId> <version>0.0.1-SNAPSHOT</version> <packaging>jar</packaging> <name>spring-clound-eureka-demo</name> <description>Demo project for Spring Boot</description> <parent> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-parent</artifactId> <version>2.1.0.RELEASE</version> <relativePath/> <!-- lookup parent from repository --> </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>Greenwich.M3</spring-cloud.version> </properties> <dependencies> <dependency> <groupId>org.springframework.cloud</groupId> <artifactId>spring-cloud-starter-netflix-eureka-server</artifactId> </dependency> <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-test</artifactId> <scope>test</scope> </dependency> </dependencies> <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> <build> <plugins> <plugin> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-maven-plugin</artifactId> </plugin> </plugins> </build> <repositories> <repository> <id>spring-milestones</id> <name>Spring Milestones</name> <url>https://repo.spring.io/milestone</url> <snapshots> <enabled>false</enabled> </snapshots> </repository> </repositories> </project>
配置properties文件参数;
server.port=8882 #域名 eureka.instance.hostname=localhost #禁用 Eureka的客户端注册行为 eureka.client.register-with-eureka=false eureka.client.fetch-registry=false #eureka注册中心服务地址 eureka.client.service-url.defaultZone=http://${eureka.instance.hostname}:${server.port}/eureka/
在启动类上添加注解@EnableEurekaServer
// @EnableEurekaServer 代表启动注册服务中心 @EnableEurekaServer @SpringBootApplication public class SpringCloundEurekaDemoApplication { public static void main(String[] args) { SpringApplication.run(SpringCloundEurekaDemoApplication.class, args); } }
启动项目,打开连接 http://localhost:8882
二.创建一个服务提供者(Eureka-client)
服务提供方,同时也是一个Eureka Client
,负责将所提供的服务向Eureka Server
进行注册、续约和注销等操作。注册时所提供的主要数据包括服务名、机器ip、端口号、域名等,从而能够使服务消费方能够找到
Eureka服务器我们已经编写好了,接下来我们就可以编写一个Eureka的客户端了。这个客户端可能是一个服务提供者,也可能是一个服务消费者,甚至两者都是。
我们先编写一个简单的Eureka Client
在Idea里,新建项目,选择Spring initializ.
下面的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> <groupId>com.example</groupId> <artifactId>spring-clound-ribbon-example</artifactId> <version>0.0.1-SNAPSHOT</version> <packaging>jar</packaging> <name>spring-clound-ribbon-example</name> <description>Demo project for Spring Boot</description> <parent> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-parent</artifactId> <version>2.1.0.RELEASE</version> <relativePath/> <!-- lookup parent from repository --> </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>Greenwich.M3</spring-cloud.version> </properties> <dependencies> <dependency> <groupId>org.springframework.cloud</groupId> <artifactId>spring-cloud-starter-netflix-eureka-client</artifactId> <version>1.4.4.RELEASE</version> </dependency> <dependency> <groupId>org.springframework.cloud</groupId> <artifactId>spring-cloud-starter-netflix-ribbon</artifactId> </dependency> <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-web</artifactId> </dependency> <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-test</artifactId> <scope>test</scope> </dependency> </dependencies> <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> <build> <plugins> <plugin> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-maven-plugin</artifactId> </plugin> </plugins> </build> <repositories> <repository> <id>spring-milestones</id> <name>Spring Milestones</name> <url>https://repo.spring.io/milestone</url> <snapshots> <enabled>false</enabled> </snapshots> </repository> </repositories> </project>
配置yml文件参数;(换下配置方式)
eureka: client: serviceUrl: defaultZone: http://localhost:8882/eureka/ server: port: 8883 spring: application: name: service-hello
在启动类上添加注解@EnableEurekaClient
// @ EnableEurekaClient 表示申明自己是一个发服务提供者; @EnableEurekaClient @SpringBootApplication public class SpringCloundEurekaClientExampleApplication { public static void main(String[] args) { SpringApplication.run(SpringCloundEurekaClientExampleApplication.class, args); } }
创建conroller
@RestController public class HelloController { @Value("${server.port}") String port; @Value("${spring.application.name}") String name; @RequestMapping("/index") public String index() { return "服务提供者client:" + name + "服务端口:" + port; } }
启动项目
然后我们再来看一下服务注册中心;就会看到,已经注册了一个服务提供者;
为了接下来测试Ribbon负载
我们将client的配置文件属性注册的端口改为8884;;然后在IDEA把该服务再启动一个实例
(把single instance only勾选去掉)
回到服务中心,已经有两个client了
以上是关于Eureka 服务的注册与发现的主要内容,如果未能解决你的问题,请参考以下文章