【SpringCloud微服务】- Eureka服务注册与服务发现Discovery

这篇具有很好参考价值的文章主要介绍了【SpringCloud微服务】- Eureka服务注册与服务发现Discovery。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

Eureka简介

Eureka是Netflix开发的服务发现框架,本身是一个基于REST的服务,主要用于定位运行在AWS域中的中间层服务,以达到负载均衡和中间层服务故障转移的目的。

SpringCloud将它集成在其子项目spring-cloud-netflix中,以实现SpringCloud的服务发现功能。

Eureka包含两个组件:Eureka ServerEureka Client

  • Eureka Server提供服务注册服务,各个节点启动后,会在Eureka Server中进行注册,这样EurekaServer中的服务注册表中将会存储所有可用服务节点的信息,服务节点的信息可以在界面中直观的看到。
  • Eureka Client是一个java客户端,用于简化与Eureka Server的交互,客户端同时也就是一个内置的、使用轮询(round-robin)负载算法的负载均衡器。

在应用启动后,将会向Eureka Server发送心跳,默认周期为30秒,如果Eureka Server在多个心跳周期内没有接收到某个节点的心跳,Eureka Server将会从服务注册表中把这个服务节点移除。
springcloud-discovery,云原生与微服务,eureka,spring cloud,微服务,服务注册,服务发现

服务注册

现在存在两个微服务,一个服务提供者,一个服务消费者,现在我们就来把两个微服务注册到Eureka中。

创建Eureka注册中心

Eureka本身也是以一个服务的形式存在的,所以接下来直接创建一个Module,并引入Eureka服务端的依赖包。

<dependency>
    <groupId>org.springframework.cloud</groupId>
    <artifactId>spring-cloud-starter-netflix-eureka-server</artifactId>
</dependency>

Eureka的主启动类添加注解@EnableEurekaServer
springcloud-discovery,云原生与微服务,eureka,spring cloud,微服务,服务注册,服务发现

配置Eureka端口号及地址

在application.yml中添加如下配置:

server:
  port: 7001

eureka:
  instance:
    hostname: localhost
  client:
    register-with-eureka: false   # 表示不向注册中心注册自己
    fetch-registry: false
    service-url:
      defaultZone: http://localhost:7001/eureka/

启动Eureka服务并访问

启动Eureka服务并访问:http://localhost:7001/进入Eureka主页
springcloud-discovery,云原生与微服务,eureka,spring cloud,微服务,服务注册,服务发现

引入Eureka Client包并开启注解

在两个微服务的pom.xml中引入Eureka的客户端依赖包

<dependency>
    <groupId>org.springframework.cloud</groupId>
    <artifactId>spring-cloud-starter-netflix-eureka-client</artifactId>
</dependency>

然后在两个微服务的主启动类上添加注解 @EnableEurekaClient
springcloud-discovery,云原生与微服务,eureka,spring cloud,微服务,服务注册,服务发现

添加注册配置

在提供者和消费者微服务的配置文件中添加配置:

eureka:
  client:
    register-with-eureka: true
    fetch-registry: true
    service-url:
       defaultZone: http://localhost:7001/eureka

启动微服务并访问Eureka主页查看

启动提供者和消费者微服务,并重新访问http://localhost:7001/
springcloud-discovery,云原生与微服务,eureka,spring cloud,微服务,服务注册,服务发现
注册成功!!!

服务发现

对于注册进Eureka里面的服务,可以通过Discovery来获得这些服务的信息。

获取DiscoveryClient

@Autowired
private DiscoveryClient discoveryClient;

获取服务列表

List<String> services = discoveryClient.getServices();
for(String service:services){
    System.out.println(service);
}

根据服务获取实例列表

List<ServiceInstance> instances = discoveryClient.getInstances("CLOUD-PAYMENT-SERVICE");
for (ServiceInstance instance : instances) {
    System.out.println(instance.getInstanceId() + "\t" + instance.getHost() + "\t" + instance.getPort() + "\t" + instance.getUri());
}

springcloud-discovery,云原生与微服务,eureka,spring cloud,微服务,服务注册,服务发现

Zookeeper服务注册

添加依赖包

<dependency>
    <groupId>org.springframework.cloud</groupId>
    <artifactId>spring-cloud-starter-zookeeper-discovery</artifactId>
    <exclusions>
        <exclusion>
            <groupId>org.apache.zookeeper</groupId>
            <artifactId>zookeeper</artifactId>
        </exclusion>
    </exclusions>
</dependency>
<dependency>
    <groupId>org.apache.zookeeper</groupId>
    <artifactId>zookeeper</artifactId>
    <version>3.4.9</version>
</dependency>

添加配置

spring:
  cloud:
    zookeeper:
      connect-string: 192.168.83.129:2181

主启动类注解

springcloud-discovery,云原生与微服务,eureka,spring cloud,微服务,服务注册,服务发现

@SpringBootApplication
@EnableDiscoveryClient
public class PaymentMain8004 {
    public static void main(String[] args) {
        SpringApplication.run(PaymentMain8004.class, args);
    }
}

Consul服务注册

添加依赖包

<dependency>
    <groupId>org.springframework.cloud</groupId>
    <artifactId>spring-cloud-starter-consul-discovery</artifactId>
</dependency>

添加配置

spring:
  application:
    name: consul-provider-payment
  cloud:
    consul:
      host: localhost
      port: 8500
      discovery:
        service-name: ${spring.application.name}

