`
liujiekasini0312
  • 浏览: 147535 次
  • 性别: Icon_minigender_1
  • 来自: 北京
社区版块
存档分类
最新评论

基于spring-cloud实现eureka注册服务小案例

 
阅读更多

本案例来自于spring官网:http://spring.io/guides/gs/service-registration-and-discovery/
JDK要求1.8或以上版本。

首先创建两个项目,eureka-service和eureka-client。
eureka-server作为eureka的服务端,提供注册服务,eureka-client作为eureka的客户端,属于一个应用,注册到eureka注册中心。

eureka-service的配置文件pom.xml如下:

<?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>eureka-service</artifactId>
    <version>0.0.1-SNAPSHOT</version>
    <packaging>jar</packaging>

    <parent>
        <groupId>org.springframework.boot</groupId>
        <artifactId>spring-boot-starter-parent</artifactId>
        <version>1.3.5.RELEASE</version>   <!--配合spring cloud版本-->
        <relativePath/> <!-- lookup parent from repository -->
    </parent>

    <properties>   
        <!--设置字符编码及java版本-->
        <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
        <java.version>1.8</java.version>
    </properties>

    <dependencies>
        <!--增加eureka-server的依赖-->
        <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>

    <!--依赖管理,用于管理spring-cloud的依赖-->
    <dependencyManagement>
        <dependencies>
            <dependency>
                <groupId>org.springframework.cloud</groupId>
                <artifactId>spring-cloud-starter-parent</artifactId>
                <version>Brixton.SR3</version>   <!--官网为Angel.SR4版本,但是我使用的时候总是报错-->
                <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>
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18
  • 19
  • 20
  • 21
  • 22
  • 23
  • 24
  • 25
  • 26
  • 27
  • 28
  • 29
  • 30
  • 31
  • 32
  • 33
  • 34
  • 35
  • 36
  • 37
  • 38
  • 39
  • 40
  • 41
  • 42
  • 43
  • 44
  • 45
  • 46
  • 47
  • 48
  • 49
  • 50
  • 51
  • 52
  • 53
  • 54
  • 55
  • 56
  • 57
  • 58
  • 59
  • 60
  • 61
  • 62
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18
  • 19
  • 20
  • 21
  • 22
  • 23
  • 24
  • 25
  • 26
  • 27
  • 28
  • 29
  • 30
  • 31
  • 32
  • 33
  • 34
  • 35
  • 36
  • 37
  • 38
  • 39
  • 40
  • 41
  • 42
  • 43
  • 44
  • 45
  • 46
  • 47
  • 48
  • 49
  • 50
  • 51
  • 52
  • 53
  • 54
  • 55
  • 56
  • 57
  • 58
  • 59
  • 60
  • 61
  • 62

eureka-service项目中创建包,自定,本例为:com.spring
在该包下创建类用于启动服务EurekaServiceApplication.Java

package com.spring;

import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;
import org.springframework.cloud.netflix.eureka.server.EnableEurekaServer;

@EnableEurekaServer         //开启eureka服务
@SpringBootApplication      //springBoot注解,spring在springBoot基础之上来构建项目
public class EurekaServiceApplication {

    //spirng boot的标准入口
    public static void main(String[] args) {
        SpringApplication.run(EurekaServiceApplication.class, args);
    }
}
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15

关于eureka-service的配置文件 applicaiton.yml 或者使用application.properties,两者格式不同。
application.yml

server:
  port: 8761     #指定服务端口
eureka:
  client:
    registerWithEureka: false  #是否将eureka自身作为应用注册到eureka注册中心
    fetchRegistry: false       #为true时,可以启动,但报异常:Cannot execute request on any known server
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6

简单的eureka-service就写好了,运行下EurekaServiceApplication.java
访问:http://localhost:8761/

关于eureks-client 的pom.xml文件如下,因为不提供其他服务,这里基本与eureka-service一样:

<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.huawei.it</groupId>
  <artifactId>eureka-client</artifactId>
  <version>0.0.1-SNAPSHOT</version>
  <packaging>jar</packaging>

  <parent>
    <groupId>org.springframework.boot</groupId>
    <artifactId>spring-boot-starter-parent</artifactId>
    <version>1.3.5.RELEASE</version>
    <relativePath/>
  </parent>

  <properties>
    <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
    <java.version>1.8</java.version>
  </properties>

  <dependencyManagement>
    <dependencies>
        <dependency>
            <groupId>org.springframework.cloud</groupId>
            <artifactId>spring-cloud-starter-parent</artifactId>
            <version>Brixton.SR3</version>
            <type>pom</type>
            <scope>import</scope>
        </dependency>
    </dependencies>
  </dependencyManagement>

  <dependencies>
      <!--此处是差异所在-->
      <dependency>
          <groupId>org.springframework.cloud</groupId>
          <artifactId>spring-cloud-starter-eureka</artifactId>
      </dependency>
      <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>
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18
  • 19
  • 20
  • 21
  • 22
  • 23
  • 24
  • 25
  • 26
  • 27
  • 28
  • 29
  • 30
  • 31
  • 32
  • 33
  • 34
  • 35
  • 36
  • 37
  • 38
  • 39
  • 40
  • 41
  • 42
  • 43
  • 44
  • 45
  • 46
  • 47
  • 48
  • 49
  • 50
  • 51
  • 52
  • 53
  • 54
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18
  • 19
  • 20
  • 21
  • 22
  • 23
  • 24
  • 25
  • 26
  • 27
  • 28
  • 29
  • 30
  • 31
  • 32
  • 33
  • 34
  • 35
  • 36
  • 37
  • 38
  • 39
  • 40
  • 41
  • 42
  • 43
  • 44
  • 45
  • 46
  • 47
  • 48
  • 49
  • 50
  • 51
  • 52
  • 53
  • 54

同样创建入口类EurekaClientApplication.java

package com.spring;

import java.util.List;

import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;
import org.springframework.cloud.client.ServiceInstance;
import org.springframework.cloud.client.discovery.DiscoveryClient;
import org.springframework.cloud.client.discovery.EnableDiscoveryClient;
import org.springframework.web.bind.annotation.PathVariable;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;

/**
 * @author Administrator
 *
 */
@EnableDiscoveryClient            //通过该注解,实现服务发现,注册
@SpringBootApplication
public class EurekaClientApplication {

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

}

@RestController
class ServiceInstanceRestController {

    @Autowired
    private DiscoveryClient discoveryClient;

    @RequestMapping("/service-instances/{applicationName}")
    public List<ServiceInstance> serviceInstancesByApplicationName(
            @PathVariable String applicationName) {
        return this.discoveryClient.getInstances(applicationName);
    }

    @RequestMapping("/")
    public String sayhello() {
        return "hello";
    }
}
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18
  • 19
  • 20
  • 21
  • 22
  • 23
  • 24
  • 25
  • 26
  • 27
  • 28
  • 29
  • 30
  • 31
  • 32
  • 33
  • 34
  • 35
  • 36
  • 37
  • 38
  • 39
  • 40
  • 41
  • 42
  • 43
  • 44
  • 45
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18
  • 19
  • 20
  • 21
  • 22
  • 23
  • 24
  • 25
  • 26
  • 27
  • 28
  • 29
  • 30
  • 31
  • 32
  • 33
  • 34
  • 35
  • 36
  • 37
  • 38
  • 39
  • 40
  • 41
  • 42
  • 43
  • 44
  • 45

关于eureka-client的配置文件bootstrap.yml和application.yml,
bootstrap.yml先于application.yml加载,一般不变的东西卸载bootstrap里,使用一样:
application.yml

server:
  port: 7070
spring:
  application:
    name: cloud-client    #为你的应用起个名字,该名字将注册到eureka注册中心
  • 1
  • 2
  • 3
  • 4
  • 5
  • 1
  • 2
  • 3
  • 4
  • 5

好了,现在启动eureka-client,再次访问http://localhost:8761,可能需要等一会
eureka注册中心

访问http://localhost:7070/service-instances/cloud-client/,这里我把应用名改了
会出现关于应用的信息:
eureka客户端

这里因为两个都部署在同一台机器上,所以可以直接发现服务,并注册,如果在不同的机器上不部署,application.yml配置中需要加上eureka的地址如,多个eureka服务地址,可以用,号隔开:

eureka:
  client:
    serviceUrl:
      defaultZone: http://${eureka-serviceIP}:8761/eureka/
分享到:
评论

相关推荐

    基于Spring-Cloud的微服务架构.zip

    本资料《基于Spring-Cloud的微服务架构》将通过实际案例,详细讲解如何搭建Spring-Cloud微服务架构,包括服务的创建、注册、调用、监控等方面,帮助开发者从理论到实践,全面掌握Spring-Cloud在微服务中的应用。...

    基于spring-cloud2.X的Demo例子

    首先,我们来看 `Eureka`,它是Spring Cloud中的服务注册与发现组件。Eureka Server 作为服务注册中心,各个服务启动后会向Eureka Server 注册自己的服务信息,服务消费者可以通过Eureka Server 获取到服务提供者的...

    spring-cloud-old-ass-colony.rar

    一、Eureka:服务注册与发现 Eureka是Spring Cloud中的服务治理中心,它负责服务的注册与发现。服务提供者启动后会向Eureka Server注册自己的服务信息,而服务消费者则通过Eureka获取服务提供者的地址,实现服务间...

    spring-cloud-server.rar

    Spring Cloud 是一个基于 Spring Boot 实现的云应用开发工具,它为开发者提供了在分布式系统(如配置管理、服务发现、断路器、智能路由、微代理、控制总线、一次性令牌、全局锁、领导选举、分布式会话、集群状态)中...

    demo-cloud.rar

    《从零到一搭建一个SpringCloud2.0项目》的案例代码是针对SpringCloud初学者设计的,旨在帮助他们理解并实践SpringCloud的基础架构和核心组件。SpringCloud作为一个微服务框架,提供了许多服务发现、配置中心、负载...

    spring-cloud-demo2-20221020

    1. **服务发现**:Spring Cloud Eureka是核心组件之一,它作为服务注册与发现的中心,使得服务消费者可以动态查找服务提供者的位置,实现服务间的通信。在"spring-cloud-demo2"中,每个服务实例启动时都会向Eureka...

    springCloud入门级例子

    - eurekaserve 服务注册模块 - api-gateway 路由模块 - server-bi 业务service - servcie-system 系统service - hystrixdashboard hystrix监控service 无需注册 # 注册中心 - [原版官网]...

    spring-cloud-alibaba,spring cloud alibaba为阿里中间件的分布式解决方案提供了一站式的应用开发解决方案。.zip

    - **Nacos**: 提供服务注册与发现、配置中心、动态配置、健康检查等功能,是Spring Cloud Alibaba的基础组件。 - **Sentinel**: 一个强大的流量控制、熔断、降级组件,确保系统的稳定性和可用性。 - **Seata**: ...

    springboot-springcloud.rar

    《SpringBoot与SpringCloud整合Eureka服务注册中心详解》 在现代微服务架构中,服务发现和服务治理扮演着至关重要的角色。SpringCloud作为一套微服务解决方案,提供了丰富的工具集,其中包括Eureka,它是Netflix...

    SpringCloud_Eureka服务调用实战案例

    在本实战案例中,我们将深入探讨SpringCloud Eureka在服务注册与发现中的应用。Eureka是Netflix开源的一个组件,主要用于微服务架构中的服务治理,它实现了服务注册与发现的功能,帮助服务之间进行通信。 首先,...

    spring-boot级spring-cloud视频教学

    - **服务注册与发现**:Eureka Server作为服务注册中心,各个服务启动后向Eureka Server注册自己,同时定期发送心跳以续约,Eureka Server根据这些信息维护服务实例列表,并提供服务发现能力。 - **自我保护模式**...

    spring-cloud-examples:Spring Cloud 案例项目

    1. **Eureka服务发现**:Eureka是Spring Cloud中的服务注册与发现组件,它允许微服务之间互相发现并进行通信。在"spring-cloud-examples"中,你可以看到如何配置Eureka服务器以及如何在各个服务中实现客户端注册和...

    spring-cloud 微服务案例源码包

    Spring Cloud 是一个基于 Spring Boot 实现的云应用开发工具集,它为开发者提供了在分布式系统(如配置管理、服务发现、断路器、智能路由、微代理、控制总线、一次性令牌、全局锁、领导选举、分布式会话、集群状态)...

    SpringCloud整合Eureka注册中心实现服务者与消费者的服务调用 分布式框架之SpringCloud~

    本项目基于 Spring Cloud实现注册中心Eureka,服务调用者注册服务至Eureka注册中心,消费者可通过注册中心调用服务 适用于初学Spring Cloud,基于Spring Boot聚合工程,可以实现自己对Spring Cloud的理解,通过此...

    spring-cloud分布式实战视频教程.txt

    通过以上分析可以看出,Spring Cloud为开发者提供了一套完整的微服务解决方案,不仅包括服务注册与发现、负载均衡、服务间调用等功能,还包括熔断器、API网关等高级特性。这些组件相互配合,可以极大地提高开发效率...

    spring-cloud-20.zip

    Spring Cloud 是一个基于 Spring Boot 实现的云原生应用开发工具,它为基于JVM的云原生应用开发中涉及的配置管理、服务发现、熔断器、智能路由、微代理、控制总线、分布式...SpringCloud 案例(Eureka、Ribbon、Zuul)

    SpringCloud微服务入门案例注册中心(SpringBoot2.X)

    在本入门案例中,我们将深入探讨如何使用SpringBoot 2.2.5版本与最新的SpringCloud Hoxton.SR4构建微服务注册中心。SpringCloud是基于Spring Boot实现的一系列微服务开发工具集,它提供了诸如服务发现、配置管理、...

    SpringCloud案例(仅集成了Eureka)

    在SpringCloud中,Eureka作为服务注册与发现的中心,帮助各个微服务实例向中心注册自己的位置信息,其他服务通过Eureka获取到这些信息,从而进行服务之间的调用。 集成Eureka的基本步骤包括: 1. **添加依赖**:在`...

    spring-cloud搭建.pdf

    在微服务架构中,服务注册与发现是核心功能之一,Eureka作为服务注册中心,各个微服务启动时将自己的信息注册到Eureka Server,同时每个服务也会从Eureka Server中拉取获取注册的服务列表,从而实现服务之间的调用。...

    spring-cloud 微服务系统架构

    3. **Spring Cloud Netflix Eureka**:Eureka 是服务注册与发现的组件,它允许微服务互相发现彼此。服务提供者注册到 Eureka 服务器,而服务消费者则通过 Eureka 获取服务提供者的地址,实现服务间的通信。 4. **...

Global site tag (gtag.js) - Google Analytics