springcloud服务注册与发现(二)

Spring Cloud Eureka是Spring Cloud Netflix项目下的服务治理模块。而Spring Cloud Netflix项目是Spring Cloud的子项目之一,主要内容是对Netflix公司一系列开源产品的包装,它为Spring Boot应用提供了自配置的Netflix OSS整合。通过一些简单的注解,开发者就可以快速的在应用中配置一下常用模块并构建庞大的分布式系统。它主要提供的模块包括:服务发现(Eureka),断路器(Hystrix),智能路由(Zuul),客户端负载均衡(Ribbon)等。

服务注册中心 :eureka-server

新建一个springboot项目:eureka-server,其pom.xml配置如下

<properties>
        <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
        <project.reporting.outputEncoding>UTF-8</project.reporting.outputEncoding>
        <java.version>1.8</java.version>
    </properties>
    <dependencies>
        <dependency>
            <groupId>org.springframework.cloud</groupId>
            <artifactId>spring-cloud-starter-eureka-server</artifactId>
        </dependency>
    </dependencies>
    <dependencyManagement>
        <dependencies>
            <dependency>
                <groupId>org.springframework.cloud</groupId>
                <artifactId>spring-cloud-dependencies</artifactId>
                <version>Dalston.SR1</version>
                <type>pom</type>
                <scope>import</scope>
            </dependency>
        </dependencies>
    </dependencyManagement>

想要实现一个服务注册中心的功能非常简单,只需要在项目的启动类EurekaServerApplication上使用@EnableEurekaServer注解即可

@EnableEurekaServer
@SpringBootApplication
public class EurekaServerApplication{

    public static void main(String[] args) {
        new SpringApplicationBuilder(EurekaServerApplication.class)
                    .web(true).run(args);
    }
}

默认情况下,该服务注册中心也会将自己作为客户端来尝试注册它自己,所以我们需要禁用它的客户端注册行为,只需要在application.properties配置文件中增加如下信息:

spring.application.name=eureka-server
server.port=1001
eureka.instance.hostname=localhost
eureka.client.register-with-eureka=false
eureka.client.fetch-registry=false
启动EurekaServerApplication,访问 http://localhost:9001/可以看到Eureka的页面

服务提供方 :eureka-client

每一个实例注册之后需要向注册中心发送心跳,当client向server注册时,它会提供一些元数据,例如主机和端口,URL,主页等。Eureka server 从每个client实例接收心跳消息。 如果心跳超时,则通常将该实例从注册server中删除。

新建一个springboot项目:eureka-client,其pom.xml配置如下:

<properties>
        <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
        <project.reporting.outputEncoding>UTF-8</project.reporting.outputEncoding>
        <java.version>1.8</java.version>
    </properties>
    <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>
    </dependencies>
    <dependencyManagement>
        <dependencies>
            <dependency>
                <groupId>org.springframework.cloud</groupId>
                <artifactId>spring-cloud-dependencies</artifactId>
                <version>Dalston.SR1</version>
                <type>pom</type>
                <scope>import</scope>
            </dependency>
        </dependencies>
    </dependencyManagement>

想要实现一个服务提供方也很简单,只要在项目的启动类EurekaClientApplication上使用@EnableEurekaClient注解即可

@EnableEurekaClient
@SpringBootApplication
public class EurekaClientApplication {

     public static void main(String[] args) {
            new SpringApplicationBuilder(
                    EurekaClientApplication.class)
                .web(true).run(args);
        }
}

在application.properties中进行如下配置感兴趣的可以朋友企鹅二零四二八四九二三七

spring.application.name=eureka-client
server.port=9002
eureka.client.serviceUrl.defaultZone=http://localhost:9001/eureka/
启动EurekaClientApplication类

刷新 http://localhost:9001/,可以看到咱们的服务提供方已经注册到了服务注册中心

新建一个DiscoveryController 使用discoveryClient.getServices()获取已经注册的服务名,使用@value将配置文件中的信息赋值到ip

@RestController
public class DiscoveryController {

    @Autowired
    private DiscoveryClient discoveryClient;
    @Value("${server.port}")
    private String ip;

    @GetMapping("/client")
    public String client() {
        String services = "Services: " + discoveryClient.getServices()+" ip :"+ip;

        System.out.println(services);
        return services;
    }
}

访问:http://localhost:9002/client

最后说明一下@EnableEurekaClient 与@EnableDiscoveryClient这两个注解

 首先这个两个注解都可以实现服务发现的功能,在spring cloud中discovery service有许多种实现(eureka、consul、 zookeeper等等)

 @EnableEurekaClient基于spring-cloud-netflix。服务采用eureka作为注册中心,使用场景较为单一。

 @EnableDiscoveryClient基于spring-cloud-commons。服务采用其他注册中心。

原文地址:http://blog.51cto.com/13833251/2169300

时间: 2024-07-30 07:31:15

springcloud服务注册与发现(二)的相关文章

SpringCloud-Eureka服务注册与发现二

https://www.cnblogs.com/qdhxhz/p/9357502.html https://blog.csdn.net/weixin_42506093/article/details/86560531 一.Eureka概述 1.Eureka特点 (1) Eureka是一个基于REST的服务,用于定位服务,以实现云端中间层服务发现和故障转移. (2) Eureka 主管服务注册与发现,在微服务中,以后了这两者,只需要使用服务的标识符(==就是那个在每个服务的yml文件中取得服务名称

