SpringCloud系列教程(3)-- Eureka服务注册与发现
2018-01-08 17:00
956 查看
为什么要用Eureka
Eureka是Spring Cloud Netflix的一个子模块,也是核心模块之一。用于云端服务发现,一个基于REST的服务,用于定位服务,以实现云端中间层服务发现和故障转移。再微服务架构中,由于服务颗粒化,导致服务数量大增,服务间的调用变得非常平凡,假设我们现在有4个服务,A B C D ,在没有服务治理的时候,他们间相互调用呈现的是这样的:
每个服务都要相互约定调用格式、调用路径等等,导致系统越复杂,服务数量越多,调用越复杂,配置越复杂,这时候就需要服务治理组件来,简化调用流程,降低系统的复杂度,这个就是eureka的目的,而cloud很多组件因此也是以eureka为中心构建的(当然,很多组件也可以独立使用),使用了eureka后,服务间的调用则变成了:
服务间的调用都通过eureka来调度,同时服务上线自动注册到eureka上,便于让其他服务发现。
Eureka 入门
新建一个Eureka 服务端,cloud-eureka-server(这里只列出POM文件,建立可以,通过教程1,操作选择eureka-server组件即可)
<?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.cloud</groupId> <artifactId>cloud-eureka-server</artifactId> <version>1.0.0</version> <packaging>jar</packaging> <name>cloud-eureka-server</name> <description>Demo project for Spring Boot</description> <parent> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-parent</artifactId> <version>1.5.9.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>Edgware.RELEASE</spring-cloud.version> </properties> <dependencies> <dependency> <groupId>org.springframework.cloud</groupId> <artifactId>spring-cloud-starter-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> </project>
配置application.properties
#注册实例名 spring.application.name=eureka-server #访问端口 server.port=8081 eureka.instance.hostname=localhost #指示此实例是否应将其信息注册到eureka服务器以供其他人发现。在某些情况下,您不希望发现实例,而您只想发现其他实例。 eureka.client.registerWithEureka=false #指示该客户端是否应从eureka服务器获取eureka注册表信息 eureka.client.fetchRegistry=false #注册地址 eureka.client.serviceUrl.defaultZone:http://localhost:8081/eureka/
CloudEurekaServerApplication 添加EnableEurekaServer 注解
@SpringBootApplication @EnableEurekaServer public class CloudEurekaServerApplication { public static void main(String[] args) { SpringApplication.run(CloudEurekaServerApplication.class, args); } }
启动项目,访问http://127.0.0.1:8081/,看到如下图,Eureka服务端便启动成功
新建cloud-eureka-client 服务,我们的目标是,自动注册Eureka中,然后能够通过Eureka来访问
同样,我们引入组件
<dependencies> <dependency> <groupId>org.springframework.cloud</groupId> <artifactId>spring-cloud-starter-eureka</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-actuator</artifactId> </dependency> <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-test</artifactId> <scope>test</scope> </dependency> </dependencies>
配置客户端application.properties
spring.application.name=eureka-client eureka.client.serviceUrl.defaultZone:http://localhost:8081/eureka/
CloudEurekaClientApplication 添加@EnableDiscoveryClient 注解
@EnableDiscoveryClient @SpringBootApplication public class CloudEurekaClientApplication { public static void main(String[] args) { SpringApplication.run(CloudEurekaClientApplication.class, args); } }
新建一个GlobalController,用来我们测试服务
``` @Controller public class GlobalController { @ResponseBody @RequestMapping("/") public String home() { return "eureka-client hello world!"; } @ResponseBody @RequestMapping("/info") public String info() { return "欢迎 eureka-client 服务!"; } } ```
启动cloud-eureka-client,发现服务已经注册,注册到了Eureka得服务器
点击链接,发现能够访问到服务页面
点击下载示例代码
相关文章推荐
- (转) 史上最简单的 SpringCloud 教程 | 第一篇: 服务的注册与发现(Eureka)
- 史上最简单的 SpringCloud 教程 | 第一篇: 服务的注册与发现(Eureka)
- SpringCloud教程第一篇:服务的注册与发现(Eureka)
- 史上最简单的 SpringCloud 教程 | 第一篇: 服务的注册与发现(Eureka)
- SpringCloud学习教程一( 服务的注册与发现 Eureka)
- 史上最简单的 SpringCloud 教程 | 第一篇: 服务的注册与发现(Eureka)
- SpringCloud 入门教程 | 第一篇: 服务的注册与发现(Eureka)
- 史上最简单的 SpringCloud 教程 | 第一篇: 服务的注册与发现(Eureka)
- 史上最简单的 SpringCloud 教程 | 第一篇: 服务的注册与发现(Eureka)
- 史上最简单的 SpringCloud 教程 | 第一篇: 服务的注册与发现(Eureka)
- 史上最简单的 SpringCloud 教程 | 第一篇: 服务的注册与发现(Eureka)
- 史上最简单的 SpringCloud 教程 | 第一篇: 服务的注册与发现(Eureka)(转)
- 史上最简单的 SpringCloud 教程 | 第一篇: 服务的注册与发现(Eureka)
- 史上最简单的SpringCloud教程 | 第一篇: 服务的注册与发现(Eureka)
- 史上最简单的 SpringCloud 教程 | 第一篇: 服务的注册与发现(Eureka)
- 史上最简单的 SpringCloud 教程 | 第一篇: 服务的注册与发现(Eureka)
- 史上最简单的 SpringCloud 教程 | 第一篇: 服务的注册与发现(Eureka)
- 企业级 SpringCloud 教程 (一) 服务的注册与发现(Eureka)
- SpringCloud 教程 | 第一篇: 服务的注册与发现(Eureka)
- SpringCloud 教程 | 第一篇: 服务的注册与发现(Eureka)