主启动类注解

springcloud-discovery,云原生与微服务,eureka,spring cloud,微服务,服务注册,服务发现文章来源地址https://www.toymoban.com/news/detail-780421.html

@SpringBootApplication
@EnableDiscoveryClient
public class PaymentMain8006 {
    public static void main(String[] args) {
        SpringApplication.run(PaymentMain8006.class, args);
    }
}

3个注册中心的比较

实现语言 CAP 服务健康检查 接口
Eureka Java AP 可配支持 HTTP
Consul Go CP 支持 HTTP/DNS
Zookeeper Java CP 支持 客户端

到了这里,关于【SpringCloud微服务】- Eureka服务注册与服务发现Discovery的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • SpringCloud_Eureka服务的注册与发现

    分布式:分布式解决的是系统性能问题: 即 解决系统部署上单点的问题 ,尽量让组成系统的子系统分散在不同的机器上进而提高系统的吞吐能力。 即多个相同的子系统在不同的服务器上。 分布式系统架构存在问题通过服务治理解决。 微服务:将系统的业务功能划分为极小

    2023年04月22日
    浏览(36)
  • SpringCloud 教程 | 第一篇: 服务的注册与发现(Eureka)

    一、spring cloud简介 spring cloud 为开发人员提供了快速构建分布式系统的一些工具,包括配置管理、服务发现、断路器、路由、微代理、事件总线、全局锁、决策竞选、分布式会话等等。它运行环境简单,可以在开发人员的电脑上跑。另外说明spring cloud是基于springboot的,所以需

    2024年02月11日
    浏览(35)
  • 【SpringCloud】二、服务注册发现Eureka与负载均衡Ribbon

    服务提供者:一次业务中,被其它微服务调用的服务。(提供接口给其它微服务) 服务消费者:一次业务中,调用其它微服务的服务。(调用其它微服务提供的接口) 很明显,这是一个相对的概念。 上一篇中,远程调用时,url参数是写死在代码中的,而不同的测试、生产、

    2024年02月06日
    浏览(31)
  • SpringCloud学习笔记(上):服务注册与发现:Eureka、Zookeeper、Consul+负载均衡服务调用:Ribbon

    SpringCloud=分布式微服务架构的一站式解决方案,是多种微服务架构落地技术的集合体,俗称微服务全家桶。 springboot版本选择: git源码地址:https://github.com/spring-projects/spring-boot/releases/ SpringBoot2.0新特性:https://github.com/spring-projects/spring-boot/wiki/Spring-Boot-2.0-Release springcloud版本选

    2024年02月08日
    浏览(30)
  • SpringCloud之Eureka原理分析与实战(注册与发现)

    目录 1、从本质理解服务治理思想 2、为什么选择Spring Cloud服务治理组件 3、Spring Cloud Eureka服务发现 3.1 Eureka的优势 3.2 Eureka架构组成 3.3 搭建Eureka Server 实战 3.3.1 添加依赖 3.3.2 开启服务注册 3.3.3 添加YML配置 3.3.4 访问服务 3.4 搭建Eureka Client实战 3.4.1 添加依赖 3.4.2 开启服务注册

    2023年04月15日
    浏览(55)
  • eureka服务注册和服务发现

    我们要在orderservice中根据查询到的userId来查询user,将user信息封装到查询到的order中。 一个微服务,既可以是服务提供者,又可以是服务消费者,因此eureka将服务注册、服务发现等功能统一封装到了eureka-client端

    2024年02月10日
    浏览(23)
  • 服务注册发现_搭建单机Eureka注册中心

    创建cloud-eureka-server7001模块 pom添加依赖 写yml文件 主启动类 测试 访问浏览器localhostL:7001 参数: Environment: 环境,默认为test,该参数在实际使用过程中,可以不用更改 Data center: 数据中心,使用的是默认的是 “MyOwn” Current time:当前的系统时间 Uptime:已经运行了多少时间

    2024年02月07日
    浏览(31)
  • 微服务注册与发现——Eureka

    服务发现(注册)机制 nodejs的Eureka Client开源实现 服务发现组件具备功能: 服务注册表 服务注册与服务发现 服务检查 Eureka架构图 http://localhost:8761/ 微服务工程添加引用 注意添加版本号,否则会下载不下来 增加配置 启动类增加注解 启动服务注册 防止因Eureka Server宕机导致微

    2024年02月04日
    浏览(34)
  • 第二章 Eureka服务注册与发现

    gitee:springcloud_study: springcloud:服务集群、注册中心、配置中心(热更新)、服务网关(校验、路由、负载均衡)、分布式缓存、分布式搜索、消息队列(异步通信)、数据库集群、分布式日志、系统监控链路追踪。 1. Eureka基础知识 什么是服务治理? 在传统的rpc远程调用框

    2024年02月03日
    浏览(33)
  • 1-Eureka服务注册与发现以及Eureka集群搭建(实操型)

    直接看下面的文章 idea创建maven多模块项目. 简单介绍一下: 父工程: dog-cloud-parent 管理实体项目: dog-po 微服务-服务提供者: dog-provider-8001 微服务-服务消费者: dog-consumer-80 如下: 1.3.1 父工程:dog-cloud-parent pom如下: 1.3.2 管理实体项目:dog-po 如下: 1.3.3 服务提供者:dog-

    2024年02月16日
    浏览(35)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包