SpringCloud服务注册与发现中心-Eureka

1.服务注册与发现的好处: 假设没有这个东西,那么如果存在a,b,c三个同样的服务: 而现在有一个u服务需要用到a或b或c提供的接口,那么u里面肯定是需要配置这三个服务的地址,然后调用的时候还有问题就是我该选哪个服务来调用呢? 因为他们作用都是等价的:这里就产生了一系列的配置管理问题(包括a,b,c服务地址变了,或者增加了d服务,这些都需要在u里面改配置,还有改负载均衡算法): 现在有了服务注册与发现中心,那么a,b,c它们启动时都会自动将自己的服务标识(a,b,c的服务标识是一样的,因为它们的

springcloud服务注册和发现

微服务架构中,服务发现组件是一个非常关键的组件,服务消费者.服务提供者.服务发现组件的关系大致如下: 各个微服务启动时,将自己的网络地址等信息注册到服务发现组件中,服务发现组件会存储这些信息 服务消费者可从服务发现组件查询服务提供者的网络地址,并使用改地址调用服务提供者的接口 各个微服务与服务发现组件使用一定机制(心跳等)通信,服务发现组件长时间无法与某微服务实例通,就会注销该实例. 下面看看Eureka,它是Netflix(美国著名的在线影片租赁商)开源的服务发现组件,本身是一个基于REST的

SpringCloud(二)服务注册与发现

离上一篇微服务的基本概念已经过去了几个月,在写那篇博客之前,自己还并未真正的使用微服务架构,很多理解还存在概念上.后面换了公司,新公司既用了SpringCloud也用了Dubbo+Zookeeper,就像上一篇文章说的,当一个服务是面向外部或者是直接提供给前端调用的,那么就使用SpringCloud,而一些内部公用的,比如一些特定服务(如发送短信),就使用Dubbo+Zookeeper,因为他在内部调用更像调用接一个接口,效率也会比较高,而一些模块型的功能,我们则使用SpringCloud. 在

SpringCloud(二) 服务注册与发现Eureka

1.eureka是干什么的? 上篇说了,微服务之间需要互相之间通信,那么通信就需要各种网络信息,我们可以通过使用硬编码的方式来进行通信,但是这种方式显然不合适,不可能说一个微服务的地址发生变动,那么整个系统的所有微服务都要重新部署,显然是不合适的,那么我们需要一个服务发现机制,服务消费者通过这种机制来获取服务提供者的网络信息,并且服务提供者的网络信息即使变化,服务消费者也不必改变配置.Eureka提供的就是这样一种服务注册与发现的功能,也就是所有的服务在启动的时候都需要把自己的网络信息告诉Eur

springcloud微服务系列之服务注册与发现组件Eureka

一.Eurake的简介二.使用Eureka进行服务的注册消费1.创建一个服务注册中心2.创建服务的提供者3.创建服务的消费者总结 一.Eurake的简介 今天我们来介绍下springcloud的核心组件Eureka,Eurake是负责微服务架构中服务治理的功能,负责各个服务实例的注册与发现. Eureka包含了服务器端和客户端组件.服务器端,也被称作是服务注册中心,用于提供服务的注册与发现. 客户端组件包含服务消费者与服务生产者.在应用程序运行时,服务生产者向注册中心注册自己的服务实例,当消费者

SpringCloud(3)---Eureka服务注册与发现

Eureka服务注册与发现 一.Eureka概述 1.Eureka特点 (1) Eureka是一个基于REST的服务,用于定位服务,以实现云端中间层服务发现和故障转移. (2) Eureka 主管服务注册与发现,在微服务中,以后了这两者,只需要使用服务的标识符(==就是那个在每个服务的yml文件中取得服务名称==), 就可以访问到服务,不需要修改服务调用的配置文件. (3) Eureka遵循AP原则(高可用,分区容错性),因为使用了自我保护机制所以保证了高可用. 2.Eureka两大组件 两大组

SpringCloud:Eureka服务注册与发现

1.Eureka简介 Spring Cloud 封装了 Netflix 公司开发的 Eureka 模块来实现服务注册和发现(请对比Zookeeper). Eureka 采用了 C-S 的设计架构.Eureka Server 作为服务注册功能的服务器,它是服务注册中心. 而系统中的其他微服务,使用 Eureka 的客户端连接到 Eureka Server并维持心跳连接. 这样系统的维护人员就可以通过 Eureka Server 来监控系统中各个微服务是否正常运行. SpringCloud 的一些其

微服务SpringCloud之服务注册与发现

在找.net core 微服务框架时发现了Steeltoe开源项目,它可以基于Spring Cloud实现.net core和.net  Framework的微服务.正好之前也有学习过SpringBoot,而Spring Cloud是基于SpringBoot的,有了SpringBoot基础上手入门SpringCloud应该也不难,正好我的第一本书<<Spring快速入门>>即将上架,感兴趣的朋友可以多多支持.本篇主要学习服务注册与发现组件Eureka. 在学习之前首先聊一聊为什么会